Buonasera,

sto costruendo un piccolo script in Perl che faccia le seguenti cose:

- apra ROOT
- carichi una macro con il comando .L nomemacro.cc
- esegua la macro con il comando nomemacro("nomefile_in", "nomefile_out")

per ogni file presente in una certa cartella. Però non funziona, ma non so dove sbaglio. Si pianta dopo aver scritto "root -l". Forse è un problema legato a root?
I comandi che vorrei far partire automaticamente con questo script sono:

root -l
.L C14TotalFit.cc
C14TotalFit("/home/rootfiles/nomefile.root", "/home/results/nomefile.root.txt")

codice:
#!/usr/bin/perl

use strict;
use warnings;
use File::Basename;
use Cwd;


my $infile_path  = '/home/rootfiles';
my $outfile_path = '/home/results';
my $here = getcwd;                                 


foreach my $arg (@ARGV){
    if (($arg =~ /^help$/i) || ($arg =~/^usage$/i)){
        #usage();
        exit;
    }
    elsif ($arg =~ /^infile_path\=(\w+)/){
        $infile_path = $1;
    }
    elsif ($arg =~ /^outfile_path\=(\w+)/){
        $outfile_path = $1;
    }
    else {
        die " ERROR: unknown parameter $arg \n";
    }
}


chdir $infile_path or die "Cannot chroot to $infile_path: $!\n";
my @files = glob($infile_path."/*.root");


foreach my $file (@files){


    my $init = "root -l";
    print $init."\n";
    `$init`;
    
    my $load = ".L ${here}/C14TotalFit.cc";
    print $load."\n";
    `$load`;


    my $cmd = "C14TotalFit(\"";                     
    $cmd = $cmd.$infile_path.'/';
    $cmd = $cmd.basename($file);
    $cmd = $cmd."\", \"";
    $cmd = $cmd.$outfile_path.'/';
    $cmd = $cmd.basename($file);
    $cmd = $cmd.".txt";
    $cmd = $cmd."\")'";
    print $cmd."\n";
    `$cmd`;
}
Mille grazie