%SIG
Jest to hasz używany do ustawiania procedur obsługi sygnałów dla różnych sygnałów.
Oto program bazujący na zmiennych z hasza %ENV. Po jego wywołaniu skrypt będzie czekał na jakikolwiek wpis a następnie po naciśnięciu klawisza Enter tekst zostaje zapisany do pliku .log o nazwie odpowiadającej nazwie użytkownika wywołującego skrypt wraz z hostem, z którego przyszedł użytkownik. Plik .log zostaje zapisany w dowolnym katalogu ustalanym przez administratora. Skrypt może być używany np. do pośredniego kontaktu z administratorem. Tak jak nie może być w systemie dwóch użytkowników o tych samych nazwach tak też nie będzie dwóch takich samych plików .log. Program "Kontakt":
01 #!/usr/bin/perl
02 $login = $ENV{'USER'};
03 $host = $ENV{'HOSTNAME'};
04 print STDOUT "Kontakt z administratorem - po każdym wywołaniu skryptu poprzedni wpis zostaje skasowany:";
05 |
$text |
= <STDIN> |
06 |
open |
(KONTAKT, ">/root/opinie/$login.log") |
07 |
|
KONTAKT $text; |
08 |
|
KONTAKT "$login\n"; |
09 |
|
KONTAKT $host; |
10 |
close |
(KONTAKT); |
11 |
|
"Dziękuję - plik został zapisany.\n" |
Widać tu zastosowanie tablicy asocjacyjnej ENV a także operacje na uchwytach plików o których
napiszę trochę później.
Opis działania programu:
01 - na samym początku deklaruję gdzie znajduje się Perl na dysku
02 - skorzystanie z tablicy asocjacyjnej ENV, a w szczególności ze zmiennej środowiskowej USER i przyporządkowanie jej do zmiennej Slogin (skraca to zapis programu)
03 - podobna operacja jak powyżej z tym że zajmuję się zmienną HOSTNAME
04 - korzystam ze specjalnego uchwytu dla standardowego wyjścia w każdym pakiecie STDOUT, polecenie wyświetla zdanie na ekranie
05 - korzystam z uchwytu dla standardowego wejścia - STDIN program odczytuje to co zostało wprowadzone z klawiatury i zapisuje to pod zmienną o nazwie $text
06 - posłużenie się uchwytem o nazwie KONTAKT - utworzenie pliku o nazwie Slogin (czyli np. plik użytkownika z loginu dom będzie się nazywał dom.log i znajdował się będzie w katalogu /root/opinie)
07 - wpisanie do pliku .log odczytanej z klawiatury informacji zapamiętanej pod zmienną $text
08 - zapisanie do pliku .log loginu spod którego plik ten został utworzony
09 - zapisanie do pliku .log hosta z którego plik ten został utworzony
10 - zamknięcie uchwytu KONTAKT
11 - wypisanie ostatniego zdania
-9-