0

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

所以..我知道该函数split返回一个数组。我的问题是,如何在不将其保存到特殊变量中的情况下打印该数组的第一个元素?像$(split(" ",$_))[0]......但一个有效的东西。

4

3 回答 3

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'
于 2013-05-23T23:51:07.807 回答
2

这应该这样做:

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

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

于 2013-05-24T00:03:18.017 回答
0

试试这个来打印空格分隔列表的第一个元素。正\s+则表达式匹配一个或多个要拆分的空白字符。

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

另外,请参阅此相关帖子

于 2013-05-24T00:02:51.563 回答