我想使用一個「正則表達式編譯」的「類型」(我的意思是:一個表達式的形式qr/../
)作爲用於散列結構的鍵。識別混雜鍵
要遍歷哈希凱斯時,常量字符串和正則表達式這些辨別之間,我試圖用ref()
,或is_regexp()
,但前者返回一個空字符串,而後者不能正常工作。恐怕我錯過了關於Perl refs和scalars的基本知識。
除此之外,我的解決辦法似乎工作。無論如何這太難看了嗎? 歡迎任何替代方案。
一些代碼來了解ref()
功能:
my $regex = qr/foo/;
printf "ref(\$regex): %s \n", ref($regex);
printf "is_regexp(\$regex): %d \n", is_regexp($regex);
# ref($regex): Regexp
# is_regexp($regex): 1
my $scalar = 3;
printf "ref(\$scalar): [%s] \n", ref($scalar);
# ref($scalar): []
my %my_hash = ('name', 'Becky', 'age', 23);
for my $k (keys %my_hash) {
printf "%s [%s] -> %s [%s] \n", $k, ref($k), $my_hash{$k}, ref($my_hash{$k});
}
# name [] -> Becky []
# age [] -> 23 []
鍵在哈希是字符串。對於那些'ref'總是會返回'undef'。如果您使用任何不是字符串的鍵,它將轉換爲字符串。 – Qtax 2012-03-05 12:12:54