El problema está en el '$'. Perl piensa que forma parte de alguna variable, así que intenta sacar el valor de la variable '$5'.
Solución: escapar.
Using perl Syntax Highlighting
$capacidad = `df /dev/sdc | grep /dev |awk '{print \$5}'`;Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
pero... ¿por qué llamar a los comandos grep y awk, cuando podemos hacerlo todo en Perl?
Using perl Syntax Highlighting
$capacidad = (split " ",( qx(df
/dev
/sdc
))[1
] )[4
];Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ejecutamos el comando 'df' y nos quedamos con la segunda línea ([1]) del resultado, que dividiremos por los espacios en blanco con split y nos quedaremos sólo con el quinto campo ([4]).
Fíjate que usamos split de la misma manera que usamos el awk, para obtener campos separados por espacios.
Al final, nos ahorramos la ejecución de un par de comandos del sistema, que a veces puede marcar la diferencia.
Como estamos en el foro básico, una solución más larga y
entendible sería:
Using perl Syntax Highlighting
@capacidad = `df /dev/sdc`;
$capacidad = ( grep { /dev/ } @capacidad )[0
];
$capacidad = ( split " ", $capacidad )[4
];
print $capacidad;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
y la solución más elaborada y cómoda, con un módulo:
Using perl Syntax Highlighting
use Filesys
::Df;
print df
("/tmp")->{per
}; # Pinta el porcentaje de ocupación en /tmpColoreado en 0.001 segundos, usando
GeSHi 1.0.8.4
(solución cómoda porque Filesys::Df llama a una función del sistema, por lo que nos ahorramos ejecutar el comando 'df').