Schrift
[thread]1757[/thread]

Links für Perl-Neulinge (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
J-jayz-Z
 2005-09-22 19:50
#17587 #17587
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich hab zu danken !
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
J-jayz-Z
 2005-09-22 20:00
#17588 #17588
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Okay, geändert. So besser?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Strat
 2005-09-22 20:10
#17589 #17589
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja

ein paar kleinigkeiten sind mir noch aufgefallen:
btw: bei Tk -> Hello World usw. faende ich persoenlich $mw oder $mainWindow sprechender als $main. Wenn sonst jemand mal $main::main sieht, ist er nur verwirrt.

weiters verwendest du einmal $exit, dann wieder $quit fuer einen Button; wenn es sich um einen Button handelt, dann ist es bei Tk meist besser, wenn da noch was button-maessiges im Variablenname vorkommt (da hat man i.d.R. eh viel zu viele variablen), z.B. $exitButton, $btn_exit, $buttonExit, ...

aber ist halt geschmackssache, und mein stiel ist sowieso der beste :-))
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-09-22 20:15
#17590 #17590
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei STDOUT umleiten:
Code: (dl )
open(STDOUT, ">stdout.txt") || die "Kann stdout.txt nicht öffnen!";

hier finde ich die folgende schreibweise schoener:
Code: (dl )
1
2
my $file = "stdout.txt";
open (STDOUT, "> $file") or die "Kann '$file' nicht öffnen!";

oder sogar (bei neueren Perl-Versionen):
Code: (dl )
1
2
my $file = "stdout.txt";
open (STDOUT, ">", $file) or die "Kann '$file' nicht öffnen!";


1. or finde ich besser lesbar als || (ausser man ist C-Programmierer), und es macht in diesem fall auch keine Probleme, wenn man aus versehen die Klammern um die open-parameter vergisst
2. wenn man einen dateinamen oefter benuetzt, dann immer in eine variable packen; sonst aendert man mal den dateinamen im open und vergisst, ihn bei der fehlermeldung auch zu aendern, und dann ist die fehlermeldung falsch, wenn was schiefgeht, und man sucht vielleicht an der falschen stelle.
3. am flexibelsten finde ich das konstrukt:
Code: (dl )
1
2
3
unless (open (STDOUT, ">", $file)) {
die "Kann '$file' nicht öffnen!";
}

weil da auch ein anfaenger einfach weitere aktionen reinschreiben kann (z.B. Datenbankverbindung trennen, ...); beim or die braeuchte man schon ein do oder so aehnlich.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
J-jayz-Z
 2005-09-22 20:16
#17591 #17591
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ähm, okay. Dein Stiel ist der beste... Kann ich nicht beurteilen *gg*
Deinen Stil kannst du natürlich als den besten bezeichnen, aber nun gut :D
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Strat
 2005-09-22 20:18
#17592 #17592
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
punkte mit tausenderstellen:
Code: (dl )
1 while $number =~ s/^([\+\-]?\d+)(\d\d\d)/$1.$2/;

finde ich eleganter
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
J-jayz-Z
 2005-09-22 20:21
#17593 #17593
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hmm, okay. Aber das war nicht von mir ^^
Wieso 1 while am Anfang ? ? ? Der Rest ist klar
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Strat
 2005-09-22 20:21
#17594 #17594
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
OOP:
Code: (dl )
sub new { bless {} }

ist was anderes als die vorhergehenden beispiele; da wird der aktuelle Namensraum verwendet, was problematisch werden kann, wenn man einen konstruktor in einer abgeleiteten klasse erben will
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-09-22 20:23
#17595 #17595
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=J-jayz-Z,22.09.2005, 18:21]Hmm, okay. Aber das war nicht von mir ^^
Wieso 1 while am Anfang ? ? ? Der Rest ist klar[/quote]
die while-schleife wird solange ausgefuehrt, solange was ersetzt werden kann. Eine while-schleife braucht jedoch einen block. Und einer der kuerzesten blocks ist ein wahres statement namens
1;
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-09-22 20:25
#17596 #17596
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
die seite gefaellt mir gut
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2005-09-22 15:22.