ProgramlamaPerl geliştiricisi

Perl'de değişkenlerle çalışma özelliklerini açıklayın. Skalarlar, diziler ve hash'ler arasındaki farklar nelerdir? Her bir tipin kullanımına örnekler verin.

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

Cevap

Perl'de değişkenler skalarlar ($), diziler (@) ve hash'ler (%) olarak üçe ayrılır:

  • Skalarlar ($değişken) – tek bir değeri (string, sayı) saklar:

    my $name = "Ivan"; my $age = 30;
  • Diziler (@array) – sıralı elemanlar kümesi (sayılara göre indekslenir):

    my @fruits = ("apple", "banana", "cherry"); print $fruits[1]; # banana
  • Hash'ler (%hash) – anahtar-değer çiftleri kümesi (ilişkisel dizi):

    my %colors = (red => "#ff0000", green => "#00ff00"); print $colors{"red"}; # #ff0000

Elemanlara erişmek için değişken türüne bağlı olarak belirli bir sembol kullanıldığını unutmayın:

  • $array[0] — dizi elemanı
  • $hash{"anahtar"} — anahtara göre hash değeridir

Kandırmaca Soru

@array[1,2] ve $array[1,2] ifadeleri arasındaki fark nedir?

Cevap:

  • @array[1,2] — bir dizi elemanlarının çoklu listesi sağlar (dilim).
  • $array[1,2] — yanlıştır, hata verir. Birden fazla dizi elemanına erişmek için yalnızca dilim @array[...] kullanılır.

Örnek:

my @array = (10, 20, 30, 40); my @slice = @array[1,2]; # (20, 30)

Konunun inceliklerini bilmemekten kaynaklanan gerçek hata örnekleri


Hikaye

Bir günlükleme projesinde, programcı bir hash elemanına @colors{"red"} ile erişmeye çalıştı. Sonuçta, hash'in değeri değil, rastgele bir hata alındı çünkü tek bir değer için $ yerine @ kullanılmaması gerekiyordu.


Hikaye

Bir hizmette dizi indeksleri üzerinde iterasyon yaparken doğru erişimi kullanmayı unuttular — $array[$i] yerine @array$i kullandılar, bu da uyarılara ve yanlış sonuçlara yol açtı.


Hikaye

Bir API projesinde, dizi alan bir fonksiyon tanımlandı $args olarak, ama çağrıda dizi skalar olmadan geçirildi: func(@list). Bu şekilde dizi elemanları "listeye" açıldığında, fonksiyon beklenildiği gibi çalışmadı. Doğru olan, diziyi @args olarak almaktı.