2012-01-26 27 views

cevap

4

ilk kullanımları @x ... @x yüzden substr('abcd',2)cd verir boyutunu anlamına gelir.

5

substr olarak bir prototip yerleşik bir işlevi, yani 2 döndüren bir skaler bağlamda, içinde değerlendirilir genişletilmediğinde @x, böylece temelde ((@x) skaler, 'abcd') substr aradığınız

12

substr operatörün belgelenmiş sözdizimi

substr EXPR,OFFSET,LENGTH,REPLACEMENT 
substr EXPR,OFFSET,LENGTH 
substr EXPR,OFFSET 

değil

substr EXPR,ARRAY 

veya daha genel olan

substr EXPR,LIST 

Bu, prototype çıktısında yansıtılır (her zaman buna güvenemeyebilirsiniz).

$ perl -E'say prototype "CORE::substr"' 
$$;$$ 
  • substr 'ın 1 argümanı skaler bağlamda değerlendirilir. İkinci argüman skaler bağlamda değerlendirilmiştir.
  • substr'ın üçüncü bağımsız değişkeni (isteğe bağlı) skaler bağlamda değerlendirilir.
  • substr'un 4. bağımsız değişkeni (isteğe bağlı) skaler bağlamda değerlendirilir. skalar bağlamda

@x içerdiği elemanlarının (bu durumda 2) 'dir.

Sen şu kullanarak istediğiniz neyi elde edebilirsiniz:

yeni bir şey öğrendim
sub mysubstr { 
    if (@_ == 2) { substr($_[0], $_[1]) } 
    elsif (@_ == 3) { substr($_[0], $_[1], $_[2]) } 
    elsif (@_ == 4) { substr($_[0], $_[1], $_[2], $_[3]) } 
    else { die } 
} 

my @x = (0, 2); 
mysubstr('abcd',@x) 
+0

1; aydınlatma hızlı yanıtlar için) – Sorin

+0

teşekkürler – user1087245