Perl новичка. Попробуйте несколько строк кода до вручную отмените массив по символу и распечатайте его. (да, я знаю, что это может быть сделано с помощью обратной функции).Использовать push и pop для вспять и распечатать массив в Perl?
Для начала, у меня есть фиктивный файл с именем dummy.txt
abcdefg1234567890
PERL скрипт My здесь:
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $file = 'dummy.txt';
my @reverse_array;
open (FH, '<', $file)
or die ("Couldn't open $file : $!");
#split with empty string to get individual characters
my @chars = split("", <FH>);
print "$#chars\n"; #prints 16, meaning there are 17 elements in @chars
print "@chars\n"; #prints a b c d e f g 1 2 3 4 5 6 7 8 9 0
for(my $i=0; $i <= $#chars; $i++) #iterate number of elements' times
{
push @reverse_array, pop @chars; #pop the elements out of @chars into @reverse_array
}
print "$#reverse_array \n"; #prints 8, meaning there are 9 elements in @reverse_array
print "@reverse_array \n"; #prints 0 9 8 7 6 5 4 3 2, not as expected, but this is indeed 17 elements including the white space
close (FH)
or die ("Failed to close $file: $!");
Так поп хлопает из пробельные. Итак, split добавляет пробелы, когда пытаюсь разбить его пустой строкой? Я все еще думаю, как обойти это. Мне понравился бы ваш вход, и изменить его на мой код было бы лучше для меня. Спасибо.
-Джек
Другой вопрос, который у меня есть, при печати, почему $ # reverse_array НЕ обрабатывает пробелы как элемент массива, а @reverse_array DO обрабатывает пробелы как элемент? –
Подумайте, что происходит с '$ # chars', поскольку вы' pop' элементы с конца '@ chars'. – ThisSuitIsBlackNot
Вы используете 'Data Data Dumper' в своем коде. Если вы сбрасывали содержимое массива с помощью 'print Dumper \ @ reverse_array', вы могли бы увидеть истинное содержимое – Borodin