6 ms·
Here's a Perl example. This isn't optimally compact, but this is more or less how I would write a script like this if I had to put it into production at $work (
by jackmaney 13y ago
Here's a Perl example. This isn't optimally compact, but this is more or less how I would write a script like this if I had to put it into production at $work (maybe with an extra check to make sure that exactly two command line arguments were provided).
use strict;
use warnings;
open my $read,"<",$ARGV[0] or die $!;
my @lines = <$read>;
close $read;
open my $write,">",$ARGV[1] or die $!;
print $write $line foreach my $line(sort @lines);
close $write;
- hsmyers 13y agoIf version >= 5.10 you can drop the 'or die' and for that matter neither of the close statements are necessary(in any recent version).
- prakashk 13y agoPerl5 v12 and up: use v5.12; # enables strictures open my $in, "<", $ARGV[0]; open my $out, ">", $ARGV[1]; print $out sort <$in>; Perl6: sub MAIN( $in, $out ) { spurt( $out, open($in, chomp => False).lines.sort.join ) } [EDIT: fixed typo in first example]
- draegtun 13y agoHere's a couple of interesting Perl alternatives: my @files = map { IO::File->new($_->[0], $_->[1]) || die $! } ([shift, 'r'], [shift, 'w']); $files[1]->print( sort $files[0]->getlines ); $_->close for @files; And... use autodie; open my $out, '>', $ARGV[1]; print {$out} sort do {open my $in, '<', $ARGV[0]; <$in>};