Активный Perl вырезает «^» из @ARGV - PullRequest
2 голосов
/ 15 сентября 2011

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

perl -e "print @ARGV" aaa^bbb

На Mac (perl 5.10, darwin) он распечатывается как положено:7,32 бита (ActivePerl 5.12) он печатает: aaabbb

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

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

Ответы [ 2 ]

11 голосов
/ 15 сентября 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.

1 голос
/ 15 сентября 2011

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

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

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

aaa^bbb
...