Moduł File::Temp

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Co to jest?

Moduł File::Temp służy do obsługi plików i katalogów tymczasowych. Moduł ten zawiera dwie funkcje:

tempfile()
zwraca uchwyt do pliku tymczasowego i jego nazwę.
tempdir()
tworzy katalog tymczasowy i zwraca jego nazwę.

Dzięki temu, że funkcja tempfile() zwraca jednocześnie nazwę pliku i jego uchwyt unikamy sytuacji "wyścigu".

Funkcja tempfile()

Funkcję tempfile() można wywołać na kilka sposobów:

($filehandle, $filename) = tempfile()
tworzy plik tymczasowy oraz zwraca jego uchwyt i nazwę.
($filehandle, $filename) = tempfile($template)
tworzy plik tymczasowy używając podanego wzorca, znaki X na końcu wzorca zostają zamienione na dowolne znaki alfanumeryczne.
($filehandle, $filename) = tempfile($template, SUFFIX => $suffix)
do utworzonej wg. wzorca nazwy pliku dodany jest przyrostek $suffix (np. zawierający rozszerzenie).
($filehandle, $filename) = tempfile($template, DIR => $dir)
tworzy plik tymczasowy w określonym katalogu.
($filehandle, $filename) = tempfile($template, UNLINK => 1)
tworzy plik tymczasowy który będzie usunięty po zamknięciu uchwytu lub zakończeniu programu. Jest to domyślne ustawienie.
$filehandle = tempfile()
tworzy plik tymczasowy, zwraca tylko jego uchwyt.
(undef, $filename) = tempfile($template, OPEN => 0)
zwraca nazwę pliku, ale go nie otwiera. Nie jest to zalecany sposób tworzenia pliku ze względu na prawdopodobieństwo wystąpienia sytuacji "wyścigu".

Pliki są domyślnie tworzone w domyślnym katalogu tymczasowym (można użyć funkcji tmpdir() aby sprawdzić gdzie ten katalog się znajduje), chyba że użyjemy opcji DIR. Opcje w wywołaniach funkcji można łączyć.

Funkcja tempdir

Sposoby użycia funkcji tempdir():

$tempdir = tempdir()
tworzy nowy katalog tymczasowy.
$tempdir = tempdir($template)
tworzy nowy katalog tymczsowy o podanym wzorcu.
$tempdir = tempdir(DIR => $dir)
tworzy katalog tymczasowy w podanym katalogu.
$tempdir = tempdir(CLEANUP => 1)
worzy nowy katalog tymczasowy. Po zakończeniu programy katalog i wszystkie pliki w tym katalogu zostaną usunięte.

Przykład działania

Pliki tymczasowe służą do chwilowego przechowywania dużej liczby danych lub do komunikacji z innymi programami. W sytuacji gdy jednocześnie może być uruchomionych kilka egzemplarzy danego programu i gdy nie możemy ustalić nazwy pliku w programie na stałe należy skorzystać z plików tymczasowych.

Przykładem może być program, który przeszukuje strony internetowe w poszukiwaniu adresów e-mail, zapisuje je do pliku tymczasowego, a po wyszukaniu np. 100000 adresów, wysyła do każdego bardzo dużo bardzo ważnych informacji:)

Poniższy kod pokazuje mechanizm tworzenia i zapisywania do plików tymczasowych.

use File::Temp qw(tempfile tempdir)

#najpierw utworzymy przykładowy katalog tymczasowy, który zostanie usunięty po zamknięciu programu
$dir = tempdir(CLEANUP => 1);

#tworzymy wzór nazwy pliku
$template = "tempXXXXX";

#teraz utworzymy nowy plik tymczasowy
($filehandle, $filename) = tempfile($template, DIR => $dir, SUFFIX => ".tmp");

#na koniec wypiszemy nazwę utworzonego pliku i katalogu
print "directory: ",$dir,"\nfile: ",$filename;
print $filehandle "Plik tymczasowy istniejący do momentu zakończenia programu.\n"

Dokumentacja

  1. Więcej na ten temat: http://search.cpan.org/~tjenness/File-Temp-0.18/Temp.pm

Kontakt i informacje o autorze opracowania

Autor: P.S.

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.