Thank all now I am able to progress :

file1  i am able to extract the start and end timestamp
file 2  i am able to extract the timestamp

used the following

my $t1 = Time::Piece->strptime('Feb 23 01:10:28 2018', '%b %d %H:%M:%S
%Y'); coming from file1

my $t2 = Time::Piece->strptime('02/23/18 01:10:33', '%m/%d/%y %H:%M:%S');
     coming from file2

my $t3 = Time::Piece->strptime('Feb 23 01:10:36 2018', '%b %d %H:%M:%S
%Y');  coming from file 1

if ($t2 > $t1 and $t2 < $t3) { ... }   till here it working fine

 now I would like to print all lines from file2 starting from  t2 02/23/18
01:10:33 till very next timestamp which will be  greater than t3 :


for example the file2  would look like this:

===========================================================================================================

 LOG file opened at 02/23/18 01:10:33

ERR-05007:   Warning: Intra source concurrency disabled because the
preprocessor option is being used.

Field Definitions for table OPATCH_XML_INV

eject rows with all null fields

  Fields in Data Source:


ERR-04095:failed: Unable to create patchObject

Possible causes are:

 "

 LOG file opened at 04/26/18 06:10:33

===========================================================================================================
This logfile may have other time but i would to extract only the above
lines because messages occured between t1 and t3 after I extract these i
want to print the error lines for example ERR-05007

the issue I am facing if there are multiple error in the file it is
printing for each occurance of  ERR-05007 instead it should print only the
error lines between t1 and t3 from file2

Please advice ,

thanks,

On Thu, Oct 25, 2018 at 6:44 AM Martin McCormick <marti...@suddenlink.net>
wrote:

> Someone brought to my attention that I had failed to define a
> couple of variables in the sample code I posted and they were
> quite right.  I don't mind sharing my work but the entire
> application I wrote to get a brief local weather summary is
> 242 lines and I was trying to stay close to the topic, here, so I
> had shortened it and shortened it a bit too much.  Here is sample
> code that will actually run.  If you want to experiment with it,
> it should work fron anywhere in the world but practically, I
> doubt it works outside the united states though people in other
> countries can look up weather in US cities if you first get on the
> noaa.gov web site
>
>   http://noaa.gov
>
> and enter the city name you are interested in.  If you have a US
> postal zip code, that will work.  What you want is an xml file
> containing the local weather conditions for that location.  You
> will also get latitude and longitude which can help you get
> sunrise and sunset data from another web site that needs those
> data to give you the right table.
>
> In other words, you must set $wxfile to the name of the file for
> your city of interest.
>
>         This code downloads the file for Stillwater, Oklahoma and
> the information in the xml file says that the recommend pickup
> time is 15 minutes past the hour so it modifies the time stamp to
> show 15 minutes past your current hour.  When you look at the
> code, you will see that it compares the current number of
> localtime seconds to the mtime value of the present file.  It
> will not get it again until 3600 seconds or 1 hour has passed
> since 15 minutes past the hour in which you downloaded it.
>
> Here is working code.  I did run it through perltidy but no
> telling what the mailing process will do so you will need to
> probably run perltidy again after you save the code.
>
>         I am sorry for any confusion I caused.
>
> Cut here.
>
> #!/usr/bin/perl -w
> use strict;
> use warnings::unused;
> use Data::Dumper;
> use XML::Simple;
> use File::Basename;
> use Cwd;
> use File::stat;
> use Time::Local;
> my $homedir = "/tmp";
> my @t       = localtime(time);
> my $utcsec  = timelocal(@t);
> my $wxfile  = 'display.php?stid=KSWO';
>
> #I want that file to end up in a specific directory so:
> my $wxpath                = $homedir . "/" . $wxfile;
> my $day                   = 86400;                           #seconds
> my $hour                  = 3600;
> my $gmt_offset_in_seconds = timegm(@t) - timelocal(@t);
> my $tzoffset              = $gmt_offset_in_seconds / 3600;
>
> #many thanks to whoever wrote the quick way to determine TZ
> #offset from utc
>
> my $wxlast_update_time;
>
> #Grab conditions from NOAA if the file is stale or missing.
> if ( !stat($wxpath) ) {    #The file is not there.
>     system(
>         "curl -s -o $wxpath 'http://w1.weather.gov/xml/current_obs/$wxfile
> '");
>
>     #Change the mtime to a quarter past last hour.
>     my $when = timelocal( 0, 15, $t[2], $t[3], $t[4], ( $t[5] - 100 ) );
>     utime $when, $when, "$wxpath";
> }         #The file is not there.
> else {    #what normally happens
>     my $wxstatRef = stat($wxpath);
>     $wxlast_update_time = $wxstatRef->mtime();
>     my $wxage = ( $utcsec - $wxlast_update_time );
>     if ( $wxage >= $hour ) {    #File needs to be refreshed.
>
>         #The file should not be more than 3600 seconds old.
>         system(
>             "curl -s -o $wxpath '
> http://w1.weather.gov/xml/current_obs/$wxfile'"
>         );
>
>         #Change the mtime to a quarter past.
>         my $when = timelocal( 0, 15, $t[2], $t[3], $t[4], ( $t[5] - 100 )
> );
>         utime $when, $when, "$wxpath";
>     }    #File needs to be refreshed.
> }    #what normally happens
>
> # create object
> my $xml = new XML::Simple;
>
> # read XML file
> my $data = $xml->XMLin("$wxpath");
>
> print Dumper($data);
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>
>

-- 
Asad Hasan
+91 9582111698

Reply via email to