我有一个关于Perl的问题更多是出于好奇而非必要性。我已经看到有很多方法可以在Perl中做很多事情,很多时候语法对我来说似乎不直观(我看过几个衬里做了令人印象深刻的东西)。
所以..我知道函数split
返回一个数组。我的问题是,如何打印此数组的第一个元素而不将其保存为特殊变量?类似于$(split(" ",$_))[0]
......但有一个有效。
答案 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。