Perl autosplit内部引用

时间:2014-07-26 11:19:56

标签: perl

我尝试使用以下一个内容打印我的apache2访问日志日期。在单引号内,它显示值但在双引号内显示​​为Array对象。我的命令如下

sudo perl -ane 'print $F[3] . "\n" ' /var/log/apache2/access.log | head -n 10  

输出

[21/Jul/2014:09:16:05
[21/Jul/2014:09:16:05
[21/Jul/2014:11:32:55
[21/Jul/2014:11:32:55
[21/Jul/2014:11:32:59
[21/Jul/2014:11:33:02
[21/Jul/2014:11:33:02
[21/Jul/2014:11:33:10
[21/Jul/2014:11:33:14
[21/Jul/2014:11:33:14

sudo perl -ane "print $F[3] . \"\n\" " /var/log/apache2/access.log | head -n 10

输出

ARRAY(0x195fca8)
ARRAY(0x1960128)
ARRAY(0x195fca8)
ARRAY(0x195fd38)
ARRAY(0x1960128)
ARRAY(0x195fca8)
ARRAY(0x195fd38)
ARRAY(0x1960128)
ARRAY(0x195fca8)
ARRAY(0x195fd38)

当我尝试取消引用数组时,它会显示一个。

sudo perl -ane "print @{$F[3]} . \"\n\" " /var/log/apache2/access.log | head -n 10

输出

1
1
1
1
1
1
1
1
1
1

我正在使用带有guake终端的ubuntu 12.04 64位。

1 个答案:

答案 0 :(得分:5)

当您使用双引号时$由Bash而不是Perl进行插值。这就是为什么会发生这种情况。

示例:

a='foo bar'; perl -le "print \"$a\""
foo bar