Perl - Özel Değişkenler

Perl'de önceden tanımlanmış ve özel anlamı olan bazı değişkenler vardır. Normal değişken göstergesinden ($, @ veya%) sonra noktalama karakterlerini kullanan değişkenlerdir, örneğin $ _ (aşağıda açıklanmıştır).

Özel değişkenlerin çoğu uzun bir ad gibi İngilizce'ye sahiptir, örneğin İşletim Sistemi Hatası değişkeni $! $ OS_ERROR olarak yazılabilir. Ama ingilizceyi isimler gibi kullanacaksan, o zaman bir satır koymalısınuse English;program dosyanızın en üstünde. Bu, yorumlayıcının değişkenin tam anlamını almasına rehberlik eder.

En yaygın kullanılan özel değişken, varsayılan girdi ve kalıp arama dizesini içeren $ _ 'dır. Örneğin, aşağıdaki satırlarda -

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print $_;
   print "\n";
}

Yürütüldüğünde, bu aşağıdaki sonucu verecektir -

hickory
dickory
doc

Yine, aynı örneği $ _ değişkenini açıkça kullanmadan kontrol edelim -

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print;
   print "\n";
}

Yürütüldüğünde, bu aynı zamanda aşağıdaki sonucu da verecektir -

hickory
dickory
doc

Döngü ilk kez yürütüldüğünde "hickory" yazdırılır. İkinci kez, "dickory" yazdırılır ve üçüncü kez "doc" yazdırılır. Bunun nedeni, döngünün her yinelemesinde, geçerli dizenin $ _ içine yerleştirilmesi ve varsayılan olarak yazdırma tarafından kullanılmasıdır. Siz belirtmeseniz bile Perl'in $ _'ı varsayacağı yerler:

  • Ord ve int gibi işlevlerin yanı sıra varsayılan STDIN olan -t dışındaki tüm dosya testleri (-f, -d) dahil olmak üzere çeşitli tekli işlevler.

  • Yazdır ve bağlantıyı kaldır gibi çeşitli liste işlevleri.

  • = ~ Operatörü olmadan kullanıldığında model eşleştirme işlemleri m //, s /// ve tr ///.

  • Başka değişken sağlanmadıysa, foreach döngüsündeki varsayılan yineleyici değişkeni.

  • Grep ve eşleme işlevlerindeki örtük yineleyici değişkeni.

  • Bir satır-giriş işleminin sonucu bir while testinin tek kriteri olarak tek başına test edildiğinde bir girdi kaydı koymak için varsayılan yer (yani,). Bir süreli testin dışında bunun olmayacağını unutmayın.

Özel Değişken Türleri

Özel değişkenlerin kullanımına ve doğasına bağlı olarak, bunları aşağıdaki kategorilere ayırabiliriz -

  • Global Skaler Özel Değişkenler.
  • Global Dizi Özel Değişkenleri.
  • Global Hash Özel Değişkenleri.
  • Global Özel Dosya Tutucular.
  • Global Özel Sabitler.
  • Düzenli İfade Özel Değişkenleri.
  • Filehandle Özel Değişkenleri.

Global Skaler Özel Değişkenler

İşte tüm skaler özel değişkenlerin listesi. İlgili ingilizceyi sembolik adlarla birlikte isimler gibi listeledik.

