On Fri, 8 Nov 2002, Alan C. wrote:

> Hello,
> 
> This must be easy. But I've not yet enough experience with Perl's control
> structures.
> 
> perl mysort.pl infile.txt > outfile.txt
> 
> The stack of numbers with colons below reside within infile.txt
> 
> 120:2
> 126:2
> 13:15
> 140:3
> 14:3
> 141:3
> 14:3
> 15:11
> 
> My task or goal is to get each of them lines over into outfile.txt (as re
> ordered lines) with all of the \d\d: (2 digits then colon) up at top of file
> then with the 3 digits colon underneath
> 
> How to set up a twice through instead of only 1 pass through of the
> infile.txt?  (and get all of the 2digits on 1st pass, then get all of the 3
> digits on second pass)?  Or, same task/goal done even yet a different way is
> ok too.
> 
> #!/perl/bin/perl -w
> # mysort.pl
> while ($line = <>) {
>     if ($line =~ m/\b\d\d(?=:)/) {
>     print $line;
>         if ($line =~ m/\b\d\d\d(?=:)/) {
>         print $line;
>         }
>     }
> }
> 
> That above gets/snags all the 2 digits only. There's no 3 digits to
> outfile.txt

This should work

#!/usr/bin/perl -w
use strict;

my @sort_arr = sort {index($a, ':') <=> index($b, ':')} <>;
print @sort_arr;

# perldoc -f sort
# perldoc -f index



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to