Pagoda wrote: > Can I improve the performance of script by using constant? > > Which is the better one? > > use constant const => 1e-12 > > or > > my $const = 1e-12 >
the current implmentation of constant is that when you say: use constant const => 1e-12; it's basically translated into: sub <caller>::const(){ 1e-12; } where <caller> is replaced by the caller's package. so for example: #!/usr/bin/perl -w use strict; use constant const => 1e-12; print const; __END__ is bascially translated into: #!/usr/bin/perl -w use strict; sub main::const(){ 1e-12; } print const; __END__ which when Perl's optimizer comes in, translates it into: #!/usr/bin/perl -w use strict; print 1e-12; __END__ that's how you achive the constantness of a variable and a bit of performance increase. it has roughly the same affact as saying: [panda]# perl -MO=Deparse -e 'sub const(){1e-2} print const' print 0.01; -e syntax OK notice the function disappear. i would recommand that you use constant whenever possible regardless of whether it really makes your code goes faster because of the gain of readability. btw, you statment: my $const = 1e-21; is not a const at all. it's just a scalar. david -- s,.*,<<,e,y,\n,,d,y,.s,10,,s .ss.s.s...s.s....ss.....s.ss s.sssss.sssss...s...s..s.... ...s.ss..s.sss..ss.s....ss.s s.sssss.s.ssss..ss.s....ss.s ..s..sss.sssss.ss.sss..ssss. ..sss....s.s....ss.s....ss.s ,....{4},"|?{*=}_'y!'+0!$&;" ,ge,y,!#:$_(-*[./<[EMAIL PROTECTED],b-t, .y...,$~=q~=?,;^_#+?{~,,$~=~ y.!-&*-/:[EMAIL PROTECTED] ().;s,;, );,g,s,s,$~s,g,y,y,%,,g,eval -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]