Perl:索引函数返回数组语法

时间:2013-05-23 23:42:48

标签: arrays perl syntax

我有一个关于Perl的问题更多是出于好奇而非必要性。我已经看到有很多方法可以在Perl中做很多事情,很多时候语法对我来说似乎不直观(我看过几个衬里做了令人印象深刻的东西)。

所以..我知道函数split返回一个数组。我的问题是,如何打印此数组的第一个元素而不将其保存为特殊变量?类似于$(split(" ",$_))[0] ......但有一个有效。

3 个答案:

答案 0 :(得分:4)

你有99%

$ perl -de0

Loading DB routines from perl5db.pl version 1.33
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(-e:1):   0
  DB<1> $a = "This is a test"

  DB<2> $b = (split(" ",$a))[0]

  DB<3> p $b
This
  DB<4> p "'$b'"
'This'

答案 1 :(得分:2)

这应该这样做:

print ((split(" ", $_))[0]);

您需要一组括号,以允许您将数组索引应用于函数的结果。需要使用外括号来绕过print参数的特殊解析。

答案 2 :(得分:0)

尝试此操作以打印空格分隔列表的第一个元素。 \s+正则表达式匹配要拆分的一个或多个空格字符。

 echo "1 2 3 4" | perl -pe 'print +(split(/\s+/, $_))[0]'

另请参阅此related post