我有一个关于 Perl 的问题更多是出于好奇而不是必要。我已经看到有很多方法可以在 Perl 中做很多事情,很多时候语法对我来说似乎不直观(我已经看到一些 one liner 做了一些令人印象深刻的事情)。
所以..我知道该函数split
返回一个数组。我的问题是,如何在不将其保存到特殊变量中的情况下打印该数组的第一个元素?像$(split(" ",$_))[0]
......但一个有效的东西。
你在那里 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'
这应该这样做:
print ((split(" ", $_))[0]);
您需要一组括号来允许您将数组索引应用于函数的结果。需要外括号来绕过print
参数的特殊解析。
试试这个来打印空格分隔列表的第一个元素。正\s+
则表达式匹配一个或多个要拆分的空白字符。
echo "1 2 3 4" | perl -pe 'print +(split(/\s+/, $_))[0]'
另外,请参阅此相关帖子。