Perl - Variabel Khusus

Ada beberapa variabel yang memiliki arti khusus dan telah ditentukan sebelumnya di Perl. Mereka adalah variabel yang menggunakan karakter tanda baca setelah indikator variabel biasa ($, @, atau%), seperti $ _ (dijelaskan di bawah).

Sebagian besar variabel khusus memiliki nama panjang dalam bahasa Inggris, misalnya, variabel Kesalahan Sistem Operasi $! dapat ditulis sebagai $ OS_ERROR. Tetapi jika Anda akan menggunakan bahasa Inggris seperti nama, maka Anda harus meletakkan satu barisuse English;di bagian atas file program Anda. Ini memandu penerjemah untuk mengambil arti yang tepat dari variabel tersebut.

Variabel khusus yang paling umum digunakan adalah $ _, yang berisi input default dan string pencarian pola. Misalnya, di baris berikut -

#!/usr/bin/perl

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

Saat dijalankan, ini akan menghasilkan hasil sebagai berikut -

hickory
dickory
doc

Sekali lagi, mari kita periksa contoh yang sama tanpa menggunakan variabel $ _ secara eksplisit -

#!/usr/bin/perl

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

Saat dijalankan, ini juga akan menghasilkan hasil sebagai berikut -

hickory
dickory
doc

Pertama kali loop dijalankan, "hickory" dicetak. Kedua kalinya, "dickory" dicetak, dan yang ketiga, "doc" dicetak. Itu karena dalam setiap iterasi loop, string saat ini ditempatkan di $ _, dan digunakan secara default oleh print. Berikut adalah tempat-tempat di mana Perl akan mengasumsikan $ _ meskipun Anda tidak menentukannya -

  • Berbagai fungsi unary, termasuk fungsi seperti ord dan int, serta semua pengujian file (-f, -d) kecuali -t, yang defaultnya adalah STDIN.

  • Berbagai fungsi daftar seperti mencetak dan membatalkan tautan.

  • Operasi pencocokan pola m //, s ///, dan tr /// saat digunakan tanpa operator = ~.

  • Variabel iterator default dalam loop foreach jika tidak ada variabel lain yang diberikan.

  • Variabel iterator implisit dalam fungsi grep dan peta.

  • Tempat default untuk meletakkan record input ketika hasil operasi line-input diuji dengan sendirinya sebagai satu-satunya kriteria pengujian while (yaitu,). Perhatikan bahwa di luar tes sementara, ini tidak akan terjadi.

Jenis Variabel Khusus

Berdasarkan penggunaan dan sifat variabel khusus, kita dapat mengkategorikannya dalam kategori berikut -

  • Variabel Khusus Skalar Global.
  • Variabel Khusus Array Global.
  • Variabel Khusus Hash Global.
  • Penanganan File Khusus Global.
  • Konstanta Khusus Global.
  • Variabel Khusus Ekspresi Reguler.
  • Variabel Khusus Filehandle.

Variabel Khusus Skalar Global

Berikut adalah daftar semua variabel khusus skalar. Kami telah membuat daftar nama Inggris yang sesuai bersama dengan nama simbolis.

