在Exluting perl脚本时出现问题:./ Test.pl:找不到命令

时间:2014-02-25 05:26:08

标签: perl

Dos2Unix工作。谢谢slayedbylucifer !!

现在我收到以下错误:

Global symbol "$path" requires explicit package name at ./Test.pl line 4.
Global symbol "$path" requires explicit package name at ./Test.pl line 5.
Execution of ./Test.pl aborted due to compilation errors.

我正在执行我的程序 ./Test.pl“/ scratch / samaggar / AutoSuite”

这是代码:

 #!/usr/bin/perl
 use strict;
 use warnings;
 $path = $ARGV[0];
 process_files($path);

 sub process_files {
     my $path = shift;
     opendir (DIR, $path)
     or die "Unable to open $path: $!";

     my @files = grep { !/^\.{1,2}$/ } readdir (DIR);
     closedir (DIR);
     @files = map { $path . '/' . $_ } @files;

     for (@files) {
         if (-d $_) {
             process_files ($_);
         } else {
             print @files;
         }
     }
}

请建议。问题是什么..

2 个答案:

答案 0 :(得分:0)

在您的脚本上使用dos2unix,如下所示:

$ dos2unix <script_name>

由于我的剧本中存在一些看不见的东西,我过去遇到过类似的问题。

如果您使用的是ubuntu(或类似内容),请使用fromdos代替dos2unix

<强>更新

以下是您的脚本的快速模拟:

$ cat test.pl 
#!/usr/bin/perl
use strict;
use warnings;
my $path=$ARGV[0];
print $path."\n";


$ ./test.pl "/scratch/samaggar/AutoSuite"
/scratch/samaggar/AutoSuite

请注意,我在定义my变量时使用了$path

答案 1 :(得分:0)

当使用strict时(使用strict;),我应该提到全局或本地的声明

我的$ path; (帮助您将$ path声明为局部变量)

我们的$ path;(将$ path声明为全局,以便可以导出)