То, что у вас должно работать, , но : никогда не используйте qx
. Это древний и опасный; что бы вы ни передавали, оно проходит через оболочку, поэтому очень легко оказаться уязвимым для инъекций оболочки или столкнуться с неожиданностями, если /bin/sh
не совсем то, что вы ожидали.
Используйте форму с несколькими аргументами open()
, которая полностью обходит оболочку.
open my $fh, '-|', 'df', "-$opt", '/tmp' or die "Can't open pipe: $!";
my @lines = <$fh>; # or read in a loop, which is more likely what you want
close $fh or die "Can't close pipe: $!";