mosesdecoder/scripts/regression-testing/moses-virtual.pl
nicolabertoldi e25b8c41b7 minor change
git-svn-id: https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk@2567 1f5c12ca-751b-0410-a591-d2e778427230
2009-10-07 16:33:32 +00:00

146 lines
3.2 KiB
Perl
Executable File

#! /usr/bin/perl
use strict;
my %opt = ();
use Getopt::Long "GetOptions";
sub safesystem {
print STDERR "Executing: @_\n";
system(@_);
if ($? == -1) {
print STDERR "Failed to execute: @_\n $!\n";
exit(1);
}
elsif ($? & 127) {
printf STDERR "Execution of: @_\n died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
exit(1);
}
else {
my $exitcode = $? >> 8;
print STDERR "Exit code: $exitcode\n" if $exitcode;
return ! $exitcode;
}
}
sub init(){
# Command line options processing
#
GetOptions(
"version"=> sub { VersionMessage() },
"help" => sub { HelpMessage() },
"debug:i" => \$opt{debug},
"verbose:i" =>\$opt{verbose},
"config=s" =>\$opt{config},
"i=s" => \$opt{inputfile},
"inputfile=s" => \$opt{inputfile},
"inputtype=s" => \$opt{inputtype},
'w=s' => \$opt{w},
'lm=s' => \$opt{lm},
'tm=s' => \$opt{tm},
'd=s' => \$opt{d},
'I=s' => \$opt{I},
'n-best-list=s' => \$opt{nbestlist},
);
DebugMessage("Debugging is level $opt{debug}.") if defined($opt{debug});
VerboseMessage("Verbose level is $opt{verbose}.") if defined($opt{verbose});
print_parameters() if defined($opt{verbose}) && $opt{verbose} > 1;
}
sub VersionMessage(){
print STDERR "moses-virtual version 1.0\n";
exit;
}
sub HelpMessage(){
print STDERR "moses-virtual simulates the standard behavior of Moses\n";
print STDERR "USAGE: moses-virtual\n";
print_parameters(1);
exit;
}
sub DebugMessage(){
my ($msg) = @_;
print STDERR "Debug: $msg\n";
}
sub VerboseMessage(){
my ($msg) = @_;
print STDERR "Verbose: $msg\n";
}
sub print_parameters(){
my ($all) = @_;
print STDERR "Parameters:\n";
if ($all){
foreach (sort keys %opt){
print STDERR "-$_\n";
}
}else{
foreach (sort keys %opt){
print STDERR "-$_=$opt{$_}\n" if defined($opt{$_});
}
}
print STDERR "pass_through parameters: @ARGV\n" if $#ARGV>=0;
}
######################
### Script starts here
### init() reads prameters from the command line
### you always have to call it
init();
my $pwd =`pwd`;
chomp($pwd);
my $archive_list = "$pwd/archive.list";
my $actual_index = "$pwd/actual.index";
print STDERR "archivelist: $archive_list\n";
print STDERR "actualindex is taken from: $actual_index\n";
my $index=0;
if (-e $actual_index){
open(IN,"$actual_index");
$index=<IN>; chomp($index);
close(IN);
}
print STDERR "actualindex: $index\n";
open(IN,"$archive_list");
my ($out,$nbest);
for (my $i=0;$i<=$index;$i++){
chomp($_=<IN>);
($out,$nbest) = split(/[ \t]+/,$_);
}
close(IN);
die "output filename is empty\n" if $out eq "";
die "nbest filename is empty\n" if $nbest eq "";
print STDERR "out: |$out|\n";
print STDERR "nbest: |$nbest|\n";
$opt{nbestlist} =~ s/\"//g;
my ($nbestfile,$nbestsize) = split(/\|/,$opt{nbestlist});
print STDERR "n-best-list: |",$opt{nbestlist},"|\n";
print STDERR "nbestfile: |$nbestfile|\n";
print STDERR "nbestsize: |$nbestsize|\n";
open(OUT,">$actual_index");
$index++;
print OUT "$index\n";
close(IN);
safesystem("cp $pwd/$nbest $nbestfile");
safesystem("cat $pwd/$out");