in reply to getting next 5 files according to hour

Use the modulo operator (%):
use 5.010; my $hour = (localtime)[2]; say $_ % 24 for $hour-1 .. $hour+2;

Replies are listed 'Best First'.
Re^2: getting next 5 files according to hour
by shekarkcb (Beadle) on Feb 21, 2012 at 07:36 UTC
    Thanks for the reply.

    Can you explain the logic?

    Thanks

      I could. But I rather have you read the documentation first, and if there is something you don't understand, you ask a more specific question.
      Modular arithmetic might be a new concept, so I'll outline it very briefly.

      In modular arithmetic, all numbers are reduced to a smaller cyclic subset of integers by the process of dividing by the modulus and taking the remainder. So if you count modulo four starting at zero, you begin normally: 0, 1, 2, 3 When you reach 4, the modulus, you go back to zero, because 4 divided by 4 is 1, with remainder 0. So this restarts the cycle.

      For your problem, the hours of the day are modulo 24 - and you can probably see how this applies from there.

        Thank you all for the reply.

        Thanks
Re^2: getting next 5 files according to hour
by bimleshsharma (Beadle) on Feb 21, 2012 at 13:06 UTC
    Here is code for the same. You need to change path to where that files are..
    my $hour = (localtime)[2]; my $nu=0; if($hour eq 0) {$hour= 23;} else {$hour--;} my @files1 = <dir path of you file>; i.e. <C:\\WINDOWS\\*.log>; while($nu < 6) { if($hour>23) {$hour = 0;} my $hr= sprintf("%02d",$hour); foreach my $file (@files1) { if($file =~ /_($hr)\.txt/ ) {print $file . "\n";} } $hour++; $nu++; }