2015-01-15 06:51:17 +01:00
|
|
|
#!/usr/bin/perl
|
|
|
|
|
2017-03-05 22:33:31 +01:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
2015-01-15 06:51:17 +01:00
|
|
|
use warnings;
|
|
|
|
use strict;
|
|
|
|
|
|
|
|
package perl;
|
|
|
|
use parent '_default';
|
|
|
|
|
2017-09-12 14:50:49 +02:00
|
|
|
use Text::ParseWords qw(shellwords);
|
|
|
|
|
2015-01-15 06:51:17 +01:00
|
|
|
sub initialize {
|
|
|
|
my ($self, %conf) = @_;
|
|
|
|
|
|
|
|
$self->{sourcefile} = 'prog.pl';
|
|
|
|
$self->{execfile} = 'prog.pl';
|
2017-09-12 14:50:49 +02:00
|
|
|
$self->{default_options} = '-w';
|
2015-01-15 06:51:17 +01:00
|
|
|
$self->{cmdline} = 'perl $options $sourcefile';
|
|
|
|
}
|
|
|
|
|
2017-09-12 14:50:49 +02:00
|
|
|
sub preprocess_code {
|
|
|
|
my $self = shift;
|
|
|
|
$self->SUPER::preprocess_code;
|
|
|
|
|
|
|
|
if (defined $self->{arguments}) {
|
|
|
|
my $qargs = quotemeta $self->{arguments};
|
|
|
|
$qargs =~ s/\\ / /g;
|
|
|
|
my @args = shellwords($self->{arguments});
|
|
|
|
my $prelude .= "\nmy \$arglen = " . (scalar @args) . ";\n";
|
|
|
|
|
|
|
|
if (@args) {
|
|
|
|
$prelude .= "my \@args = (";
|
|
|
|
|
|
|
|
my $comma = "";
|
|
|
|
foreach my $arg (@args) {
|
|
|
|
$arg = quotemeta $arg;
|
|
|
|
$prelude .= "$comma\"$arg\"";
|
|
|
|
$comma = ", ";
|
|
|
|
}
|
|
|
|
|
|
|
|
$prelude .= ");\n";
|
|
|
|
} else {
|
|
|
|
$prelude .= "my \@args;\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
$self->{code} = "$prelude\n$self->{code}";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-15 06:51:17 +01:00
|
|
|
sub postprocess_output {
|
|
|
|
my $self = shift;
|
|
|
|
$self->SUPER::postprocess_output;
|
|
|
|
|
|
|
|
$self->{output} =~ s/\s+at $self->{sourcefile} line \d+, near ".*?"//;
|
|
|
|
$self->{output} =~ s/\s*Execution of $self->{sourcefile} aborted due to compilation errors.//;
|
2015-01-24 04:24:39 +01:00
|
|
|
|
|
|
|
$self->{cmdline_opening_comment} = "=cut =============== CMDLINE ===============\n";
|
|
|
|
$self->{cmdline_closing_comment} = "=cut\n";
|
|
|
|
|
|
|
|
$self->{output_opening_comment} = "=cut =============== OUTPUT ===============\n";
|
|
|
|
$self->{output_closing_comment} = "=cut\n";
|
2015-01-15 06:51:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
1;
|