MIPT pre-NEERC training camp - 2012.

 

Используемый на сервере интерпретатор - 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("$@");
}