система (@ARGV), вероятно, все, что вам нужно.
Если вы укажете system () один аргумент, и , если этот аргумент содержит метасимволы оболочки (включая пробелы, кавычки и т. Д.), То аргумент будет передан оболочке. jwodder совершенно корректен: сообщение об ошибке приходит из оболочки, а не из Perl.
Если вы передаете system () несколько аргументов, это делается без вызова оболочки - что обычно лучше. Подход, который вы используете, принимает аргументы командной строки вашей программы, объединяет их в одну строку, а затем передает эту строку в оболочку, которая разделяет ее на несколько аргументов для выполнения.
С другой стороны, иногда вы можете хотеть вызвать оболочку, например, если вы создаете сложную команду с использованием каналов, перенаправления ввода-вывода и т. Д., И вы не ' Я не хочу устанавливать все это в Perl. Но вы должны быть осторожны с метасимволами, как вы видели.
"perldoc -f system" объясняет это более полно.