Bash Команда "file --mime-type" не работает в Perl Скрипт - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь запустить bash команды внутри Perl скрипта. Я использую system("file --mime-type $fileName);, но он не работает, пока работают другие команды, такие как ls or pwd. В терминале написано «Невозможно открыть« Бумага (имя файла) »(такого файла или каталога нет). Ниже приведен мой код: -

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

Пожалуйста, смотрите скриншот сообщения об ошибке в терминале:

Error Message: Cannot Open 'Paper' file.

Мне интересно, почему это не работает, как другие команды? Когда я набираю эту команду исключительно в терминале, то он показывает тип файла правильно, но не в Perl скрипт. Некоторая помощь будет высоко оценена.

1 Ответ

3 голосов
/ 26 апреля 2020

$filename - это просто имя файла, оно не включает часть каталога. Поэтому file ищет файл в вашем рабочем каталоге, а не в каталоге в $a.

Вам необходимо объединить имя каталога и имя файла, чтобы получить полный путь. Кроме того, вы должны предоставить список аргументов для system(), так как вы не используете синтаксический анализ оболочки.

system('file',  '--mime-type', "$a/$fileName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...