Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
1251
Tıklama
0
Öne Çıkarma
Perl 'shift' fonksyionu!
T
15 yıl (1594 mesaj)
Binbaşı
Konu Sahibi

Arkadaşlar bi kaç gün önce. lynda.com da yer alan Bill Weinman'ının Perl Essential Training isimli Perl Derslerine başladım. Derse başladığım günden beri kafamı kurcalayan 2 şey oldu. İlki şu;

 
#!/usr/bin/perl
#

use strict;
use warnings;

main(@ARGV);

sub main {
my $greeting = "Hello World";
message($greeting);

}

sub message {
my $message = shift or return;
print ("$message\n");

}



burada kafamı karıştıran my $message için atanan shift or return olayı. shift php de olduğu gibi dizinin ilk elemanını diziden silio. bunda sorun yok fakat burda dizi olmayan bir değişkene atanmakla tam olarak neyin amaçlandığını kavrayamadım.

Bir ikincisi de Perl ile oturum kontrolü. Farkettiğim kadarıyla Perl standart olarak bizim PHP'den bildiğimiz $_SESSION tarzı yerleşik bir oturum fonksyionuna sahip değil. Araştırdım CPAN'dan indirilebilecek birkaç oturum modülü var fakat hangini kullanabileceğim hangine güvenebileceğim konusunda şüpheliyim. DEITEL'in Perl kitabında böle bişi vardı heves edip baktım fakat o da Cookie bazlı oturumu anlatıp örneklemiş. CPAN'da özellikle üstünde durulan iki oturum açma modülü var; biri CGI::Session bir diğeri de Apache::Session. Bunlardan hangisi daha tutarlıd ve kullanışlıdır.

Bu iki konuda yardımcı olan olursa çoh aşırı sevinirim

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



T
15 yıl (1594 mesaj)
Binbaşı
Konu Sahibi

Arkadaşlar sorumun cevabını buldum dahası anladım

Perl'de yazılan subroutine'lerin (php => function) argümanları @_ ile ifade edilen özel bir dizi değişkeninde tutuluyor. shift() fonksiyonunun görevi aslen dizinin ilk elemanını diziden çıkarmak ve ekrana yazdırmak. subroutine içinde tanımlanan bir değişkene "shift or return" atanması da bu yüzden. Açıklamak gerekirse;

Subroutine içinde tanımladığınız bir değişkene değer atamayacaksanız yani sadece bu değişkeni tanımalayacaksanız (php => $degisken;) ve bu değişken subroutine argümanlarından birini temsil edecekse (php => function doIt($degisken) {print $degisken;}), bu değişkenin yapacağı şey, sizin fonksiyonu çağırırken verdiğiniz argümanları yerini almak olacaktır. perl dilinin subroutine'leri tanımlandıkları esnada () içerisinde argüman listesi almadıkları için sözde argümanlar @_ özel dizi değişkeninde tutulduğundan sizin değişkeniniz bu argüman dizisinin 0. elemanı olacaktır ve shift sizin değişkeninizin değerini @_ dizisinden çıkartacak fonksyionunuz da ekrana bastıracaktır.

Umarım açıklayacı olabilmişimdir. Perl öğrenipte takılan olursa diye yazayım dedim.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.