r2 - 04 Mar 2006 - IgorSutton
NOME
File::Spec - executa operações em nomes de arquivos de maneira portávelSINOPSE
use File::Spec;
$x=File::Spec->catfile('a', 'b', 'c');
que retorna 'a/b/c' no Unix. Ou:
use File::Spec::Functions;
$x = catfile('a', 'b', 'c');
DESCRIÇÃO
Este módulo foi desenhado para suportar operações executadas rotineiramente em especificações de arquivos (geralmente chamados ``nomes de arquivos'', mas que não devem ser confundidas com o conteúdo de um arquivo, ou os file handles do Perl), como concatenar diversos diretórios e nomes de arquivos em um único caminho, ou determinar a raiz de um caminho. Ele é baseado no código do MakeMaker? 5.17, escrito por Andreas König, Andy Dougherty, Charles Bailey, Ilya Zakharevich, Paul Schinder, e outros. Como estas funções são diferentes para a maioria dos sistemas operacionais, cada conjunto de rotinas específicas por sistema operacional estão disponíveis em um módulo separado, incluíndo:
File::Spec::Unix
File::Spec::Mac
File::Spec::OS2
File::Spec::Win32
File::Spec::VMS
O módulo apropriado para o sistema operacional que o programa está sendo executado é automaticamente carregado pelo módulo File::Spec. Como alguns módulos (como VMS) se utilizam de facilidades disponíveis apenas naquele sistema operacional, pode não ser possível carregar todos os módulos em todos os sistemas operacionais.
Como o módulo File::Spec é orientado a objetos, subrotinas não devem ser executadas diretamente, como no exemplo:
File::Spec::catfile('a','b');
mas sim como métodos de uma classe:
File::Spec->catfile('a','b');
O módulo the File::Spec::Functions manpage provê formas funcionais de utilização destes métodos.
MÉTODOS
- canonpath
- Este método não faz nenhuma verificação no sistema de arquivos, porém uma limpeza lógica no caminho especificado.
-
$cpath = File::Spec->canonpath( $path ) ; - catdir
-
Concatena dois ou mais nomes de diretórios para formar um caminho completo, terminando com um diretório. Porém, remove a última barra do caminho resultante, pois ele não é bonito, não é necessário e confunde OS/2. Claro, se este é o diretório raiz, não remove a barra
-
$path = File::Spec->catdir( @directories ); - catfile
- Concatena um ou mais nomes de diretórios e um nome de arquivo para formar um caminho completo:
-
$path = File::Spec->catfile( @directories, $filename ); - curdir
- Retorna uma string representando o diretório atual.
-
$curdir = File::Spec->curdir(); - devnull
- Retorna uma string representando o dispositivo null (no Unix, geralmente /dev/null).
-
$devnull = File::Spec->devnull(); - rootdir
- Retorna uma string representando o diretório raíz.
-
$rootdir = File::Spec->rootdir(); - tmpdir
-
Retorna uma string representando o primeiro diretório com permissão de escrita, de uma lista de possíveis diretórios temporários. Retorna o diretório atual caso nenhum diretório temporário com permissão de escrita seja encontrado. A lista de diretórios verificados depende da plataforma; por exemplo File::Spec::Unix verifica a variável de ambiente
$ENV{TMPDIR}(a menos que o modo taint esteja ativado) e /tmp. -
$tmpdir = File::Spec->tmpdir(); - updir
- Retorna uma string representando o diretório diretamente superior.
-
$updir = File::Spec->updir(); - no_upwards
- Elimina os caminhos que se referem ao diretório superior, dada uma lista de nomes de arquivos (não elimina links simbólicos, apenas '.', '..' e equivalentes).
-
@paths = File::Spec->no_upwards( @paths ); - case_tolerant
- Retorna um valor verdadeiro ou falso indicando, respectativamente, se diferenças entre letras maiúsculas e minúsculas são ou não significativas em comparações de especificações de arquivos.
-
$is_case_tolerant = File::Spec->case_tolerant(); - file_name_is_absolute
- Dado um caminho como argumento, retorna verdadeiro caso este seja um caminho absoluto.
-
$is_absolute = File::Spec->file_name_is_absolute( $path ); - Esta função não consulta o sistema de arquivos local nas plataformas Unix, Win32, OS/2 ou Mac OS (Clássico). Ela consulta o ambiente para a plataforma VMS (verifique file_name_is_absolute in the File::Spec::VMS manpage).
- path
-
Não recebe nenhum argumento. Retorna a variável de ambiente
PATH(ou a variável equivalente na plataforma onde o programa está sendo executado) como uma lista. -
@PATH = File::Spec->path(); - join
- join é o mesmo que catfile.
- splitpath
- Divide o caminho em porções de volume, diretório e nome de arquivo. Em sistemas onde não há conceito de volume, retorna '' para o volume.
-
($volume,$directories,$file) = File::Spec->splitpath( $path ); -
($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); -
Para sistemas onde não existam diferenciações sintáticas de nomes de arquivos e diretórios, assume que o arquivo é o último caminho a menos que
$no_fileseja verdadeiro ou um separador ou /. ou /.. esteja presente. No Unix, isto significa que$no_fileverdadeiro faz esta função retornar ( '', $path, '' ). - A porção do diretório pode ou não retornar com uma barra no final.
- Os resultados podem ser passados para catpath() para serem transformadas em um caminho equivalente (geralmente idêntico) ao caminho original.
- splitdir
- O oposto de catdir().
-
@dirs = File::Spec->splitdir( $directories ); -
$directoriesdevem ser apenas a porção de diretório do caminho em sistemas que possuem o conceito de volume ou que tenham a diferenciação sintática entre diretórios e arquivos. -
Esta função não apenas separa os diretórios com o separador. Nomes de diretórios vazios (
'') podem ser retornados, pois possuem importância em alguns sistemas operacionais. catpath()
-
Dados um volume, diretório e arquivo, retorna um caminho completo. No Unix,
$volumeé ignorado, e o diretório e nome de arquivo são concatenados. Uma barra ('/') pode ser inserida caso necessário. Em outros sistemas operacionais,$volumeé importante. -
$full_path = File::Spec->catpath( $volume, $directory, $file ); - abs2rel
- Recebe um caminho de destino, e uma base opcional e retorna o caminho relativo a partir do caminho base para o caminho de destino.
-
$rel_path = File::Spec->abs2rel( $path ) ; -
$rel_path = File::Spec->abs2rel( $path, $base ) ; -
Caso
$basenão esteja presente ou esteja vazio (''), então cwd() é utilizado. Caso$baseseja relativa, é convertida para sua forma absoluta utilizando rel2abs(). Isto significa que é obtida relativa à cwd(). -
If
$baseis not present or '', then cwd() is used. If$baseis - relative, then it is converted to absolute form using
- rel2abs(). This means that it is taken to be relative to
- cwd().
-
Em sistemas com conceito de volume, if
$pathe$baseparecem ser de dois diferentes volumes, a função não tentará resolver os dois caminhos, e simplismente retornará$path. Note que versões anteriores deste módulo ignoram o volume de$base, que resultava em lixo na maior parte do tempo. -
Em sistemas que possuem uma gramática que indica nome de arquivos, esta função ignora um arquivo como
$base. Todos os outros tipos de componentes serão tratados como diretórios. -
Caso
$pathseja relativo, ele será convertido para sua forma absoluta utilizando rel2abs(). Isto significa que ela é formada a partir de cwd(). - Nenhuma verificação no sistema de arquivos é feita. Na plataforma VMS, há uma interação com o ambiente de trabalho.
- Baseado no código escrito por Shigio Yamaguchi.
rel2abs()
- Converte um caminho relativo para um caminho absoluto.
-
$abs_path = File::Spec->rel2abs( $path ) ; -
$abs_path = File::Spec->rel2abs( $path, $base ) ; -
Se
$basenão está presente ou está vazia (''), então cwd() é utilizado. Se$baseé relativa, então é convertida para sua forma absoluta utilizando rel2abs(). Isto significa que é formada a partir de cwd(). -
Em sistemas com conceito de volume, if
$pathe$baseparecem ser de dois diferentes volumes, a função não tentará resolver os dois caminhos, e simplismente retornará$path. Note que versões anteriores deste módulo ignoram o volume de$base, que resultava em lixo na maior parte do tempo. -
Em sistemas que possuem uma gramática que indica nome de arquivos, esta função ignora um arquivo como
$base. Todos os outros tipos de componentes serão tratados como diretórios. -
Caso
$pathseja absoluto, ele é limpo e retornado utilizando canonpath(). - Nenhuma verificação no sistema de arquivos é feita. Na plataforma VMS, há uma interação com o ambiente de trabalho.
- Baseado no código escrito por Shigio Yamaguchi.
VEJA TAMBÉM
the File::Spec::Unix manpage, the File::Spec::Mac manpage, the File::Spec::OS2 manpage, the File::Spec::Win32 manpage, the File::Spec::VMS manpage, the File::Spec::Functions manpage, the ExtUtils? ::MakeMaker manpageAUTOR
Atualmente mantido por Ken Williams<KWILLIAMS@cpan.org>.
A maior parte deste código foi escrito por
Kenneth Albanowski <kjahds@kjahds.com>,
Andy Dougherty <doughera@lafayette.edu>,
Andreas König <A.Koenig@franz.ww.TU-Berlin.DE>,
Tim Bunce <Tim.Bunce@ig.co.uk>.
VMS support by Charles Bailey <bailey@newman.upenn.edu>.
OS/2 support by Ilya Zakharevich <ilya@math.ohio-state.edu>.
Mac support by Paul Schinder <schinder@pobox.com>, and
Thomas Wegner <wegner_thomas@yahoo.com>.
abs2rel() and rel2abs() written by Shigio Yamaguchi <shigio@tamacom.com>,
modified by Barrie Slaymaker <barries@slaysys.com>.
splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker.
