Вы можете вызвать команду в точности так:
system("free -m | grep Mem");
Из документации :
Если есть только один скалярный аргумент, аргументпроверяется на наличие метасимволов оболочки, и, если они есть, весь аргумент передается в системную командную оболочку для анализа (это / bin / sh -c на платформах Unix, но отличается на других платформах).Если в аргументе нет метасимволов оболочки, он разбивается на слова и передается непосредственно в execvp, что более эффективно.
Вы можете сделать то же самое с другими методами для вызова внешних команд, например open
:
open my $fh, "-|", "free -m | grep Mem" or croak "failed to run pipeline";
# and now read from $fh as usual