Вот что я сейчас делаю в своей программе
@array = split /\n/, $longstring;
$data = $array[14];
Я действительно хочу только извлечь элемент в позиции 14 из массива и использовать его, остальные вещи в строке для меня бесполезны. Я знаю, что на таком языке, как Java, я мог бы сделать что-то вроде этого
$data = (split /\n/, $longstring)[14];
это то, что я хочу сделать, но в Perl.
Так как мне получить доступ к элементам массива без необходимости присваивать массив переменной сначала?
редактировать: хм, хорошо, как насчет этого
долгий путь
my $data = "abc\nd^e^f\nghi";
my @a = split (/\^/, (split /\n/, $data)[1]);
print $a[2];
__OUTPUT__
f
короткий путь
my $data = "abc\nd^e^f\nghi";
my $a = split (/\^/, (split /\n/, $data)[1])[2]; # line 60
print $a;
__OUTPUT__
syntax error at script.pl line 60, near ")["
Execution of script.pl aborted due to compilation errors.
это смущает меня больше, чем обычно, так как работает на внутреннем разделении, но не на внешнем разделении
изменить 2:
Я немного запутался, почему эти две строки различны
my $a = (split /\^/, (split /\n/, $data)[1])[2]; # works
my $a = split (/\^/, (split /\n/, $data)[1])[2]; # doesnt
вот мой мыслительный процесс для 2-й строки, который я написал изначально (другими словами, это то, что я думаю, что делает моя программа)
my $data = "abc\nd^e^f\nghi";
my $a = split (/\^/, (split /\n/, $data)[1])[2];
my $a = split (/\^/, ("abc", "d^e^f", "ghi")[1])[2];
my $a = split (/\^/, "d^e^f")[2];
my $a = ("d", "e", "f")[2];
my $a = "f";
Это то, что я ожидаю, может кто-нибудь указать, где мое мышление пошло не так?