$ _ Varsayılan giriş ve kalıp arama alanı.
ARG
$. Okunan son dosya tanıtıcısının geçerli girdi satır numarası. Dosya tanıtıcısındaki açık bir kapatma, satır numarasını sıfırlar.
$ NR
$ / Giriş kaydı ayırıcı; varsayılan olarak yeni satır. Boş dizge olarak ayarlanırsa, boş satırları sınırlayıcı olarak kabul eder.
RS
$, Baskı operatörü için çıktı alanı ayırıcısı.
OFS
$ \ Baskı operatörü için çıktı kaydı ayırıcısı.
$ ORS
$ " "$" Gibi, tek farkı çift tırnaklı bir dizgeye (veya benzer yorumlanmış dizgeye) eklenen değerlerin listesi için geçerlidir. Varsayılan bir boşluktur.
$ LIST_SEPARATOR
$; Çok boyutlu dizi öykünmesi için alt simge ayırıcı. Varsayılan "\ 034" dür.
$ SUBSCRIPT_SEPARATOR
^ L Form beslemeyi gerçekleştirmek için bir formatın çıktıları. Varsayılan "\ f" dir.
FORMAT_FORMFEED $
$: Devam alanlarını (^ ile başlayan) bir formatta doldurmak için bir dizeden sonra kesilebilen geçerli karakter kümesi. Varsayılan "\ n" "dir.
FORMAT_LINE_BREAK_CHARACTERS ABD doları
$ ^ A Biçim satırları için yazma toplayıcısının geçerli değeri.
$ AKÜMÜLATÖR
$ # Yazdırılan numaralar için çıktı formatını içerir (kullanımdan kaldırıldı).
$ OFMT
$? Son boru kapatma, geri işaret (``) komutu veya sistem operatörü tarafından döndürülen durum.
$ CHILD_ERROR
$! Sayısal bir bağlamda kullanılırsa, son sistem çağrısı hatasını belirleyen errno değişkeninin geçerli değerini verir. Bir dizge bağlamında kullanılırsa, karşılık gelen sistem hatası dizesini verir.
$ OS_ERROR veya $ ERRNO
$ @ Son eval komutundan Perl sözdizimi hata mesajı.
$ EVAL_ERROR
$$ Bu betiği çalıştıran Perl işleminin pid'i.
$ PROCESS_ID veya $ PID
$ < Bu işlemin gerçek kullanıcı kimliği (uid).
$ REAL_USER_ID veya $ UID
$> Bu işlemin etkili kullanıcı kimliği.
$ EFFECTIVE_USER_ID veya $ EUID
$ ( Bu işlemin gerçek grup kimliği (gid).
$ REAL_GROUP_ID veya $ GID
$) Bu sürecin etkili yolu.
$ EFFECTIVE_GROUP_ID veya $ EGID
0 $ Yürütülmekte olan Perl betiğini içeren dosyanın adını içerir.
$ PROGRAM_NAME
$ [ Bir dizideki ilk öğenin ve bir alt dizedeki ilk karakterin dizini. Varsayılan 0'dır.
$] 1000'e bölünen sürüm artı yama düzeyini döndürür.
PERL_VERSION ABD doları
$ ^ D Hata ayıklama bayraklarının geçerli değeri.
$ HATA AYIKLAMA
$ ^ E Bazı platformlarda genişletilmiş hata mesajı.
$ EXTENDED_OS_ERROR
$ ^ F Maksimum sistem dosyası tanımlayıcısı, normalde 2.
$ SYSTEM_FD_MAX
$ ^ H Bazı pragmatik modüller tarafından etkinleştirilen dahili derleyici ipuçlarını içerir.
$ ^ I Yerinde düzenleme uzantısının mevcut değeri. Yerinde düzenlemeyi devre dışı bırakmak için undef kullanın.
$ INPLACE_EDIT
$ ^ M $ M'nin içeriği, Perl'in yetersiz bellek hatasıyla ölmesi durumunda acil durum bellek havuzu olarak kullanılabilir. $ M kullanımı özel bir Perl derlemesi gerektirir. Daha fazla bilgi için KURULUM belgesine bakın.
$ ^ O Geçerli Perl ikili dosyasının derlendiği işletim sisteminin adını içerir.
$ OSNAME
$ ^ P Hata ayıklayıcının kendi kendine hata ayıklamaması için temizlediği dahili bayrak.
PERLDB ABD doları
$ ^ T Komut dosyasının, dönemden bu yana saniye cinsinden çalışmaya başladığı saat.
BASETIME ABD doları
$ ^ W Doğru veya yanlış, uyarı anahtarının mevcut değeri.
$ UYARI
$ ^ X Perl ikilisinin kendisinin yürütüldüğü ad.
$ EXECUTABLE_NAME
$ ARGV <ARGV> 'den okurken mevcut dosyanın adını içerir.

Global Dizi Özel Değişkenleri

@ARGV Komut dosyası için amaçlanan komut satırı bağımsız değişkenlerini içeren dizi.
@INC Do, require veya use yapıları tarafından değerlendirilecek Perl betiklerinin aranacağı yerlerin listesini içeren dizi.
@F -A komut satırı anahtarı verildiğinde giriş satırlarının bölündüğü dizi.

