[SP-pm] FILEHANDLE LOGFILE or INFILE

Kleber Rodrigo de Carvalho kleber.carvalho at gmail.com
Wed Feb 4 11:44:19 PST 2015


Pessoal,

Muito obrigado pela ajuda.

Eu estava com 2 dúvidas.

1) LOGFILE or INFILE

Achei LOGFILE or INFILE eram tipos de filehandle para leitura e
escrita de arquivo. Me desculpe, descrobri que são apenas nomes de
várias.

2)

> Minha duvida é:

 > seek($filehandler, 0, 2);
 > $curreof = tell($filehandler);
 >  print("curreof=" . $curreof . "\n");

 > Porque quando eu executo esse trecho de código acima usando
LOGFILE, eu recebo curreof=56666091

Descobri que esse 56666091 (Gabriel, Renato, Daniel Vinciguerra e
Daniel ) na verdade é o tamanho do arquivo em bytes/caracteres.

Muito obrigado a todos pela ajuda.

Abraços
Kleber Rodrigo de Carvalho
Engenheiro de Software
KleberCarvalho.com | (15) 9-9161-3362


2015-02-04 15:51 GMT-02:00 Daniel de Oliveira Mantovani
<daniel.oliveira.mantovani at gmail.com>:
> BTW, você está lendo o arquivo de log do WebSphere Application Server,
> SystemOut.log mesmo que você consiga implementar o "tail" que você está
> tentando implementar, você vai ter problemas pois o WebSphere Application
> Server "rotate" o arquivo, sendo assim o seu programa vai perder o ID do
> descritor de arquivos e vai parar de funcionar. Para resolver o problema,
> além de você implementar o seu "tail", você precisa ficar verificando se o
> ID do SystemOut.log mudou. É fácil de implementar e você vai aprender vários
> conceitos de Unix-like do caminho, estamos aqui para ajudar.
>
> 2015-02-04 15:45 GMT-02:00 Daniel de Oliveira Mantovani
> <daniel.oliveira.mantovani at gmail.com>:
>
>> Kleber, tem um livro chamado Advanced Programming In the Unix Environment.
>> Eu recomendo você ler o capítulo 3 - File I/O a sua dúvida não tem a ver com
>> Perl e sim com conceitos de O.S.
>>
>> 2015-02-04 15:10 GMT-02:00 Renato Santos <renato.cron at gmail.com>:
>>
>>> seu programa já está feito, alguem que criou esses nomes e filehandles.
>>>
>>> o seek esta mandando ir para a ultima posicao (3 parametro com valor 2).
>>> o tell esta mandando retornar a posicao atual.
>>>
>>> signfica que o LOGFILE esta na posicao 56666091(bytes/char?)
>>>
>>> 2015-02-04 15:01 GMT-02:00 Kleber Rodrigo de Carvalho
>>> <kleber.carvalho at gmail.com>:
>>>
>>>> Olá
>>>>
>>>> Disponibilizei meu código aqui: http://pastebin.com/T6AGHm2n
>>>>
>>>>
>>>> Minha duvida é:
>>>>
>>>>  seek($filehandler, 0, 2);
>>>>  $curreof = tell($filehandler);
>>>>  print("curreof=" . $curreof . "\n");
>>>>
>>>>
>>>> Porque quando eu executo esse trecho de código acima usando LOGFILE,
>>>> eu recebo curreof=56666091
>>>> O que isso significar?
>>>>
>>>> Obrigado
>>>>
>>>> Abraços
>>>> Kleber Rodrigo de Carvalho
>>>> Engenheiro de Software
>>>> KleberCarvalho.com | (15) 9-9161-3362
>>>>
>>>> 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>:
>>>>
>>>> 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
>>>
>>>
>>>
>>>
>>> --
>>> Saravá,
>>> Renato CRON
>>> http://www.renatocron.com/blog/
>>> @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
>>>
>>
>>
>>
>> --
>>
>> -dom
>>
>> --
>>
>> Daniel de Oliveira Mantovani
>> Business Analytic Specialist
>> Perl Evangelist /Astrophysics hobbyist.
>> +55 11 9 8538-9897
>> XOXO
>
>
>
>
> --
>
> -dom
>
> --
>
> Daniel de Oliveira Mantovani
> Business Analytic Specialist
> Perl Evangelist /Astrophysics hobbyist.
> +55 11 9 8538-9897
> XOXO
>
> =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
>


More information about the SaoPaulo-pm mailing list