Schrift
[thread]7279[/thread]

Globale Variable in BEGIN Block setzen: Interaktion von my, our, undef und BEGIN (Seite 3)



<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
renee
 2005-09-20 20:09
#58045 #58045
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Crian: worauf beziehst Du den ersten Satz??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-09-21 15:54
#58046 #58046
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Auf phaylons Post davor.

Ok, der Satz war etwas blöd, das "nein" bezieht sich auf das "sind doch äquivalent" von phaylon.\n\n

<!--EDIT|Crian|1127303731-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Taulmarill
 2005-09-21 16:14
#58047 #58047
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
seit perl 5.8.4. werden "unnötige" vorbelegungen von variablen vom parser wegoptimiert. siehe http://search.cpan.org/src/NWCLARK/perl-5.8.4/Changes.
Quote
[ 22520]
Optimize away the assignment in the constructs C<my $s = undef>,
C<my @a = ()>, C<my %h = ()>.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2005-09-22 11:58
#58048 #58048
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
In dem Fall ist sie aber nicht unnötig :)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Taulmarill
 2005-09-22 12:32
#58049 #58049
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
deswegen auch die anführungszeichen. fakt ist, dass ich schon viele perlprogrammierer so etwas habe unnötigerweise tun sehen, deswegen wohl die optimierung. da es aber keine echte Perl-magie ist sonder nur eine parseroptimierung kann man zum einen relativ leicht (mit perl -MO=Deparse) herausfinden, was perl da optimiert. Zum anderen kann man diese veränderung auch verhindern, wenn man z.b. my ($foo) = undef; benutzt. die optimierung scheint nur im scalaren kontext zu greifen.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2005-09-22 15:11
#58050 #58050
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Naja, unnötig vielleicht, aber es sieht einfach schöner aus, wenn man eine Reihe von vorbelegten Variablen definiert und dazwischen eine auf undef "setzen will", das mit hin zu schreiben. Aber im Allgemeinen hast Du schon Recht.

Interessant ist, dass der Parser zu erkennen scheint, ob die Zuweisung unnötig ist oder nicht =)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2005-09-15 04:25.