Global Hash Özel Değişkenleri

% INC Do veya required aracılığıyla eklenen her dosyanın dosya adı için girişleri içeren karma.
% ENV Mevcut ortamınızı içeren karma.
% SIG Hash, çeşitli sinyaller için sinyal işleyicileri ayarlamak için kullanılır.

Global Özel Dosya Tutucular

ARGV @ARGV'deki komut satırı dosya adlarını yineleyen özel dosya tanıtıcısı. Genellikle <> 'de boş dosya tanıtıcısı olarak yazılır.
STDERR Herhangi bir pakette standart hata için özel dosya tanıtıcısı.
STDIN Herhangi bir pakette standart girdi için özel dosya tanıtıcısı.
STDOUT Herhangi bir pakette standart çıktı için özel dosya tanıtıcısı.
VERİ Komut dosyasını içeren dosyada __END__ belirtecinden sonra gelen herhangi bir şeyi ifade eden özel dosya tanıtıcısı. Veya __DATA__ simgesinin içinde bulunduğu aynı paketteki verileri okuduğunuz sürece, gerekli bir dosyada __DATA__ belirtecini takip eden herhangi bir şey için özel dosya tanıtıcısı.
_ (vurgulamak) Son stat, lstat veya dosya testi operatöründen bilgileri önbelleğe almak için kullanılan özel dosya tanıtıcısı.

Global Özel Sabitler

__SON__ Programınızın mantıksal sonunu gösterir. Aşağıdaki metinler göz ardı edilir, ancak DATA dosya tanıtıcısı aracılığıyla okunabilir.
__DOSYA__ Programınızda kullanıldığı noktada dosya adını temsil eder. Dizelere enterpolasyon yapılmaz.
__HAT__ Mevcut satır numarasını temsil eder. Dizelere enterpolasyon yapılmaz.
__PAKET__ Derleme zamanında mevcut paket adını veya mevcut paket yoksa tanımsız olarak temsil eder. Dizelere enterpolasyon yapılmaz.

Normal İfade Özel Değişkenleri

$ basamak Eşleşen son örüntüdeki karşılık gelen parantez kümesiyle eşleşen metni içerir. Örneğin, $ 1, önceki normal ifadedeki ilk parantez kümesinde bulunanla eşleşir.
$ & Son başarılı desen eşleşmesiyle eşleşen dize.
$ MATCH
$ ' Son başarılı desen eşleşmesiyle eşleşen şeyden önce gelen dize.
$ PREMATCH
$ ' Son başarılı desen eşleşmesiyle eşleşen şeyi takip eden dize.
$ POSTMATCH
$ + Son arama modeliyle eşleşen son parantez. Bu, bir dizi alternatif modelin eşleştiğini bilmiyorsanız kullanışlıdır. Örneğin: / Sürüm: (. *) | Revizyon: (. *) / && ($ rev = $ +);
LAST_PAREN_MATCH $

Filehandle Özel Değişkenleri

$ | Sıfırdan farklı bir değere ayarlanırsa, o anda seçili olan çıkış kanalındaki her yazma veya yazdırmadan sonra bir fflush (3) zorlar.
$ OUTPUT_AUTOFLUSH
$% Mevcut seçili çıkış kanalının geçerli sayfa numarası.
FORMAT_PAGE_NUMBER ABD doları
$ = Halihazırda seçili olan çıktı kanalının geçerli sayfa uzunluğu (yazdırılabilir satırlar). Varsayılan 60'tır.
FORMAT_LINES_PER_PAGE $
$ - O anda seçili çıkış kanalının sayfasında kalan satır sayısı.
FORMAT_LINES_LEFT $
$ ~ Mevcut seçili çıktı kanalı için geçerli rapor formatının adı. Varsayılan, dosya tanıtıcısının adıdır.
FORMAT_NAME $
$ ^ O anda seçili çıkış kanalı için geçerli sayfanın üstü biçiminin adı. Varsayılan, _TOP eklenmiş dosya tanıtıcısının adıdır.
FORMAT_TOP_NAME $