[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