Pembolehubah khas Perl


Bahasa Perl mentakrifkan beberapa pembolehubah khas, biasanya diawali dengan $, @ atau %, contohnya: $_.

Banyak pembolehubah khas mempunyai nama Inggeris yang panjang Pembolehubah sistem pengendalian $!

Jika anda ingin menggunakan pembolehubah khas dengan nama Inggeris, anda perlu menambah gunakan bahasa Inggeris; pada pengepala program. Ini membolehkan penggunaan pembolehubah khas bahasa Inggeris deskriptif.

Pembolehubah khas yang paling biasa digunakan ialah $_, yang mengandungi input lalai dan kandungan padanan corak. Contohnya adalah seperti berikut:

#!/usr/bin/perl

foreach ('Google','php','Taobao') {
	print $_;
	print "\n";
}

Laksanakan program di atas, hasil output ialah:

Google
php
Taobao

Kami tidak menggunakan $_ untuk mengeluarkan kandungan dalam contoh berikut:

#!/usr/bin/perl

foreach ('Google','php','Taobao') {
	print;
	print "\n";
}
< .

Dalam gelung berulang, rentetan gelung semasa akan diletakkan dalam $_, dan kemudian dikeluarkan melalui cetakan. Di samping itu, cetakan tidak menyatakan pembolehubah output, dan $_ digunakan secara lalai.

Berikut ialah beberapa tempat di mana Perl akan menganggap $_ walaupun tidak dinyatakan:

Pelbagai fungsi unary, termasuk perkara seperti ord() dan int( ) Fungsi sedemikian dan semua operasi ujian fail ("-f", "-d") kecuali "-t", yang mengendalikan STDIN secara lalai.
  • Pelbagai fungsi senarai seperti print() dan unlink().
  • Operasi padanan corak "m//", "s///" dan "tr///" tanpa menggunakan operator "=~".
  • ialah pembolehubah lelaran lalai untuk gelung "foreach" apabila tiada pembolehubah lain diberikan.
  • Pembolehubah lelaran tersirat untuk fungsi grep() dan map().
  • Apabila "while" hanya mempunyai satu syarat, dan syarat tersebut menguji hasil operasi "", $_ ialah lokasi lalai untuk menyimpan rekod input. Ini tidak berlaku kecuali dalam keadaan ujian "semasa". (Mnemonik: Garis bawah boleh dikecualikan dalam operasi tertentu.)
  • Jenis pembolehubah khas

Mengikut sifat penggunaan pembolehubah khas, ia boleh dibahagikan ke dalam Kategori berikut:

Pembolehubah khas skalar global.
  • Pembolehubah khas tatasusunan global.
  • Pembolehubah khas cincang global.
  • Pemegang fail khas global.
  • Pemalar khas global.
  • Pembolehubah khas ungkapan biasa.
  • Pengendalian fail pembolehubah khas.
  • Pembolehubah khas skalar global
Berikut menyenaraikan semua pembolehubah khas skalar, termasuk aksara dan pembolehubah khas dalam bahasa Inggeris:

$_Input lalai dan kandungan padanan corak.
$ARG
$.Nombor baris semasa pemegang fail terakhir dibaca
$NR
$/Masukkan pemisah rekod, lalai ialah aksara baris baharu. Jika anda menggunakan pembolehubah undef, penghujung fail akan dibaca.
$RS
$,Output domain pemisah
$ OFS
$Pemisah rekod output
$ORS
$ "Pembolehubah ini serupa dengan $, tetapi harus digunakan untuk menginterpolasi nilai tatasusunan dan menghiris ​​​​ke dalam rentetan petikan dua kali (atau rentetan interpolasi serupa). Lalai kepada ruang.
$LIST_SEPARATOR
$;Pemisah yang digunakan semasa mensimulasikan tatasusunan berbilang dimensi menjadi lalai kepada ".
$OFMT
$?Mengembalikan status perintah luaran terakhir
$CHILD_ERROR
$!Nilai berangka pembolehubah ini ialah nilai errno dan nilai rentetan ialah rentetan ralat sistem yang sepadan
$OS_ERROR atau $ERRNO
$@Mesej ralat perintah eval arahan eval terakhir telah berjaya dilaksanakan
$EVAL_ERROR
$$Nombor proses yang menjalankan skrip Perl semasa
$PROCESS_ID atau $PID
$<ID pengguna sebenar proses semasa
$REAL_USER_ID atau $UID
$>ID pengguna yang berkesan bagi proses semasa
$EFFECTIVE_USER_ID atau $EUID
$(ID pengguna kumpulan sebenar proses semasa
$ REAL_GROUP_ID atau $GID
$)ID pengguna kumpulan yang berkesan bagi proses semasa
$EFFECTIVE_GROUP_ID atau $EGID
$0Mengandungi nama fail skrip yang sedang dilaksanakan
$PROGRAM_NAME
$[Susun tatasusunan Subskrip elemen, yang lalai kepada 0.

$]Nombor versi Perl
$PERL_VERSION
$^DNilai bendera nyahpepijat
$DEBUGGING
$^EMesej ralat lanjutan OS dalam persekitaran bukan UNIX
$EXTENDED_OS_ERROR
$^F Nilai deskriptor berkas fail maksimum
$SYSTEM_FD_MAX
$^H Status semakan sintaks diaktifkan oleh pengkompil