$ _ Input default dan ruang pencarian pola.
$ ARG
$. Nomor baris masukan saat ini dari filehandle terakhir yang dibaca. Penutupan eksplisit pada filehandle menyetel ulang nomor baris.
$ NR
$ / Pemisah catatan masukan; baris baru secara default. Jika disetel ke string nol, itu memperlakukan baris kosong sebagai pembatas.
$ RS
$, Pemisah bidang keluaran untuk operator cetak.
$ OFS
$ \ Pemisah catatan keluaran untuk operator cetak.
$ ORS
$ " Seperti "$", kecuali itu berlaku untuk nilai daftar yang diinterpolasi menjadi string yang dikutip ganda (atau string yang ditafsirkan serupa). Defaultnya adalah spasi.
$ LIST_SEPARATOR
$; Pemisah subskrip untuk emulasi array multidimensi. Default-nya adalah "\ 034".
$ SUBSCRIPT_SEPARATOR
$ ^ L Apa format output untuk melakukan formfeed. Defaultnya adalah "\ f".
$ FORMAT_FORMFEED
$: Kumpulan karakter saat ini setelah string dapat dipecah untuk mengisi bidang lanjutan (dimulai dengan ^) dalam format. Defaultnya adalah "\ n" ".
$ FORMAT_LINE_BREAK_CHARACTERS
$ ^ A Nilai akumulator tulis saat ini untuk baris format.
$ AKUMULATOR
$ # Berisi format keluaran untuk nomor yang dicetak (tidak digunakan lagi).
$ SERING
$? Status yang dikembalikan oleh penutupan pipa terakhir, perintah backtick (``), atau operator sistem.
$ CHILD_ERROR
$! Jika digunakan dalam konteks numerik, menghasilkan nilai saat ini dari variabel errno, mengidentifikasi kesalahan panggilan sistem terakhir. Jika digunakan dalam konteks string, menghasilkan string kesalahan sistem yang sesuai.
$ OS_ERROR atau $ ERRNO
$ @ Pesan kesalahan sintaks Perl dari perintah eval terakhir.
$ EVAL_ERROR
$$ Pid proses Perl menjalankan skrip ini.
$ PROCESS_ID atau $ PID
$ < ID pengguna (uid) sebenarnya dari proses ini.
$ REAL_USER_ID atau $ UID
$> ID pengguna efektif dari proses ini.
$ EFFECTIVE_USER_ID atau $ EUID
$ ( ID grup (gid) sebenarnya dari proses ini.
$ REAL_GROUP_ID atau $ GID
$) Gid efektif dari proses ini.
$ EFFECTIVE_GROUP_ID atau $ EGID
$ 0 Berisi nama file yang berisi skrip Perl yang sedang dijalankan.
$ PROGRAM_NAME
$ [ Indeks elemen pertama dalam larik dan karakter pertama dalam substring. Default-nya adalah 0.
$] Mengembalikan versi plus tambalan yang dibagi 1000.
$ PERL_VERSION
$ ^ D Nilai saat ini dari flag debugging.
$ DEBUGGING
$ ^ E Pesan kesalahan diperpanjang pada beberapa platform.
$ EXTENDED_OS_ERROR
$ ^ F Deskriptor file sistem maksimum, biasanya 2.
$ SYSTEM_FD_MAX
$ ^ H Berisi petunjuk kompilator internal yang diaktifkan oleh modul pragmatis tertentu.
$ ^ Saya Nilai saat ini dari ekstensi edit di tempat. Gunakan undef untuk menonaktifkan pengeditan di tempat.
$ INPLACE_EDIT
$ ^ M Isi dari $ M dapat digunakan sebagai kolam memori darurat jika Perl mati dengan kesalahan kehabisan memori. Penggunaan $ M membutuhkan kompilasi Perl. Lihat dokumen INSTALL untuk informasi lebih lanjut.
$ ^ O Berisi nama sistem operasi tempat biner Perl saat ini dikompilasi.
$ OSNAME
$ ^ P Bendera internal yang dihapus debugger sehingga tidak men-debug sendiri.
$ PERLDB
$ ^ T Waktu saat skrip mulai berjalan, dalam hitungan detik sejak periode.
$ BASETIME
$ ^ W. Nilai sakelar peringatan saat ini, baik benar atau salah.
$ PERINGATAN
$ ^ X Nama biner Perl itu sendiri dijalankan sebagai.
$ EXECUTABLE_NAME
$ ARGV Berisi nama file saat ini saat membaca dari <ARGV>.

Variabel Khusus Array Global

@AR_JKT Larik yang berisi argumen baris perintah yang ditujukan untuk skrip.
@INC Larik berisi daftar tempat untuk mencari skrip Perl untuk dievaluasi oleh konstruksi do, require, atau use.
@F Larik di mana baris input dipisahkan ketika tombol -a baris perintah diberikan.

