Thread welchen Programmierstil findet ihr lesbarer?
(13 answers)
Opened by lichtkind at 2010-08-10 20:43
Also in Pisa ist ein Buch quasi von der Rampe gefallen: wicked cool perl scripts. unter anderem taucht darin folgendes Beispiel auf.
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 use strict; use warnings; sub usage () { print STDERR "Usage $0 <unix|linux|dos|mac|apple>\n"; exit(8); } binmode(STDIN); binmode(STDOUT); my $eol = "\n"; if ($#ARGV != 0){ usage(); } if ($ARGV[0] eq 'linux') { $eol = "\n"; } elsif ($ARGV[0] eq 'unix') { $eol = "\n"; } elsif ($ARGV[0] eq 'dos') { $eol = "\r\n"; } elsif ($ARGV[0] eq 'apple') { $eol = "\r"; } elsif ($ARGV[0] eq 'mac') { $eol = "\r"; } else { usage(); } while (1) { my $ch; # Character from input # Read a character my $status = sysread(STDIN, $ch, 1); if ($status <= 0){ last; } if ($ch eq "\n"){ syswrite(STDOUT, $eol); next; } if ($ch eq "\r"){ my $next_ch; # Check for \r\n $status = sysread(STDIN, $next_ch, 1); if ($status <= 0){ syswrite(STDOUT, $eol); last; } # Check for \r\n if ($next_ch eq "\n"){ syswrite(STDOUT, $eol); next; } syswrite(STDOUT, $eol); $ch = $next_ch; } syswrite(STDOUT, $ch); } daraus machte ich Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 use feature ":5.12"; sub usage { die "Usage $0 <unix|linux|dos|win|mac|apple>\n" } usage() if $#ARGV != 0; my $eol; given ($ARGV[0]){ when ([qw(unix linux)]){ $eol = "\n" } when ([qw(dos win)]) { $eol = "\r\n" } when ([qw(apple mac)]) { $eol = "\r" } default { usage() } } binmode(STDIN); binmode(STDOUT); my $last; while (sysread(STDIN, my $ch, 1) > 0) { if ($ch eq "\r" or $ch eq "\n"){ syswrite(STDOUT, $eol) unless $last eq "\r" and $ch eq "\n"; } else { syswrite(STDOUT, $ch) } $last = $ch; } P.S. ja mit regex gehts sicher noch kürzer Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher Es beginnt immer mit einer Entscheidung. |