2

我有一个简单的问题。我一直在使用 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 }

... 对?

4

2 回答 2

7

您在第一行末尾缺少一个分号。

于 2012-06-13T23:06:02.573 回答
0

你也失踪了use strict,还有my声明。

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,而你还在开始。从长远来看,它将为您节省。

于 2012-06-14T09:30:10.173 回答