Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

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"; }

Replies are listed 'Best First'.
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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://700585]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2017-10-18 02:56 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (241 votes). Check out past polls.