Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^3: Sort log file alphabetically

by pc88mxer (Vicar)
on Jul 28, 2008 at 16:06 UTC ( #700585=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Sort log file alphabetically
in thread Sort log file alphabetically

You don't have to worry about the data staying with the identifier since that association is saved in the hash for the line.

Re-formatting the lines is just looping over @list:

my @keys = ...order you want the named keys in... for my $h (@list) { print join(",", $h->{first}, $h->{date}, map { $_." ".$h->{$_} } @keys), "\n"; }


Comment on Re^3: Sort log file alphabetically
Select or Download Code
Re^4: Sort log file alphabetically
by numberninja (Initiate) on Jul 28, 2008 at 16:46 UTC
    u were right about that, silly me and yet, now i have an incredibly trivial problem. For some reason, when i leave it as printing to the command window, it spews out the exact stuff that i want, yet when i tell it to print to a filehandle, the file is empty afterwards... here's my code:
    #! /usr/bin/perl print "File Location?"; my $data_file = <>; open(DATA, $data_file); my @list; while (<DATA>) { chomp; my (%hash, @rest); ($hash{first}, $hash{date}, @rest) = split(",", $_); for my $r (@rest) { my ($k, $v) = split(' ', $r, 2); $hash{$k} = $v; } push(@list, \%hash); }; my %seen; for (@list) { for (keys %$_) { $seen{$_}++ } }; delete $seen{first}; delete $seen{date}; my @allkeys = ('first', 'date', sort keys %seen); my @keys = (sort keys %seen); open(DATAOUT, ">1.temp"); while(<DATAOUT>) { for my $h (@list) { print DATAOUT join(",", $h->{first}, $h->{date}, map { $_." ".$h->{$_} } @keys), "\n"; } }
      while(<DATAOUT>) {

      attempts to read from DATAOUT, which you just opened for writing only. As a result, the test (successful read from DATAOUT) fails and the body of your while is not executed. If you had use warnings;, you would have been told that DATAOUT was open only for output.

      You don't need that while loop, the for loop will do the job you want done.

      You should always

      use strict; use warnings;
      It's also a GoodIdea to

      open(FH, ....) or die "error opening FH: $!";

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://700585]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (12)
As of 2014-08-27 17:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (248 votes), past polls