[Tech] Mi serve un perlista :)

Franco Bagnoli franco.bagnoli@unifi.it
Ven 23 Feb 2007 08:07:01 CET


On 2/22/07, DrumFire <dpphln@tin.it> wrote:
> Supponendo di voler dare in pipe ad un processo perl il CustomLog di un
> apache, ho configurato apache cosi':
>
> CustomLog "| antani.pl" vhosts
>
> E i file antani.pl e' cosi' fatto:
>
> #!/usr/bin/perl
> $| = 1;
> umask 022;
>            open LOGFILE, ">>/usr/local/apache2/logs/supercazzula.log";
> while (<STDIN>)
> {
>            print LOGFILE;
> }
>            close LOGFILE;
>
> E' banalmente tratto da un esempio trovato online. Il tipo online dice che
> funziona, a me invece non funge una mazza. Quando restarto apache, il
> processo antani.pl viene tirato su dall'interprete perl, crea il file
> supercazzula.log , ma non lo riempie. Ovviamente faccio accessi al
> sito.
>
> Mi sto perdendo qualcosa?

forse questo, da perlop:

           while (defined($_ = <STDIN>)) { print; }
           while ($_ = <STDIN>) { print; }
           while (<STDIN>) { print; }
           for (;<STDIN>;) { print; }
           print while defined($_ = <STDIN>);
           print while ($_ = <STDIN>);
           print while <STDIN>;

       This also behaves similarly, but avoids $_ :

           while (my $line = <STDIN>) { print $line }

       In these loop constructs, the assigned value (whether assignment is
       automatic or explicit) is then tested to see whether it is defined.
       The defined test avoids problems where line has a string value that
       would be treated as false by Perl, for example a "" or a "0" with no
       trailing newline.
-- 
Franco Bagnoli <franco.bagnoli@unifi.it> <franco.bagnoli@gmail.com>
Dipartimento di Energetica & Centro Dinamiche Complesse
Universita' di Firenze, via S. Marta, 3 I-50139 Firenze, Italy.
Tel. +39 0554796592, fax: +39 0554796342



Maggiori informazioni sulla lista flug-tech