Re: [问题] 点点(..)运算子两问

楼主: scwg ( )   2013-10-29 02:15:40
man perlop
The right operand is not evaluated while the operator is in the
"false" state, and the left operand is not evaluated while the
operator is in the "true" state. The precedence is a little lower
than || and &&. The value returned is either the empty string for
false, or a sequence number (beginning with 1) for true. The
sequence number is reset for each range encountered. The final
sequence number in a range has the string "E0" appended to it, which
doesn't affect its numeric value, but gives you something to search
for if you want to exclude the endpoint. You can exclude the
beginning point by waiting for the sequence number to be greater than
1.
所以 3..5 每次拿到的值是 '' '' 1 2 3E0 '' ''
3E0 的数值还是 3, 但是可以拿来判断是不是最后一个
结论: perl 好恶心
※ 引述《AntaresStar ()》之铭言:
: 回到原本的问题 自问自答一下 XD
: 改成这样
: $arr=[0,1,2,3,4,5,6,7];
: while(<DATA>) {
: print $arr->[3..5];
: }
: __DATA__
: A
: B
: C
: D
: E
: F
: G
: 会印出0012300
: 于是可以发现在->[]里的..确实被当成flip-flop
: 而且还可以看到flip-flop为true的时候 实际上值会从1开始一直++
: ※ 引述《CindyLinz (Cindy Wang)》之铭言:
: : 就这样的意思呀~
: : sub processLine {
: : if( 3 .. 5 ) {
: : print $_;
: : }
: : }
: : while(<>){
: : processLine();
: : }
: : processLine 里面的 3 .. 5 不会随着进出 processLine 而重置~
: : 用在这边是方便啦, 只是这种隐藏地永久存在的状态是比较危险的东西 :Q
作者: AntaresStar   0000-00-00 00:00:00
竟然真的有写在说明书上 @@
作者: cutekid (可爱小孩子)   0000-00-00 00:00:00
推(Y),又长知识了
作者: CindyLinz (Cindy Wang)   0000-00-00 00:00:00
推(Y), 也长知识了
楼主: scwg ( )   0000-00-00 00:00:00
长知识是在说现在才知道 perl 好恶心吗?
作者: CindyLinz (Cindy Wang)   0000-00-00 00:00:00
什么什么, 哪边有讲那句吗? ^_<
作者: herculus6502 (金麟岂是池中物)   2012-01-10 08:45:00
推(Y),perl岂止恶心,简直就是邪恶
作者: xatier (一切重来就好了...)   2012-01-14 11:27:00
Perl 超棒的 ><

Links booklink

Contact Us: admin [ a t ] ucptt.com