Do mojego skryptu perl plik jest przekazywany jako argument. Plik może być plikiem .txt
lub plikiem .zip
zawierającym plik .txt
.Jak mogę sprawdzić rozszerzenie pliku za pomocą Perla?
Chcę napisać kod, który wygląda mniej więcej tak
if ($file is a zip) {
unzip $file
$file =~ s/zip$/txt/;
}
Jeden ze sposobów sprawdzenia rozszerzenie jest zrobić podział na .
a następnie dopasować ostatni wynik w tablicy (zwrócony przez split).
Czy jest jakiś lepszy sposób?
Czy na pewno chcesz sprawdzić rozszerzenie? Jeśli masz nadzieję przetestować, z którym typem pliku masz do czynienia, lepiej byłoby sprawdzić typ MIME. Spójrz na coś takiego: http://search.cpan.org/~pmison/File-Type-0.22/lib/File/Type.pm – totels
Chiming z obsługą @totels i kilkoma odpowiedziami niższego przedstawiciela . Jestem zaskoczony, jak wielu myślących, że poleganie na rozszerzeniu jest bezpieczne ('mv virus.exe hooters.jpg') lub solidne (' mv some-huge-dossy-garbage.bin whatever.zip'). Zakładając, że zip i błędy przechwytywania lub odkrywania typu MIME są właściwe odpowiedzi. Każde rozwiązanie wykorzystujące rozszerzenie jest błędem. – Ashley