作为标题 - 请任何人解释下一个脚本是如何工作的
这将打印文本:“Perl guy are smart”
''=~('(?{'.('])@@^{'^'-[).*[').'"'.('-[)@{:__({:)[{(-:)^}'^'}>[,[]*&[[[[>[[@[[*_').',$/})')
这仅打印“b”
use strict;
use warnings;
''=~('(?{'.('_/).+{'^'/]@@_[').'"'.('=^'^'_|').',$/})')
perl -MO=Deparse 仅显示以下内容:
use warnings;
use strict 'refs';
'' =~ m[(?{print "b",$/})];
但不知道为什么... ;(
像脚本一样分解的推荐方法是什么?如何开始?
所以,尝试了这个:
'' =~
(
'(?{'
.
(
'])@@^{' ^ '-[).*['
)
.
'"'
.
(
'-[)@{:__({:)[{(-:)^}' ^ '}>[,[]*&[[[[>[[@[[*_'
)
.
',$/})'
)
几个部分由 连接.
。并且按位的结果^
可能给出了文本部分。这:
perl -e "print '-[)@{:__({:)[{(-:)^}' ^ '}>[,[]*&[[[[>[[@[[*_'"
打印“Perl guy are smart”和第一个^
生成的“print”。
但是,当我将其重写为:
'' =~
(
'(?{'
.
(
'print'
)
.
'"'
.
(
'Perl guys are smart'
)
.
',$/})'
)
我的 perl 告诉我:
panic: top_env
奇怪,我第一次看到这样的错误消息...
这意味着:不允许用 , 替换'str1' ^ 'str2'
, result
(不明白为什么)以及为什么 perl 会打印恐慌消息?
我的perl:
This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-multi-2level
ps:这里生成例子