Variabel Khusus Hash Global

% INC Hash berisi entri untuk nama file dari setiap file yang telah disertakan melalui lakukan atau memerlukan.
% ENV Hash yang berisi lingkungan Anda saat ini.
% SIG Hash digunakan untuk mengatur penangan sinyal untuk berbagai sinyal.

Penanganan File Khusus Global

ARGV Filehandle khusus yang mengulangi nama file baris perintah di @ARGV. Biasanya ditulis sebagai penanganan file null di <>.
STDERR Filehandle khusus untuk kesalahan standar dalam paket apa pun.
STDIN Filehandle khusus untuk input standar dalam paket apa pun.
STDOUT Filehandle khusus untuk keluaran standar dalam paket apa pun.
DATA Filehandle khusus yang mengacu pada apa pun yang mengikuti token __END__ dalam file yang berisi skrip. Atau, penanganan file khusus untuk apa pun yang mengikuti token __DATA__ dalam file yang diperlukan, selama Anda membaca data dalam paket yang sama __DATA__ ditemukan di.
_ (garis bawah) Filehandle khusus yang digunakan untuk menyimpan informasi dari stat terakhir, lstat, atau operator pengujian file.

Konstanta Khusus Global

__AKHIR__ Menunjukkan akhir logis dari program Anda. Teks apa pun berikut ini diabaikan, tetapi dapat dibaca melalui filehandle DATA.
__MENGAJUKAN__ Merepresentasikan nama file pada titik program Anda di mana ia digunakan. Tidak diinterpolasi menjadi string.
__GARIS__ Merupakan nomor baris saat ini. Tidak diinterpolasi menjadi string.
__PAKET__ Merepresentasikan nama paket saat ini pada waktu kompilasi, atau tidak ditentukan jika tidak ada paket saat ini. Tidak diinterpolasi menjadi string.

Variabel Khusus Ekspresi Reguler

$ digit Berisi teks yang cocok dengan kumpulan tanda kurung yang sesuai di pola terakhir yang cocok. Misalnya, $ 1 cocok dengan apa pun yang ada di kumpulan tanda kurung pertama di ekspresi reguler sebelumnya.
$ & String yang cocok dengan kecocokan pola terakhir yang berhasil.
$ MATCH
$ ` String yang mendahului apa pun yang cocok dengan pencocokan pola terakhir yang berhasil.
$ PREMATCH
$ ' String yang mengikuti apa pun yang cocok dengan pencocokan pola terakhir yang berhasil.
$ POSTMATCH
$ + Tanda kurung terakhir cocok dengan pola pencarian terakhir. Ini berguna jika Anda tidak mengetahui kumpulan pola alternatif mana yang cocok. Misalnya: / Versi: (. *) | Revisi: (. *) / && ($ rev = $ +);
$ LAST_PAREN_MATCH

Variabel Khusus Filehandle

$ | Jika disetel ke bukan nol, paksa fflush (3) setelah setiap penulisan atau cetak pada saluran keluaran yang dipilih saat ini.
$ OUTPUT_AUTOFLUSH
$% Nomor halaman saat ini dari saluran keluaran yang saat ini dipilih.
$ FORMAT_PAGE_NUMBER
$ = Panjang halaman saat ini (garis yang dapat dicetak) dari saluran keluaran yang saat ini dipilih. Default-nya adalah 60.
$ FORMAT_LINES_PER_PAGE
$ - Jumlah baris yang tersisa di halaman saluran keluaran yang saat ini dipilih.
$ FORMAT_LINES_LEFT
$ ~ Nama format laporan saat ini untuk saluran keluaran yang saat ini dipilih. Default adalah nama filehandle.
$ FORMAT_NAME
$ ^ Nama format bagian atas halaman saat ini untuk saluran keluaran yang saat ini dipilih. Default adalah nama filehandle dengan _TOP ditambahkan.
$ FORMAT_TOP_NAME