in reply to Re: Re: My first Perl script
in thread My first Perl script

Hello there. Let me put in some revised code that I have done:
#!/usr/bin/perl #Variables $firewall_log = "/home/jwilliams/firewall.txt"; $my_new_log = "/home/jwilliams/extracted_log"; open(FW_LOG, $firewall_log) or die "$firewall_log open() failed: $!"; open(MYNEWFILE, ">>$my_new_log:") or die "$my_new_log open() failed: $!"; while ($line = <FW_LOG>) { if ($line =~ /kernel Temporarily blocking host/ || $line =~ /block +ed/) { # your line transformations would go here... print MYNEWFILE $line; } } close(FW_LOG); close(MYNEWFILE);
You are correct. The original reason why it was not working was there was a missing }. Once I placed that in, it was working.

I will add the i behind the trailing / just to make sure. Better to be cautious, than not cautious at all.

As far as the: open(MYNEWFILE, ">>$my_new_log:" is concerned, it was something that was suggested to me. Is it not needed? Do you have other recommendations?<p? Also, when the data is extracted, it somes out kinda clumpy. It is not nice and clean. What I mean is there are spaces between the data as well as spaces between each new line. For example:

data (spaces) data (spaces) data (spaces) data (spaces)

Spaces

New line like above

I was trying to get all the data to be smooth and clean.

Yes, I just picked up the Llama book today. I am planning on also ordering the Programming Perl and Perl Cookbook today as well. The more books, the better.

Thanks for your help. It was great. Hopefully my input will help as well.

Replies are listed 'Best First'.
Re: Re: Re: Re: My first Perl script
by Nkuvu (Priest) on Apr 10, 2003 at 21:19 UTC

    Personally I would change

    open(MYNEWFILE, ">>$my_new_log:") or die "$my_new_log open() failed: $!";
    to
    open(MYNEWFILE, ">>$my_new_log") or die "$my_new_log open() failed: $!";

    But that just means that the output file won't have a colon on the end. The colon isn't a valid filename character for Windows (if I recall correctly) and has special meaning on Macs. Not sure if it's a problem for Linux, though. I'd just remove it to be safe(r).

    Also note that the >> before the $my_new_log means "open for append". So if you run this script multiple times the same file will have the new results added at the end. So if you change the way the script works, make sure to look at the end of the file to see them. I've burned myself a few times on this -- wondering why my new changes weren't showing up in the results file... If you want to make a new output file every time (and overwrite the old one) you can change >> to >