থাম্বের বিধিটি হ'ল আপনার প্রয়োজনের জন্য সবচেয়ে বেশি উপযুক্ত ফাংশনটি ব্যবহার করা।
আপনি যদি কীগুলি চান এবং মানগুলির কোনওটি পড়ার পরিকল্পনা না করেন, কীগুলি ব্যবহার করুন ():
foreach my $key (keys %hash) { ... }
আপনি যদি কেবল মানগুলি চান তবে মান () ব্যবহার করুন:
foreach my $val (values %hash) { ... }
যদি আপনার কী এবং মানগুলি প্রয়োজন হয় তবে প্রতিটি () ব্যবহার করুন:
keys %hash; # reset the internal iterator so a prior each() doesn't affect the loop
while(my($k, $v) = each %hash) { ... }
যদি আপনি পুনরাবৃত্তি চলাকালীন বর্তমান কী মুছে ফেলা ব্যতীত হ্যাশগুলির কীগুলি কোনও উপায়ে পরিবর্তন করার পরিকল্পনা করেন তবে আপনাকে অবশ্যই প্রতিটি () ব্যবহার করতে হবে না। উদাহরণস্বরূপ, দ্বিগুণ মানগুলির সাথে বড় আকারের কীগুলির একটি নতুন সেট তৈরি করতে এই কোডটি কী () ব্যবহার করে সূক্ষ্মভাবে কাজ করে:
%h = (a => 1, b => 2);
foreach my $k (keys %h)
{
$h{uc $k} = $h{$k} * 2;
}
প্রত্যাশিত ফলাফল হ্যাশ উত্পাদন:
(a => 1, A => 2, b => 2, B => 4)
তবে প্রতিটি () ব্যবহার করে একই জিনিসটি করা:
%h = (a => 1, b => 2);
keys %h;
while(my($k, $v) = each %h)
{
$h{uc $k} = $h{$k} * 2; # BAD IDEA!
}
হার্ড-টু-প্রেডিক্ট পদ্ধতিতে ভুল ফলাফল উত্পন্ন করে। উদাহরণ স্বরূপ:
(a => 1, A => 2, b => 2, B => 8)
এটি তবে নিরাপদ:
keys %h;
while(my($k, $v) = each %h)
{
if(...)
{
delete $h{$k}; # This is safe
}
}
এই সবগুলি পার্ল ডকুমেন্টেশনে বর্ণিত হয়েছে:
% perldoc -f keys
% perldoc -f each