我需要過濾傳遞給屬性「查詢」 的「字符串」,並使用過濾的值創建一個URL。moose perl方法修飾符
我的代碼
package Search;
use Any::Moose;
has query => qw{ is ro isa Str required 1 };
# my method modifiers
around 'query' => sub {
my $orig = shift;
my $self = shift;
my $content = $self->$orig(@_);
# simple filter
$content =~ s{[^\w\-\s]}{}gi;
return $content;
};
sub create_uri {
my $self = shift;
my $uri = "http://localhost/search/".$self->{query};
return $uri;
};
1;
package main;
my $obj = Search->new({
query => '[email protected]#$%#%#@&-**[email protected]@#%!',
});
print $obj->query."\n";
print $obj->create_uri."\n"; # BAD
輸出這裏:
print $search->query;
FOO酒吧,符合市場預期。
當我打電話 「create_uri」
print $search->create_uri;
輸出:
http://localhost/search/[email protected]# $%#%#@ & - **吧@@#%!
「查詢」完全髒! 如何解決這個問題?
謝謝! 我使用了第一個選項。 ,但使用「tiggers」也獲得成功。 – killzone 2011-12-27 13:21:23