Tengo experiencia con otros lenguajes de programación, como Java, C/C++ y PL/SQL.
Hace poco me he metido con Perl para aprenderlo como lenguaje "navaja suiza" para tareas repetitivas y pequeñas chapuzas de administración. El "quick-and-dirty" que Perl nos ofrece me viene de perlas.
El caso es que estoy haciendo un script que ejecuta otros scripts y compara resultados para saber si las salidas son correctas o no.
La primera pregunta es: ¿es posible guardar la salida de la función system()? Necesito guardarla para después comparar.
La segunda pregunta es la que me ha hecho abrir este tema: estoy recorriendo un directorio lleno de ficheros acabados en .plx. Mi iterador $plxcFile contiene la ruta de cada uno de los ficheros acabados en ".plx" y tengo otra variable la cual utilizo para guardar el mismo nombre que contiene $plxcFile pero acabado en ".ctd".
Sin más pongo el código de prueba que estoy realizando:
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- use strict;
- use warnings;
- use diagnostics;
- use autodie;
- my $plxcFile;
- my $ctdFile;
- my @files = </home/user/folder/folder2-2015/*>;
- foreach $plxcFile (@files){
- if($plxcFile =~ /\.plx$/i){
- $ctdFile = ($plxcFile =~ s/\.plx/\.ctd/);
- print $ctdFile . "\n";
- }
- }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Lo que me imprime esto es una lista de '1' que realmente no quiero. ¿Cómo puedo hacer para que en la variable $ctdFile guarde el mismo nombre pero acabado en ./ctd?
¿Esto es factible?
- my @args = ("comando", "arg1", "arg2");
- my $salida = system(@args) == 0 or die "system @args failed: $?";
Asé podré comparar la salida con otra variable que también hace uso de system().
Gracias y un saludo.