Используемый на сервере интерпретатор - Perl 5.12.4
Обработка программ на Perl осуществляется следующим скриптом:
LANG_CONFIG_DIR="/home/ejudge/contests/compile/conf/lang.d"
[ "${EJUDGE_LANG_CONFIG}" = "" ] && EJUDGE_LANG_CONFIG="${LANG_CONFIG_DIR}/perl.cfg"
if [ -f "${EJUDGE_LANG_CONFIG}" ]
then
. "${EJUDGE_LANG_CONFIG}"
else
version="unknown"
PERLPATH="/usr/bin/perl"
fi
if [ x"${version}" = x ]
then
echo "This language is not supported." >&2
exit 1
fi
echo "#! ${PERLPATH} -W ${EJUDGE_FLAGS}" > $2
echo >> $2
cat $1 >> $2
chmod +x $2
exit 0
Запуск программ на Perl осуществляется следующим скриптом:
#!@ac_cv_contest_perl_path@
# $Id: runperl.in 2196 2005-07-22 03:54:00Z cher $
# Copyright (c) 2005 Alexander Chernov
use Safe;
use strict;
if (!defined($ARGV[0])) {
print STDERR "File name expected\n";
exit(5);
}
my $cpt = new Safe;
$cpt->permit("open", "close", "require", "sort", "exit", ":base_math");
$cpt->rdo($ARGV[0]);
if ($@) {
if ($@ =~ /trapped by operation mask/) {
print STDERR $@;
# FIXME: report security violation in a different way?
exit(2); # violation
}
die("$@");
}
|