Beefy Boxes and Bandwidth Generously Provided by pair Networks DiBona
There's more than one way to do things
 
PerlMonks  

Sorting one column of results

by perlnoobster (Sexton)
on Nov 12, 2012 at 10:35 UTC ( #1003409=perlquestion: print w/ replies, xml ) Need Help??
perlnoobster has asked for the wisdom of the Perl Monks concerning the following question:

Hi Perl monks, I was wondering if someone could help me, I've constructed the following coding:
my $infile="orders.txt"; my $output2 = 'orders_today.txt'; open (OUT, "+>$output2"); open (FILE, $infile) or die "ERROR: File does not exist\n"; for (<FILE>) { my @text=(); #chomp; @text = split /\t/,$_; chomp @text; push (@connections,$text[0]); $sku{$text[0]}=$text[0]; $title{$text[0]}=$text[1]; print OUT "$text[10]\n$text[11]\nQuantity:$text[12]\n\n$text[16]\n +$text[17]\n$text[18]\n$text[19]\n$text[20]\n$text[21]\n$text[22]\n$te +xt[23]\n\n\n"; }
The coding basically opens a file and prints out another file with selected columns from the original file, all I need to do is sort it by $text 10 by (A to Z) Please can someone help me? Thank you

Comment on Sorting one column of results
Download Code
Re: Sorting one column of results
by choroba (Abbot) on Nov 12, 2012 at 10:40 UTC
    Instead of printing to OUT, push [@text] to an array. Then, sort the array by { $a->[10] cmp $b->[10] } and print map @$_ it.
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
      hello choroba, Thank you for replying, I have adjusted the coding to the following but it still does not work?, please help?
      my $infile="orders.txt"; my $output2 = 'orders_today.txt'; open (OUT, "+>$output2"); open (FILE, $infile) or die "ERROR: File does not exist\n"; for (<FILE>) { my @text =(); @text = split /\t/,$_; chomp @text; push (@text, $text[0]); push (@text, $text[1]); push (@text,$text[2]); push (@text,$text[3]); { $a->[10] cmp $b->[10] } print map @$_ }
        I assumed you knew more about Perl. My fault. When using a function you do not know yet, consult its documentation.
        Here is what I had in mind:
        #!/usr/bin/perl use warnings; use strict; my $infile = 'orders.txt'; my $output = 'orders_today.txt'; open my $IN, '<', $infile or die "ERROR: Cannot open '$infile': $!"; my @out; while (<$IN>) { chomp; my @text = split /\t/; push @out, [@text]; } open my $OUT, '>', $output or die "Cannot open '$output': $!"; print {$OUT} map "@$_\n", sort { $a->[10] cmp $b->[10] } @out;
        لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re: Sorting one column of results
by Anonymous Monk on Nov 12, 2012 at 10:41 UTC
    use sort, and then you're done

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2014-04-17 04:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (439 votes), past polls