Bash "file --mime-type" 命令在 Perl 脚本中不起作用
Bash "file --mime-type" command is not working in Perl Script
我正在尝试在 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
只是文件名,不包括目录部分。所以 file
正在您的工作目录中查找文件,而不是 $a
.
中的目录
您需要连接目录名和文件名以获得完整路径名。此外,您应该为 system()
提供一个参数列表,因为您没有使用 shell 解析。
system('file', '--mime-type', "$a/$fileName");
我正在尝试在 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
只是文件名,不包括目录部分。所以 file
正在您的工作目录中查找文件,而不是 $a
.
您需要连接目录名和文件名以获得完整路径名。此外,您应该为 system()
提供一个参数列表,因为您没有使用 shell 解析。
system('file', '--mime-type', "$a/$fileName");