Şimdi Ara

Perl 'shift' fonksyionu!

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
1.116
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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







  • 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.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.