Tôi có một tập lệnh Perl đếm số lần xuất hiện của các chuỗi khác nhau trong một tệp văn bản. Tôi muốn có thể kiểm tra xem một chuỗi nào đó chưa phải là một khóa trong băm. Có cách nào tốt hơn để làm điều này hoàn toàn không?Làm cách nào tôi có thể xem liệu một băm Perl đã có một khóa nhất định?
Đây là những gì tôi đang làm:
foreach $line (@lines){
if(($line =~ m|my regex|))
{
$string = $1;
if ($string is not a key in %strings) # "strings" is an associative array
{
$strings{$string} = 1;
}
else
{
$n = ($strings{$string});
$strings{$string} = $n +1;
}
}
}
Câu hỏi đặt ra là, tại sao bạn thậm chí còn làm phiền điều đó? Nếu nó không tồn tại thì $ n sẽ là undef. Giá trị số của Undef bằng 0, do đó, $ n + 1 = 1. Không cần phải kiểm tra xem nó có tồn tại trong băm hay không. –