我尝试使用以下一个内容打印我的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位。
答案 0 :(得分:5)
当您使用双引号时$
由Bash而不是Perl进行插值。这就是为什么会发生这种情况。
示例:
a='foo bar'; perl -le "print \"$a\""
foo bar