Сейчас для проверки задач на интерпретируемых языках используется следующий подход:
- Записываем в начало файла "#! interpreter [optional-arg]".
 
- Копируем все из присланного исходника.
 
Проблема в том, что 
optional-arg должен либо отсутствовать, либо содержать одно слово без пробелов, так как реализация этого механизма на разных системах разная. В Линуксе, например, вся строка после 
interpreter передается единым аргументом интерпретатору 
[1] [2] [3].
Из-за этого могут возникнуть проблемы для таких языков, как:
- Dr. Scheme (mzscheme.in),
 
- Perl (perl.in),
 
- PHP (php.in),
 
- Python (pypy.in, pypy3.in, python.in, python3.in),
 
- Ruby (ruby.in),
 
- yabasic (yabasic.in).
 
Например, для языка Python строка запуска интерпретатора следующая:
Code: Select all
echo "#! ${PYTHONPATH} -W ignore ${EJUDGE_FLAGS}" > $2
Но запустится он так:
Code: Select all
${PYTHONPATH} "-W ignore ${EJUDGE_FLAGS}" [filename]
Как решить эту проблему со "склеиванием" аргументов?