Perl Brasil

Pesquisar

Documentação

Artigos

Planeta

Eventos

Comunidade

r2 - 04 Mar 2006 - IgorSutton


NOME

File::Spec - executa operações em nomes de arquivos de maneira portável

voltar para o topo


SINOPSE

        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');

voltar para o topo


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.

voltar para o topo


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 smile
    $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_file seja verdadeiro ou um separador ou /. ou /.. esteja presente. No Unix, isto significa que $no_file verdadeiro 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 );
$directories devem 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 $base não esteja presente ou esteja vazio (''), então cwd() é utilizado. Caso $base seja relativa, é convertida para sua forma absoluta utilizando rel2abs(). Isto significa que é obtida relativa à cwd().
If $base is not present or '', then cwd() is used. If $base is
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 $path e $base parecem 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 $path seja 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 $base nã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 $path e $base parecem 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 $path seja 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.
Para maiores informações, verifique the File::Spec::Unix manpage, the File::Spec::Mac manpage, the File::Spec::OS2 manpage, the File::Spec::Win32 manpage, ou the File::Spec::VMS manpage.

voltar para o topo


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 manpage

voltar para o topo


AUTOR

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.

voltar para o topo


TRADUÇÃO

Igor Sutton Lopes <igor@izut.com>

voltar para o topo


COPYRIGHT

Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

voltar para o topo