brassmon_k: there are a few things that you need to do before you should start tackling issues like this. First, good formatting does not indicate good code, but poor formatting almost always indicates bad code. Further, any code over just a few lines needs to have strict and warnings turned on. There are exceptions to that rule, but you need to really apply and understand these rules before you break them. Also, try to factor out common elements in your code and then always, always, always test system calls for failure (in the code above, this is the open statement we're worried about).
Applying these rules of thumb to your code and using a split instead of a regex, we get the following:
#!/usr/bin/perl -w use strict; my $file = "/dave/MVPTEST/mvpdoc"; print "DateSearch = d\n"; print "Timesearch = t\n"; my $choice; do { print "Make Your Choice: "; chomp( $choice = <STDIN> ); } until ( $choice =~ /^[DdTt]/ ); chomp(my $data = <STDIN>); # this will be the date or the time open FILE, "< $file" or die "Cannot open $file for reading $!"; foreach my $line (<FILE>) { my ( $in_date, $in_time ) = (split /\s+/, $line)[4,5]; if ( ( $choice =~ /^[dD]/ && $data eq $in_date ) || ( $data eq $in +_time ) ) { print "\n$line\n"; } } close FILE;
There are plenty of ways to clean that up from there. As for your original question, check out the Date::Calc module.
Hope this helps and Happy New Year! :)
Cheers,
Ovid
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
In reply to (Ovid) Re: Get number ranges from files internally?
by Ovid
in thread Get number ranges from files internally?
by brassmon_k
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |