John, thanks for the succinct suggestion on the set in place edit
extension.....I'll humbly accept additional "yo here's how to simplify this
deal" examples. ;^)

I could still be doing a number of things wrong, I can launch the script ,
but it 'hangs', & my prompt doesn't return. I'm not getting an error, simply
an empty file in /data/dir/newlogs/ named *.new.  Confused whether the error
is occurring on read/write or open.  I think it's on writing?  Tried
changing:

 18               open ( NEWLOG, ">$newlogdir/$log.new" )  || die "Can't
create: $!\n";

Can't create: No such file or directory

while:

   18                  open ( NEWLOG, ">$newlogdir/*.new" )  || die "Can't
create: $!\n";

seems to be writing an empty file?

The script as it stands at present:

     1  #!/usr/bin/perl -w
     2  use strict;
     3  # try5.plx
     4  # open filehandle to read all .log files present in /dir
     5  # open filehandle to write matched lines to .new in /dir/newlogs
     6  # match lines
     7  ############################
     8  my $logdir = '/data/dir
     9  my $newlogdir = '/data/dir/newlogs';
    10  # set in place edit extension
    11  $^I = "$newlogdir/*.new";
    12
    13  chdir ( $logdir );
    14  # slurp all .logs into an array for looping
    15  my @rawlogs = glob( "$logdir/*.log" );
    16          foreach my $log ( @rawlogs ) {
    17                  open ( LOG, $log ) || die "Can't open file: $!\n";
    18                  open ( NEWLOG, ">$newlogdir/*.new" )  || die "Can't
create: $!\n";
    19                  while  ( <> ) {
    20                  # match lines that start with '#', contain
'CommunityID=399',
    21                  # or contain '/developersupport/testfiles', or
'/remotegadgets/marks'
    22
    23                  if (
m/^#|CommunityID\=399|\/developersupport\/testfiles|\/remotegadgets\/marks\/
gadget/ ) {
    24                  print NEWLOG;
    25                  }
    26          }
    27  }
    28  close LOG;
    29  close NEWLOG;

> -----Original Message-----
> To apply this to your original program you could do something like this:
> 
> 
> #!/usr/bin/perl -w
> use strict;
> 
> my $newdir = '/something';
> $^I = "$newdir/*.new";
> 
> while ( <> ) {
>     if (
> m!^#|CommunityID=399|/developersupport/testfiles|/remotegadgets/marks/gadg
> et!
> ) {
>         print;
>         }
>     }
> 
> __END__
> 
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to