执行perl脚本时出现问题:./Test.pl:未找到命令
Dos2Unix工作了…多亏了slayedbylucifer 现在我得到以下错误:执行perl脚本时出现问题:./Test.pl:未找到命令,perl,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. 我
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;
}
}
}
请建议。问题是什么..在脚本上使用
dos2unix
,如下所示:
$ dos2unix <script_name>
请注意,我在定义$path
变量时使用了my
。使用strict(使用strict;)时,声明应该是全局或局部的
我的$path;(帮助您将$path声明为局部变量)
或
我们的$path;(将$path声明为全局,以便导出)您是否已授予文件执行权限
chmod+x Test.pl
是文件Test.pl
或Test.pl
,因为linux区分大小写哦,别忘了使用strict;使用警告代码>位于文件顶部。欢迎来到美丽的perlI世界,您已经检查了文件权限:-rwxrwx 1 samaggar dba 1529 Feb 24 21:33 Test.plAdded使用严格;使用警告;但同样的错误。。下面这样一个简单的脚本也可以正常工作:#/usr/bin/perl打印“Hello World.\n”;请帮忙!!检查我的更新答案。非常感谢。它成功了。现在我遇到了编译错误,比如:全局符号“$path”需要在./Test.pl第2行显示包名。全局符号“$path”要求在./Test.pl第3行显示包名。由于编译错误,./Test.pl的执行被中止。你能帮我吗?我希望我的脚本接受一些unix路径作为输入,它可以在该路径上列出其中的所有文件和目录;在脚本中使用“警告”
,然后运行脚本,然后以正确的格式发布问题中的错误。@user2150950,如果对您有帮助,您应该输入警告和答案。这是在StackOverflow上表示感谢的唯一方式。
$ 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