Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

How do you store a line of info from a file that you later need to sort?

by Anonymous Monk
on Mar 12, 2001 at 22:46 UTC ( [id://63891]=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I need to print all information that hold two conditions (known user and time). Once that is identified, I need to sort the result of all the conditions based on the line or sequence numbers. I will need to make two passes, I think, but need to hold all information that pertains to the two condition of user and time. Something with hash, arrays, and split, but I need help with the combo.
  • Comment on How do you store a line of info from a file that you later need to sort?

Replies are listed 'Best First'.
Re: How do you store a line of info from a file that you later need to sort?
by baku (Scribe) on Mar 12, 2001 at 23:23 UTC

    What have you got so far?

    It's hard for us to help you without seeing the current code.

      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!!!

        ...and if you'd get a proper login for this site, then you could edit your own replies rather than duplicating them.

                - tye (but my friends call me "Tye")
        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"; }
      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

        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!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://63891]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (8)
As of 2024-04-18 09:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found