On Wed, Nov 12, 2008 at 13:51, JC Janos <[EMAIL PROTECTED]> wrote:
> Hi,
>
> The two cases in this test program both print out the same data; in
> this case, the 'whois record',
>
>  #!/usr/bin/perl
>  use strict;
>  use warnings;
>
>  my $ip = "1.2.3.4";
>
>  # CASE: variable
>  my $WHOIS1 = '/usr/bin/whois';
>  system("$WHOIS1 $ip");
>
>  # CASE: constant
>  use constant WHOIS2 => '/usr/bin/whois %s';
>  my $cmd = sprintf(WHOIS2, $ip);
>  system($cmd);
>
> Is either case the better or correct usage here?  Or are they simply
> interchangeable?
>
> --JC
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> http://learn.perl.org/
>
>
>


You may want to also look at Readonly*.  The major differences amongst

my $WHOIS1 = '/usr/bin/whois';
Readonly my $WHOIS2 = '/usr/bin/whois';
 use constant WHOIS3 => '/usr/bin/whois';

are:

$WHOIS1 can be modified (not good) and can't be optimized away by the
compiler (possible performance impact)
$WHOIS2 cannot be optimized away by the compiler (possible performance impact)
WHOIS3 cannot be interpolated into strings (annoying)

I tend to use the constant pragma, mostly because Readonly is not part
of Core Perl.  That said Readonly is a lot more flexible than the
constant pragma.  All of that said, the big problem here is that you
are using a program and then parsing its output.  You should really
look into using Net::Whois::Proxy or a similar module instead.  Using
external programs is generally a sign that you are doing something
wrong (unless the point of the script is to puppet string an external
utility).

* http://search.cpan.org/dist/Readonly/Readonly.pm
** http://search.cpan.org/dist/Net-Whois-Proxy/lib/Net/Whois/Proxy.pm
-- 
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to