Devo davvero saperlo, ma ho lavorato principalmente con Linux, Mac OS X e Windows che utilizzano tutti la barra (/
) come separatore di directory (Windows può utilizzare sia \
o /
.) .Separatori di directory di gestione Perl
Ciò significa che quando normalmente scrivo programmi in Perl, posso semplicemente usare /
come separatore di directory e tutto va bene. Tuttavia, so che File::Spec
suppone di consentire la portabilità di separatori di file (qualunque cosa ciò significhi).
Se sono su un sistema che non utilizza le barre in avanti come separatore di directory, capisco che gli utenti si aspettano di poter inserire file con i separatori predefiniti e vedere l'output con i separatori predefiniti. (Ad esempio, un utente Windows inserirà e si aspetta che l'output sia C:\Users\smith\Documents
e non C:/Users/smith/Documents
), ma cosa fa Perl internamente?
Posso, nonostante ciò che la piattaforma può utilizzare come separatore di directory, semplicemente utilizzare le barre in avanti quando ho a che fare con i file internamente. Ad esempio, ho una directory $dir
e un file chiamato $file
e voglio aprire il file. Posso semplicemente dire $dir/file
o devo usare File::Spec
per concatenare il nome per me?
In effetti, i programmi Perl richiedono barre in avanti nei nomi delle directory? Sto scrivendo un modulo e fornirò i nomi dei file al programma chiamante. Devo dare il file come /foo/bar/fubar
o se il sistema utilizza due punti come il primo sistema operativo Macintosh, ad esempio :foo:bar:fubar
?
cosa hai intenzione di fare con i percorsi? Se è per leggere e scrivere su file, allora '/' va bene, e perl farà ciò che intendi. Se stai creando comandi da analizzare dalla shell dei comandi del computer host o da altri programmi su quel sistema, allora dovrai rispettare le regole per quella piattaforma e File :: Spec può aiutarti. –