$^IKawalan terbina dalam Nilai editor
$INPLACE_EDIT
$^MSaiz kolam memori sandaran

$^ONama Sistem Pengendalian
$OSNAME
$^PPembolehubah dalaman yang menyatakan nilai nyahpepijat semasa
$PERLDB
$^TBermula dari awal abad baru, masa dalam beberapa saat apabila skrip mula berjalan
$BASETIME
$^WNilai semasa suis amaran
$WARNING
$^XNama Kod boleh laku binari Perl
$EXECUTABLE_NAME
$ARGVNama fail semasa semasa membaca daripada pemegang fail lalai

Pembolehubah khas tatasusunan global

@ARGV
@ARGV传给脚本的命令行参数列表
@INC在导入模块时需要搜索的目录列表
@F命令行的数组输入
Senarai parameter baris arahan yang dihantar kepada skrip

%INC

散列表%INC包含所有用do或require语句包含的文件.关键字是文件名,值是这个文件的路径

%ENV

包含当前环境变量

%SIG

信号列表及其处理方式
@INC<🎜>Senarai direktori yang perlu dicari semasa mengimport modul<🎜><🎜><🎜> @F<🎜 >Input tatasusunan daripada baris arahan<🎜><🎜><🎜><🎜><🎜>Pembolehubah khas hash global<🎜>

%INC

<🎜>
Hash jadual %INC Mengandungi semua fail yang disertakan dengan penyataan lakukan atau perlukan Kata kunci ialah nama fail dan nilainya ialah laluan fail <🎜><🎜><🎜>

%ENV

<🎜>
Mengandungi pembolehubah persekitaran semasa<🎜><🎜><🎜>< p style="text-align:center;">%SIG

<🎜>
Senarai isyarat dan pemprosesannya <🎜>< 🎜><🎜> <🎜>

Pemegang fail khas global

ARGV

遍历数组变量@ARGV中的所有文件名的特殊文件句柄

STDERR

标准错误输出句柄

STDIN

标准输入句柄

STDOUT

标准输出句柄

DATA

特殊文件句柄引用了在文件中 __END__ 标志后的任何内容包含脚本内容。或者引用一个包含文件中__DATA__ 标志后的所有内容,只要你在同一个包有读取数据,__DATA__ 就存在。

_ (下划线)

特殊的文件句柄用于缓存文件信息(fstat、stat和lstat)。

Pemalar khas global

__END__

脚本的逻辑结束,忽略后面的文本。

__FILE__

当前文件名

__LINE__

当前行号

__PACKAGE__

当前包名,默认的包名是main。

Pembolehubah khas ungkapan biasa

$n

包含上次模式匹配的第n个子串

$&

前一次成功模式匹配的字符串

$MATCH

$`

前次匹配成功的子串之前的内容

$PREMATCH

$'

前次匹配成功的子串之后的内容

$POSTMATCH

$+

与上个正则表达式搜索格式匹配的最后一个括号。例如:

Google
php
Taobao

$LAST_PAREN_MATCH

Pemegang fail pembolehubah khas

$|

如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件

$OUTPUT_AUTOFLUSH

$%

当前输出页号

$FORMAT_PAGE_NUMBER

$=

当前每页长度。默认为 60。

$FORMAT_LINES_PER_PAGE

$-

当前页剩余的行数

$FORMAT_LINES_LEFT

$~

当前报表输出格式的名称。默认值是文件句柄名。

$FORMAT_NAME

$^

当前报表输出表头格式的名称。默认值是带后缀"_TOP"的文件句柄名。

$FORMAT_TOP_NAME