Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: strict.pm

by dsb (Chaplain)
on Feb 28, 2001 at 19:35 UTC ( [id://61426]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to strict.pm

Very much enjoyed your review. I do, however, have some questions.

1. I understand the idea of a symbolic reference, but I'm not sure how you'd go about creating one. I'd like to know that so I can avoid it. Might it be something like this:

$a = "Amel"; $b = \$a; # $b is a 'hard' reference $c = $b; # $c is a 'symbolic' reference?
Is this correct? The perlref docs say that a symbolic ref are names of other variables. So in the case above, is $c a symbolic ref because it merely holds as its value another variable that is a hard ref. Or is $c just a deeper hard ref?

2. I looked up 'strict' in the Camel book and it said: "If no import list is given to use 'strict;', all possible restrictions upon unsafe Perl constructs are imposed." My question is: What exactly is an unsafe construct, and what is it that makes it unsafe?(OK that's 2 questions...sorry)

I'm trying to better understand why 'strict' is safer. I use it all the time and the code I write is usually "safe", but I don't know why it would be unsafe.

Thanks for all your help.

Amel - f.k.a. - kel

Replies are listed 'Best First'.
(tye)Re: strict.pm
by tye (Sage) on Feb 28, 2001 at 20:09 UTC

    You create a symbolic reference like this:

    $a= "this";
    Doesn't look like a symbolic reference, does it? But it is. It isn't the creating of symbolic references that is a problem; it is using symbolic references. You use a symbolic reference just like you use a regular reference. So:
    $b= $$a;
    is where we have a problem. But it is only a problem if $a doesn't contain a real (non-symbolic) reference. That is why use of symbolic references (and not creation of them) is only caught at run time.

    Like I said elsewhere, "unsafe" doesn't make a lot of sense to me in discussing strict.pm. strict.pm helps Perl to catch things that are probably simple programmer mistakes. By catching them explicitly, you usually save time in trying to find the mistake and fix it.

            - tye (but my friends call me "Tye")

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://61426]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.