В Perl есть хорошая конструкция, называемая «труба открывается». Вы можете узнать больше об этом, набрав perldoc -f open
в приглашении оболочки.
# Note the use of a list for passing the command. This avoids
# having to worry about shell quoting and related errors.
open(my $tar, '-|', 'tar', 'zxvf', 'test.tar.gz', '-C', 'wherever') or die ...;
Вот фрагмент, показывающий пример:
open(my $tar, '-|', 'tar', ...) or die "Could not run tar ... - $!";
while (<$tar>) {
print ".";
}
print "\n";
close($tar);
Замените print "."
на что-то, что печатает хэш-метку каждые 10-100 строк или около того, чтобы получить хорошую шкалу.