perl – 为什么smartmatch会根据操作数的顺序返回不同的值?

我有一个数组,以下测试返回true:
1 ~~ @a

但是,以下测试返回false:

@a ~~ 1

我在Learning Perl中阅读了在smartmatch操作符的任一侧放置值并不重要,但显然在上述代码中.这是为什么?两个语句是否检查不同的事情?

解决方法

除了其他答案,the list of Perl 5.10.1 changes还有一个关于〜〜操作符更改的部分:

The smart match operator ~~ is no longer commutative. The behavIoUr of a smart match Now depends primarily on the type of its right hand argument.

所以学习Perl在这些变化之前可能是正确的.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...