我正在尝试在Perl脚本中运行bash命令。我正在使用system("file --mime-type $fileName);
,但在其他命令(例如ls or pwd
)正常工作时却无法使用。在终端中,显示“无法打开'Paper(filename)'(无此文件或目录)。下面是我的代码:-
foreach my $a(@ARGV)
{
opendir(DIR, $a) or die "You've Passed Invalid Directory as Arguments or $!\n";
while(my $fileName = readdir DIR)
{
next if $fileName =~ /^\./; #this is to remove dotted hidden files.
system("file --mime-type $fileName");
print $fileName,"\n";
}
closedir(DIR);
}
请在终端中查看错误消息的屏幕截图:
我想知道为什么这不能像其他命令一样工作?当我仅在终端中键入此命令时,它会正确显示文件类型,但不会在Perl脚本中显示。一些帮助将不胜感激。
$filename
只是文件名,不包括目录部分。您需要将它们串联起来。另外,由于您没有使用shell解析,因此应该给system()
提供一个参数列表。
system('file', '--mime-type', "$a/$fileName");