Perl - zmienne specjalne
Istnieje kilka zmiennych, które mają predefiniowane i specjalne znaczenie w Perlu. Są to zmienne, które używają znaków interpunkcyjnych po zwykłym wskaźniku zmiennej ($, @ lub%), takim jak $ _ (wyjaśnione poniżej).
Większość zmiennych specjalnych ma angielskie nazwy, np. Długie nazwy, np. Zmienna błędu systemu operacyjnego $! można zapisać jako $ OS_ERROR. Ale jeśli zamierzasz używać nazw podobnych do angielskiego, musisz umieścić jedną linięuse English;u góry pliku programu. To prowadzi interpretera do określenia dokładnego znaczenia zmiennej.
Najczęściej używaną zmienną specjalną jest $ _, która zawiera domyślne dane wejściowe i ciąg znaków wyszukiwania. Na przykład w następujących wierszach -
#!/usr/bin/perl
foreach ('hickory','dickory','doc') {
print $_;
print "\n";
}
Po uruchomieniu da to następujący wynik -
hickory
dickory
doc
Ponownie sprawdźmy ten sam przykład bez jawnego użycia zmiennej $ _ -
#!/usr/bin/perl
foreach ('hickory','dickory','doc') {
print;
print "\n";
}
Po wykonaniu spowoduje to również następujący wynik -
hickory
dickory
doc
Gdy pętla jest wykonywana po raz pierwszy, drukowany jest napis „hickory”. Za drugim razem drukowany jest „dickory”, a za trzecim „doc”. Dzieje się tak, ponieważ w każdej iteracji pętli bieżący ciąg jest umieszczany w $ _ i jest domyślnie używany przez print. Oto miejsca, w których Perl przyjmie $ _, nawet jeśli tego nie określisz -
Różne funkcje jednoargumentowe, w tym funkcje takie jak ord i int, a także wszystkie testy plików (-f, -d) z wyjątkiem -t, które domyślnie jest STDIN.
Różne funkcje list, takie jak drukowanie i odłączanie.
Operacje dopasowywania wzorców m //, s /// i tr /// używane bez operatora = ~.
Domyślna zmienna iteratora w pętli foreach, jeśli nie podano żadnej innej zmiennej.
Niejawna zmienna iteratora w funkcjach grep i map.
Domyślne miejsce do umieszczenia rekordu wejściowego, gdy wynik operacji wejścia liniowego jest testowany samodzielnie jako jedyne kryterium testu while (tj.). Zauważ, że poza chwilowym testem tak się nie stanie.
Specjalne typy zmiennych
W oparciu o użycie i charakter zmiennych specjalnych możemy podzielić je na następujące kategorie -
- Globalne zmienne specjalne skalarne.
- Zmienne specjalne tablicy globalnej.
- Zmienne specjalne Global Hash.
- Globalne uchwyty plików specjalnych.
- Globalne stałe specjalne.
- Zmienne specjalne wyrażeń regularnych.
- Zmienne specjalne Filehandle.
Globalne zmienne specjalne skalarne
Oto lista wszystkich skalarnych zmiennych specjalnych. Wymieniliśmy odpowiadające im angielskie nazwy wraz z nazwami symbolicznymi.
$ _ | Domyślna przestrzeń wejściowa i przestrzeń wyszukiwania wzorców. |
$ ARG | |
$. | Bieżący numer wiersza wejściowego ostatniego odczytanego uchwytu pliku. Jawne zamknięcie uchwytu pliku resetuje numer wiersza. |
$ NR | |
$ / | Separator rekordów wejściowych; nowa linia domyślnie. Jeśli jest ustawiony na łańcuch pusty, traktuje puste wiersze jako ograniczniki. |
$ RS | |
$, | Separator pól wyjściowych dla operatora drukowania. |
$ OFS | |
$ \ | Separator rekordów wyjściowych dla operatora drukowania. |
$ ORS | |
$ " | Podobnie jak „$”, z tą różnicą, że odnosi się do wartości list interpolowanych do ciągu znaków umieszczonych w podwójnych cudzysłowach (lub podobnych interpretowanych łańcuchów). Domyślnie jest to spacja. |
$ LIST_SEPARATOR | |
$; | Separator indeksu dolnego do emulacji tablic wielowymiarowych. Wartość domyślna to „\ 034”. |
$ SUBSCRIPT_SEPARATOR | |
$ ^ L. | Jaki format generuje w celu wykonania wysuwu formularza. Domyślnie jest to „\ f”. |
$ FORMAT_FORMFEED | |
$: | Bieżący zestaw znaków, po którym można przerwać ciąg w celu wypełnienia pól uzupełniających (zaczynając od ^) w formacie. Wartość domyślna to „\ n” ”. |
$ FORMAT_LINE_BREAK_CHARACTERS | |
$ ^ A | Bieżąca wartość akumulatora zapisu dla linii formatu. |
$ ACCUMULATOR | |
$ # | Zawiera format wyjściowy dla drukowanych liczb (przestarzały). |
$ OFMT | |
$? | Stan zwrócony przez ostatnie zamknięcie potoku, polecenie cofnięcia (``) lub operatora systemu. |
$ CHILD_ERROR | |
$! | Jeśli jest używany w kontekście numerycznym, zwraca bieżącą wartość zmiennej errno, identyfikując ostatni błąd wywołania systemowego. Jeśli jest używany w kontekście ciągu, zwraca odpowiedni ciąg błędu systemu. |
$ OS_ERROR lub $ ERRNO | |
$ @ | Komunikat o błędzie składni Perla z ostatniego polecenia eval. |
$ EVAL_ERROR | |
$$ | Numer pid procesu Perla, w którym działa ten skrypt. |
$ PROCESS_ID lub $ PID | |
$ < | Rzeczywisty identyfikator użytkownika (uid) tego procesu. |
$ REAL_USER_ID lub $ UID | |
$> | Efektywny identyfikator użytkownika tego procesu. |
$ EFFECTIVE_USER_ID lub $ EUID | |
$ ( | Rzeczywisty identyfikator grupy (gid) tego procesu. |
$ REAL_GROUP_ID lub $ GID | |
$) | Efektywny gid tego procesu. |
$ EFFECTIVE_GROUP_ID lub $ EGID | |
0 USD | Zawiera nazwę pliku zawierającego wykonywany skrypt Perl. |
$ PROGRAM_NAME | |
$ [ | Indeks pierwszego elementu tablicy i pierwszego znaku w podciągu. Wartość domyślna to 0. |
$] | Zwraca wersję wraz z poziomem poprawek podzieloną przez 1000. |
$ PERL_VERSION | |
$ ^ D | Bieżąca wartość flag debugowania. |
$ DEBUGOWANIE | |
$ ^ E | Rozszerzony komunikat o błędzie na niektórych platformach. |
$ EXTENDED_OS_ERROR | |
$ ^ F. | Maksymalny deskryptor pliku systemowego, zwykle 2. |
$ SYSTEM_FD_MAX | |
$ ^ H | Zawiera wewnętrzne wskazówki kompilatora włączone przez niektóre pragmatyczne moduły. |
$ ^ I | Bieżąca wartość rozszerzenia do edycji w miejscu. Użyj undef, aby wyłączyć edycję w miejscu. |
$ INPLACE_EDIT | |
$ ^ Mln | Zawartość $ M może zostać użyta jako awaryjna pula pamięci na wypadek śmierci Perla z powodu błędu braku pamięci. Użycie $ M wymaga specjalnej kompilacji Perla. Zobacz dokument INSTALACJA, aby uzyskać więcej informacji. |
$ ^ O | Zawiera nazwę systemu operacyjnego, dla którego został skompilowany bieżący plik binarny Perl. |
$ OSNAME | |
$ ^ P | Wewnętrzna flaga, którą debuger czyści, aby sam nie debugował. |
$ PERLDB | |
$ ^ T | Czas, w którym zaczął działać skrypt, w sekundach od epoki. |
$ BASETIME | |
$ ^ W. | Bieżąca wartość przełącznika ostrzeżenia, prawda lub fałsz. |
$ OSTRZEŻENIE | |
$ ^ X | Nazwa, pod jaką został wykonany plik binarny Perla. |
$ EXECUTABLE_NAME | |
$ ARGV | Zawiera nazwę bieżącego pliku podczas odczytu z <ARGV>. |
Zmienne specjalne tablicy globalnej
@ARGV | Tablica zawierająca argumenty wiersza poleceń przeznaczone dla skryptu. |
@INC | Tablica zawierająca listę miejsc, w których należy szukać skryptów Perla do oceny przez konstrukcje do, require lub use. |
@FA | Tablica, na którą dzielone są wiersze wejściowe, gdy podano przełącznik wiersza polecenia -a. |
Zmienne specjalne Global Hash
% INC | Skrót zawierający wpisy dla nazwy każdego pliku, który został dołączony za pomocą polecenia do lub require. |
% ENV | Skrót zawierający bieżące środowisko. |
% SIG | Skrót używany do ustawiania programów obsługi sygnałów dla różnych sygnałów. |
Globalne uchwyty plików specjalnych
ARGV | Specjalny uchwyt pliku, który iteruje po nazwach plików w wierszu poleceń w @ARGV. Zwykle zapisywany jako pusty uchwyt pliku w <>. |
STDERR | Specjalny uchwyt pliku dla standardowego błędu w dowolnym pakiecie. |
STDIN | Specjalny uchwyt pliku do standardowego wejścia w dowolnym pakiecie. |
STDOUT | Specjalny uchwyt pliku dla standardowego wyjścia w dowolnym pakiecie. |
DANE | Specjalny uchwyt pliku, który odnosi się do wszystkiego, co następuje po tokenie __END__ w pliku zawierającym skrypt. Lub specjalny uchwyt pliku dla wszystkiego, co następuje po tokenie __DATA__ w wymaganym pliku, o ile czytasz dane z tego samego pakietu, w którym znaleziono __DATA__. |
_ (podkreślenie) | Specjalny uchwyt pliku używany do buforowania informacji z ostatniego operatora testu stat, lstat lub pliku. |
Globalne stałe specjalne
__KONIEC__ | Wskazuje logiczny koniec programu. Każdy następujący tekst jest ignorowany, ale można go odczytać za pomocą uchwytu pliku DATA. |
__PLIK__ | Reprezentuje nazwę pliku w punkcie programu, w którym jest używany. Nie interpolowano na ciągi. |
__LINIA__ | Reprezentuje bieżący numer wiersza. Nie interpolowano na ciągi. |
__PAKIET__ | Reprezentuje bieżącą nazwę pakietu w czasie kompilacji lub undefined, jeśli nie ma bieżącego pakietu. Nie interpolowano na ciągi. |
Zmienne specjalne wyrażeń regularnych
$ cyfra | Zawiera tekst dopasowany przez odpowiedni zestaw nawiasów w ostatnim dopasowanym wzorcu. Na przykład $ 1 pasuje do tego, co było zawarte w pierwszym zestawie nawiasów w poprzednim wyrażeniu regularnym. |
$ & | Ciąg dopasowany przez ostatnie udane dopasowanie wzorca. |
$ MATCH | |
$ ` | Ciąg poprzedzający wszystko, co zostało dopasowane przez ostatnie pomyślne dopasowanie wzorca. |
$ PREMATCH | |
$ ' | Ciąg następujący po tym, co został dopasowany przez ostatnie udane dopasowanie wzorca. |
$ POSTMATCH | |
$ + | Ostatni nawias dopasowany przez ostatni wzorzec wyszukiwania. Jest to przydatne, jeśli nie wiesz, który z zestawu alternatywnych wzorców został dopasowany. Na przykład: / Wersja: (. *) | Wersja: (. *) / && ($ rev = $ +); |
$ LAST_PAREN_MATCH |
Zmienne specjalne Filehandle
$ | | Jeśli ustawione na wartość niezerową, wymusza fflush (3) po każdym zapisie lub wydruku na aktualnie wybranym kanale wyjściowym. |
$ OUTPUT_AUTOFLUSH | |
% $ | Numer bieżącej strony aktualnie wybranego kanału wyjściowego. |
$ FORMAT_PAGE_NUMBER | |
$ = | Bieżąca długość strony (linie do wydrukowania) aktualnie wybranego kanału wyjściowego. Wartość domyślna to 60. |
$ FORMAT_LINES_PER_PAGE | |
$ - | Liczba wierszy pozostałych na stronie aktualnie wybranego kanału wyjściowego. |
$ FORMAT_LINES_LEFT | |
$ ~ | Nazwa bieżącego formatu raportu dla aktualnie wybranego kanału wyjściowego. Domyślnie jest to nazwa uchwytu pliku. |
$ FORMAT_NAME | |
$ ^ | Nazwa bieżącego formatu początku strony dla aktualnie wybranego kanału wyjściowego. Domyślnie jest to nazwa uchwytu pliku z dołączonym _TOP. |
$ FORMAT_TOP_NAME |