متغیر $_ و حالتهای پیشفرض
متغیر جادویی $_ در foreach، regex و print — موضوع پیشفرض پرل.
$_ — موضوع (Topic) پرل
وقتی آرگومان ندهید، پرل از $_ استفاده میکند — به آن «topic variable» میگویند:
در foreach
foreach (1..5) {
say $_; { مقدار فعلی }
}
{ یا کوتاهتر: }
say $_ foreach 1..5;
در regex
$_ = "Hello World";
if (/World/) { { روی $_ اعمال میشود! }
say "پیدا شد";
}
s/World/Perl/; { جایگزینی روی $_ }
say $_; { Hello Perl }
در print/say
$_ = "auto print";
print; { $_ را چاپ میکند! }
الگوهای رایج با $_
my @words = ("apple", "banana", "cherry");
# شمارش حروف هر کلمه
foreach (@words) {
say "$_ has " . length($_) . " chars";
}
# فیلتر و تغییر
foreach (@words) {
$_ = ucfirst($_); { تغییر خود آرایه! }
}
say "@words"; { Apple Banana Cherry }
نکته: در
foreach my $x (@arr) کپی میگیرید اما در foreach (@arr) مستقیم روی خود عناصر کار میکنید — تغییر $_ آرایه را عوض میکند!کجا $_ ننویسیم؟
برای کد خوانا، در حلقههای پیچیده متغیر نامدار بدهید (foreach my $item). $_ برای حالتهای کوتاه و واضح بهترین است.
خلاصه
- $_ پیشفرض: foreach، regex، print
- foreach بدون my → مستقیم روی عناصر
- برای خوانایی: متغیر نامدار
این مبحث بخشی از دوره آموزش کامل پرل است.