ProgramlamaBackend Perl Geliştirici

Perl'de değişkenlerin ve ifadelerin dizgelerde nasıl interpolasyonu yapılır ve bunları kullanırken nelere dikkat etmeliyiz?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Perl, çift (“) ve tek (’) tırnaklarla iki tür dizgi ederi destekler. Çift tırnak içindeki dizgilerde interpolasyon gerçekleşir: değişkenler ve , \t gibi özel karakterler kendi değerleriyle değiştirilir. Tek tırnak içinde interpolasyon yoktur - içeriği kelimesi kelimesine alır.

Örnek:

my $name = "Alex"; print "Hello, $name! "; # Hello, Alex! print 'Hello, $name! '; # Hello, $name! # İfade interpolasyonu küme parantezleri ile mümkündür: my $i = 10; print "i + 5 = @{[$i + 5]} "; # i + 5 = 15

Özellikler ve İnce Noktalar:

  • Değişkenlerden sonra harf varsa, değişkenleri kaçırmayı unutmayın, aksi takdirde Perl bunun bir değişken adının parçası olduğunu düşünebilir.
  • Karmaşık ifadeler için interpolasyon dizgisi içinde @{[ ... ]} kullanın - bu, ifadenin sonuçlarını dizgye güvenli bir şekilde eklemenin bir yoludur.

Kandırmaca Sorusu

Çift tırnak içindeki dizgide değişkenlerin interpolasyonu yapılmadığı durumlar nelerdir?

Cevap: Değişken kaçırıldığında (\$var), tek tırnak içinde bulunduğunda ya da eğer küme parantezleri ile kullanılıyorsa ama amacı dışında yapıldığında, ya da değişken adı parantezlerle sınırlı değilse ve değişken adı harflerle "yapıştırılıyorsa".

my $world = 'earth'; print "Hello, $worlds! "; # HATA: $worlds değişkeni yok, $world + s harfi var

Konunun İnce Ayrıntıları Hakkında Gerçek Hatalara Dair Örnekler


Hikaye

Büyük bir projede günlük kaydı için değişkenlerle dizgiler kullanıldı:

my $file = '/tmp/data'; print LOG 'File: $file

';


Dosyanın yolunu göreceklerdi, ancak günlük dosyaya kelimesi kelimesine `$file` gidiyordu, çünkü tek tırnaklar kullanıldı. Problem, üretimde çalıştırıldıktan sonra fark edildi.

Hikaye

Bir geliştirici dizgi içerisine küme parantezleri olmadan bir değişken yerleştirdi:

my $user = "bob"; print "User: $user21

";


`bob21` yazılacağını bekliyorlardı, ancak yorumlayıcı `$user21` (bulunmayan bir değişken) aramaya başladı. Bu, raporlarda boş bir değerin çıkmasına sebep oldu.

Hikaye

İfade sonucunu dizgi içinde göstermek için böyle bir kod kullanıldı:

my $a = 3; print "Sum: $a+5

"; # Bekleniyordu: 'Sum: 8', alınan: 'Sum: 3+5'


Gerçekten de, interpolasyon sadece değişkenleri değerlendirir, ifadeler kelimesi kelimesine yerleştirilir. @{[ ... ]} ile çalışmak gerekir.