Thread RDW #5 - Rätsel der Woche 5 (63 answers)
Opened by Crian at 2004-08-06 12:22

DS
 2004-08-09 15:46
#85520 #85520
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
Hm, du zählst nur Nicht-Whitespaces... aber die müssen schon auch gezählt werden, oder?

Code: (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
#!perl

use strict;
use warnings;

my @prog = grep  -f, @ARGV;
   @ARGV = grep !-f, @ARGV;

foreach my $prog (@prog) {
 my $code = `perl -MO=Deparse,-sC,-p $prog`;
 my $eingabe = ($code =~ /[\$\@]ARGV/) ? 'ARGV' : 'STDIN';
 open (DATEI,$prog);
   chomp (my $shebang = <DATEI>);
   my $inhalt = join '', <DATEI>;
 close (DATEI);
 $inhalt =~ s/(?<![\w\$])#.*?$//gm;
 $inhalt =~ s/(?:^[\s\n]+|[\s\n]+$)//gs;
 my ($pp) = ($shebang =~ /^#!.*? ([^#]*)/);
 $pp =~ s/\s+$//;
 my $zeichen = length($inhalt) + length($pp||''); # Zeichen = Inhalt + Parameter nach "#!...perl "
 print $zeichen, " Zeichen...\n";
 print $eingabe eq 'ARGV' ? `perl $prog @ARGV` : `echo @ARGV|perl $prog`;
 print "\n\n";
}

Die Kommentare einfach vergessen, das Ding war mal noch ein wenig länger, weil ich erst via eval den Code von B::Deparse ausführen wollte, und dazu mußte ich noch ein tie über STDIN klatschen und dafür sorgen, dass der Code auch paßt...

Aufrufen z.B. mit perl blablabla.pl rdw05_foo.pl rdw05_bar.pl ... abcd, gibt für jedes Script die Ausgabe aus + die Anzahl der Zeichen. :)

Edit: Einrückungen angepaßt und Kommentare gelöscht
Edit: Bugfix die erste...\n\n

<!--EDIT|DS|1092053897-->

View full thread RDW #5 - Rätsel der Woche 5