What have you got so far?
It's hard for us to help you without seeing the current code.
| [reply] |
I have asked the user to give a name of a file, the userid, and time. I need to sort through
this file with the userid and time, keeping all information pertinent to that line, then later
print the results in order of line. I don't have much. This is my first attempt:
#!/usr/bin/perl
print "Please enter trace file name"
$tracefilename = <STDIN>;
chomp $tracefilename;
print "Please enter agent extension"
$agentextension = <STDIN>;
chomp $agentextension;
print "Please enter time"
$time = <STDIN>;
chomp $time;
open (THATFILE, "$tracefilename") ||
die "cannot open $tracefilename: $!";
foreach $line (@lines) {
# now I'm stuck!!!
| [reply] [d/l] |
| [reply] |
Hello,
Unfortunately your spec is still a little vague
(or I am confused). I will fill in the blanks with
a couple assumptions:
1. Assume the file lines have the format:
time,user id, other_parms where time is a
nice numeric that I can sort.
2. Assume you want to EXTRACT only info in that file
with matching user id and time, sort them by TIME, and
print them.
3. Later you want to print the EXTRACTED records by the order
that you read them in.
If so then I would add the following psudo code to your own::
my ($line,$timestamp,$userid,$stuff);
my %Seq;
my %TimeStamp;
my $i=1;
while ( $line=<THATFILE> ) {
# PARSE THE DATA LINE
($timestamp,$userid,seq,$params)=split(/,/,$line,4);
# DETERMINE IF WE WANT THE INFO ON THIS LINE
if ($userid=USERIDWEWANT) {
#STORE TO PRINT OUT LATER BY SEQUENCE WE FOUND THEM
$Seq{$i++}=$line;
#STORE TO PRINT OUT LATER BY SEQUENCE WE FOUND THEM
$TimeStamp($timestamp}=$line;
}
}
#PRINT BY TIMESTAMP
foreach $line (sort keys %TimeStamp) {
print "$TimeStamp{$line}\n";
}
#PRINT BY SEQUENCE
foreach $line (sort keys %Seq) {
print "$Seq{$line}\n";
}
| [reply] [d/l] |
I have asked the user to give a name of a file, the userid, and time. I need to sort through
this file with the userid and time, keeping all information pertinent to that line, then later
print the results in order of line. I don't have much. This is my first attempt:
#!/usr/bin/perl
print "Please enter trace file name"
$tracefilename = <STDIN>;
chomp $tracefilename;
print "Please enter agent extension"
$agentextension = <STDIN>;
chomp $agentextension;
print "Please enter time"
$time = <STDIN>;
chomp $time;
open (THATFILE, "$tracefilename") ||
die "cannot open $tracefilename: $!";
foreach $line (@lines) {
# now I'm stuck!!!
Edit 2001-03-12 by tye to add <code> tags | [reply] [d/l] |
Might wanna use a <code> tag to enclose your code to make it easier to read.
It sounds to me like you should probably be using a database module to store and sort your information, and then using SQL to perform the sorts and output the data the way you'd like.
DBI and DBD are perfect for these situations, and if you want to be able to open up the file and look at what the code is doing with your info, I'd suggest starting with DBD::CSV and working up from there. Cheers!
| [reply] |