У меня есть этот скрипт, который по какой-то причине всегда возвращает -1
.
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 4;
is(scrub(''), '-1');
is(scrub('~'), '-1');
is(scrub('undef'), '-1');
is(scrub('a'), 'a');
sub scrub {
my $a = shift;
if ($a =~ m/~|undef|/) {
return -1;
}
return $a;
}
Я хотел, чтобы он возвращал -1
только когда ~
или perl's undef
или пустая строка `` в качестве аргумента.
Кто-нибудь может увидеть, что не так?
Обновление : на основании ответов этот шов будет правильным.
sub scrub {
my $a = shift;
return ($a =~ m/^(~|undef|^$)$/) ? -1 : $a;
}