Активный perl вырезает ^ из @ARGV

Следующий код работает только на Mac, но не на Windows7.

perl -e "print @ARGV" aaa^bbb

На Mac (perl 5.10, darwin) выводится, как и ожидалось: aaa^bbb

В Windows 7,32bit (ActivePerl 5.12) выводится: aaabbb

Символ "^" выбрасывается из @ARGV. Этот символ является частью имени файла, с которым я использую сценарий, поэтому мне нужно иметь возможность прочитать его из @ARGV.

Я пытался использовать "aaa\^bbb", но он просто печатает "aaa\bbb".


person Nir    schedule 15.09.2011    source источник


Ответы (2)


Он также не работает на Strawberry Perl. Однако вы можете обойти это, передав аргумент в кавычки:

perl -e "print @ARGV" "aaa^bbb"

Используя Strawberry Perl в Windows 7, вывод

aaa^bbb
person Community    schedule 15.09.2011

Это не ActivePerl отбрасывает символ ^, это командная строка Windows:

C:\>echo aaa^bbb
aaabbb

Вам нужно процитировать аргумент:

C:\>perl -e "print @ARGV" "aaa^bbb"
aaa^bbb

Или вы можете избежать этого с помощью второй каретки:

C:\>perl -e "print @ARGV" aaa^^bbb
aaa^bbb

Символ вставки ^ — это escape-символ, похожий на \ в оболочках Unix.

person Keith Thompson    schedule 15.09.2011