متغیر $_ و حالت‌های پیش‌فرض

متغیر جادویی $_ در 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). $_ برای حالت‌های کوتاه و واضح بهترین است.

خلاصه

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط