zzt*_*ops -1 string perl equality truthiness
我正在运行这样的字符串相等检查:
if($myString eq "ExampleString")
Run Code Online (Sandbox Code Playgroud)
是否存在myString
可能导致执行进入if
结构的值,无论字符串文字是什么?
是的,对象和重载运算符:
package AlwaysTrue {
use overload 'eq' => sub { 1 },
'""' => sub { ${+shift} };
sub new {
my ($class, $val) = @_;
bless \$val => $class;
}
}
my $foo = AlwaysTrue->new("foo");
say "foo is =$foo=";
say "foo eq bar" if $foo eq "bar";
Run Code Online (Sandbox Code Playgroud)
输出:
foo is =foo=
foo eq bar
Run Code Online (Sandbox Code Playgroud)
但是,这"$foo" eq "bar"
是错误的,因为这会比较基础字符串.