[SP-pm] FILEHANDLE LOGFILE or INFILE

Daniel Vinciguerra dan.vinciguerra at gmail.com
Wed Feb 4 09:22:35 PST 2015


Você pode entender mais sobre o open ou a manipulação de arquivos através
dos manuais:
$ perldoc -f open

$ perldoc perlopentut

Só pra tentar explicar melhor....

Segundo a primeira referencia citada acima, Perl possuis as seguintes
formas de se abrir um arquivo:

open FILEHANDLE,EXPR
open FILEHANDLE,MODE,EXPR
open FILEHANDLE,MODE,EXPR,LIST
open FILEHANDLE,MODE,REFERENCE
open FILEHANDLE

Onde:

FILEHANDLE = variável referente a operação
MODE = forma de manipulação (escrita, leitura, leitura e escrita)
EXPR  = nome do arquivo

E onde as formas de utilização mais comumente encontradas são:

open(FH, '< arquivo/para/leitura.txt') or die "...";

Que poderia ser melhor escrita desta forma...
open my $fh, '<', 'arquivo/para/leitura.txt' or die "...";


Os FILEHANDLE, LOGFILE e INFILE a que você se refere são apenas nomes de
váriáveis que, assim como o cron, eu sugiro que mude para utilizar como
referencias usando $scalares.

O que determina como cada um irá se comportar é o MODE que pode ser
encontrado nas formas mais comuns como:

'<' para leitura
'>' para escrita (sobre escreve caso arquivo exista)
'>>' para escrita (adiciona ao final do arquivo caso ele exista)

Obs.: A supressão deste indica a abertura do arquivo pra leitura.


E é isso!!

Para concluir,

1. seu filehandle poderia se chamar até KLEBERRODRIGOEHOCARA que seria um
filehandle valido! ;)
2. leia as referencias no começo do e-mail
3. se tiver mais alguma duvida poste um pedaço do seu código pra ajudar o
pessoal a te ajudar

Grande abraço,

(se eu esqueci de algo alguém me ajuda ou me puxe a orelha) ;P



*Daniel Vinciguerra (@dvinciguerra)*
Web solution architect, perl dev, vegetarian, geek and co-founder at *Bivee*
bivee.com.br  -  github.com/Bivee

2015-02-04 14:15 GMT-02:00 Renato Santos <renato.cron at gmail.com>:

> Cara, estou achando que você está lendo um programa já feito, que esta
> usando *FILEHANDLE* em si, com esses nomes (LOGFILE, INLINE)
>
> O jeito mais seguro, é usar um FH dentro de uma ref,
>
> # ler em binario
> open(my $fh, '<:raw', '/tmp/foo.bin');
> while( my $somebytes = <$fh>){ . .. }
>
> # ler em utf8
> open(my $fh, '<:utf8', '/tmp/tmp.utf8');
> while( my $line = <$fh>){ . .. }
>
> # escrever em utf8
> open(my $fh, '>:utf8', '/tmp/tmp.utf8');
> print $fh "uma linha\n";
>
>
>
> 2015-02-04 14:07 GMT-02:00 Gabriel Vieira <gabriel.vieira at gmail.com>:
>
> Qual a diferença de comportamento que você observou?
>>
>> 2015-02-04 11:05 GMT-05:00 Kleber Rodrigo de Carvalho <
>> kleber.carvalho at gmail.com>:
>>
>> Pessoal,
>>>
>>> Estou escrevendo um programa em Perl, e preciso entender as
>>> diferenças entre os FILEHANDLE.
>>> Por exemplo, um programa lendo um arquivo usando LOGFILE se comporta
>>> diferente de um usando INFILE.
>>> Estou procurando na internet por:
>>>
>>> perl FILEHANDLE LOGFILE INFILE
>>> perl LOGFILE INFILE
>>>
>>> Mas não encontrei nada. Se encontra todos os tipos de FILEHANDLE já
>>> ajudaria.
>>> Será que alguém poderia me ajudar nisso?
>>>
>>> Muito obrigado
>>>
>>> Abraços
>>> Kleber Rodrigo de Carvalho
>>> Engenheiro de Software
>>> KleberCarvalho.com | (15) 9-9161-3362
>>> =begin disclaimer
>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>>
>>
>> --
>> Gabriel Vieira
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20150204/6802c15f/attachment.html>


More information about the SaoPaulo-pm mailing list