Рейтинг:0

Могут ли Raku и Perl 5 работать на одной и той же Ubuntu с переключением

флаг im

Я использую рабочий стол с Ubuntu 20.04. У меня установлен Перл 5. Буду устанавливать Раку. Прежде чем установить Raku, я хочу убедиться, что могу переключаться между ними при запуске Perl-скрипта.

Возможно ли, чтобы Raku и Perl 5 были установлены и доступны в Ubuntu с помощью сценария переключения, который сделает один или другой Perl по умолчанию при запуске сценария?

muru avatar
флаг us
Использует ли Raku то же имя команды, что и Perl?
NW7US avatar
флаг im
Я знаю, что это две разные команды командной строки. Я играл с идеей использования псевдонима оболочки, чтобы я мог переключаться между ними при запуске одного и того же процесса/скрипта.
Рейтинг:1
флаг jp

Да, это два совершенно разных языка. Perl5 вы будете запускать его в сценариях и командной строке как perl, а Raku как raku. Такого переключателя нет, так как языки не поддерживаются (хотя raku может запускать код Perl при определенных условиях, Perl5 не может запускать код Raku).

NW7US avatar
флаг im
Зная, что Raku может запускать код Perl5 (с ограничениями), я подумал о том, чтобы найти способ использовать Perl5 или Raku для запуска скрипта/процесса. Я пришел к выводу, что лучший способ добиться этого — создать псевдоним оболочки, который можно сбросить в командную строку Perl5 или Raku, и просто обновить псевдоним по мере необходимости. Если сценарий разработан таким образом, что его можно запустить либо на Perl5, либо на Raku, то я могу выбрать любой из них. Если есть уникальные различия, я полагаю, что мог бы установить некоторые переменные среды для учета этих различий. Я еще не закончил свой мыслительный процесс по этому поводу.
Joaquín Ferrero avatar
флаг jp
Нет, вы не поняли. Это два ОЧЕНЬ разных языка, хотя у них есть некоторые общие детали. Но скрипт, написанный на Raku, не сможет работать на Perl5. Это все равно, что сказать, что вы хотите написать скрипт, который может работать на PHP и Python одновременно — вы не можете. На самом деле это не имеет смысла, если вы не хотите продемонстрировать интеллектуальную виртуозность. Если вы пишете скрипт на Raku, вам не нужно запускать его на Perl5. Просто поместите #!/usr/local/bin/raku (или любой другой интерпретатор Rakudo) в первую строку, назовите его script.raku и забудьте о Perl5.
Joaquín Ferrero avatar
флаг jp
Пожалуйста, посмотрите этот пример скриптов Perl и Raku для одной и той же задачи: https://dzone.com/articles/perl-amp-raku-best-frenemies
NW7US avatar
флаг im
Спасибо за разъяснение. Мне не был ясен сценарий, в котором я обдумывал эту идею. Я знаю, что Perl5 не может запускать код, предназначенный для Raku. Я думал об этом сценарии: я рассматриваю возможность обновления программной системы с течением времени, чтобы полностью стать Раку. Скрипты, которые я писал десятилетиями, — это Perl5. Я хочу запускать сценарии Perl5 с Raku по умолчанию для любого сценария Perl5 в моей системе. Я понимаю, что может быть необходим массаж этих файлов кода для исправления таких проблем, как библиотеки. Но это будет намного меньше первоначальной работы, чем переписывание каждого файла кода одиночных игр, чтобы он был на 100% Raku.
Joaquín Ferrero avatar
флаг jp
Если вы помните, в Perl5 мы обычно используем `system()` и `exec()` для выполнения внешней команды. Вы можете использовать ту же технику, что и Raku, для запуска Perl-скриптов при их переписывании в Raku. В соответствии со страницей [Perl to Raku guide] (https://docs.raku.org/language/5to6-perlfunc) вы можете использовать подпрограмму `run` (выполнить внешнюю команду без использования оболочки) или `shell` (выполнить внешняя команда с использованием оболочки). Пример: `запустите "perl", "script1.pl";`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.