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;
}
}
}
请建议。问题是什么..
答案 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声明为全局,以便可以导出)