У меня довольно долгое время был bash-backup-script, который у меня работал нормально, но теперь мне нужны были некоторые функции и я включил их в perl-скрипт. Это прекрасно работает, и я счастлив. Но моя мышечная память всегда хочет набрать "sh backup" вместо "perl backup" (или использовать «./backup» или что-то в этом роде). Я случайно начал с "sh backup" и теперь едва могу от этого избавиться.
Моя идея была такая:
Наличие модуля cleverfilter.pm:
package cleverfilter;
use Filter::Simple;
FILTER {
s/perl backup; exit;//g;
};
1;
и это в моем бэкап-скрипте:
#!/usr/bin/perl
use cleverfilter;
perl backup; exit;
use strict;
use warnings;
...
Идея заключалась в том, что perl-скрипт (через фильтр) удалял бы «perl backup; exit;» - часть, а bash - нет. Perl работает нормально, а bash запускает этот скрипт как perl-скрипт.
Но у Filter::Simple есть одна проблема: он фильтрует все после использования модулей. Вот почему мне нужно было поместить его поверх строки "perl backup". Теперь, когда я запускаю его с Perl, он работает как шарм. Запуск с bash, очевидно, вызывает у меня следующие проблемы:
backup: 3: backup: use: not found
Конечно, я мог бы просто создать пустую программу, "использующую" где-нибудь, которая игнорирует все приходящие параметры, но это не очень хорошее решение для этого.
Итак, мой вопрос здесь: есть ли способ написать некоторую часть скрипта, которая будет выполняться с помощью bash, но не с помощью perl? Какой-то комментарий, например, как в HTML с этими странными тегами IE-Style-Comment-Tags?
Или есть лучшее решение? Что-то проще, я еще не думал?