Re: run cmd, writing output to log file

Ken Slater <[email protected]>
Newsgroups gmane.comp.lang.perl.beginners
Message-ID <CA+20WcmgvwjQSE_6QBJ8-raKkYsQGZ9YkCsDdj9K7snfDSsu2A@mail.gmail.com>
On Tue, Oct 5, 2021 at 3:35 PM reader <[email protected]> wrote:

> Whenever I don't do  scripting for longish periods, next time I start
> writing a perl script, an awful lot of useful info has flew right out
> of my pea brain.
>
> I was pretty sure I have written perl scripts that wrote to log files
> with out problems but the script below does not.  Instead if throws
> this error:
>
>   Can't use string ("/home/reader/t/var/log/fetchmail"...) as a symbol
>   ref while "strict refs" in use at ./pfetch line 18, <$ch> line 1.
>
>
> pfetch script
> -------       -------       ---=---       -------       -------
>
>   #!/usr/local/bin/perl
>
>   use strict;
>   use warnings;
>
>   my $cmd = "fetchmail -vvvc";
>
>   my $PaddedDateStr = pd();
>
>   open my $ch, '-|', "$cmd" or die
>     "Can't open $cmd: $!";
>
>   my $log = "/home/reader/t/var/log/fetchmail.log";
>   open my $fh, '>>', "$log" or die
>                   "Can't open $log: $!";
>
>   while (<$ch>) {
>     print $log "$PaddedDateStr $_";
>   }
>
>   print $log "\n";
>
>   close $log;
>
>   sub pd {
>     my ($mon,$mday,$year,$hour,$min,$sec,$wday) =
>                         (localtime(time))[4,3,5,2,1,0,6];
>     $year -= 100;  ## gives 2 digit (with %02d)
>     $mon  += 1;
>
>     my  $PDS = sprintf "%02d%02d%02d:%02d%02d%02d %d",
>                $year,$mon,$mday,$hour,$min,$sec,$wday;
>     return $PDS;
>   }
> -------       -------       ---=---       -------       -------
> At first glace, looks like $log was used instead of instead of $fh.
>
Ken
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.