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");