为什么这个Perl代码可以从shell运行,但不能从脚本运行?

时间:2012-06-13 22:27:13

标签: perl for-loop foreach

我有一个简单的问题。我一直在使用zoidberg perl shell让我自己熟悉perl交互式。在我充实脚本之前,我喜欢能够在飞行中测试我的东西。 (我是新手学习者。)

我的问题是,在shell中我可以执行以下操作:

@a = `df -h | grep /dev/mapper | cut -c 48-`

for $i (@a) { @b=`ls $i` }
print @b;

然而,当我把它放在linux的脚本中时:

#!/bin/perl

运行脚本时出现以下错误:

syntax error at perl_diskstats.perl line 5, near "$i ( "
Execution of perl_diskstats.perl aborted due to compilation errors.

我在这里做了一些明显的事吗?我究竟做错了什么?我以为格式是..

foreach $var (@array) { codeblock }

......对吗?

2 个答案:

答案 0 :(得分:7)

你在第一行末尾错过了一个分号。

答案 1 :(得分:0)

此外,您还缺少use strictmy声明。

use strict;

my @a = `df -h | grep /dev/mapper | cut -c 48-`;

my @b;
for my $i (@a) { @b=`ls $i` }

print @b;

现在开始使用use strict的习惯,而你还在开始。它可以帮助您长期保存。