From: Nikola Janceski <[EMAIL PROTECTED]>
> Okay, I was fuming mad. I have been struggling with a program that is
> supposed to send a simple e-mail... or so I thought!
> 
> for 2 days I have sent test e-mails all of them with headers in the
> e-mail and attachments all screwy. then I found the culprit.
> 
> at the top of my script is:
> 
> local $\ = "\n";
> 
> now ... isn't local supposed to "modify the listed variables to be
> local to the enclosing block, file, or eval." ?

No. That's "my".

> then why when I set this variable just before some code (Mail::Sender
> or MIME::Entity) that builds the e-mail and sends it, that the e-mail
> ALWAYS comes out wrong (wrong == improper formatting, wrong headers,
> bad multipart, etc.).

Yes that's what I would expect.

> use MIME::Entity;
> 
> local $\ = "\n";
> 
> my $top = MIME::Entity->build(
>     Type    => "multipart/mixed",
>                   From    => "nikola_janceski\@summithq.com",
>                                 To      =>
>                                 '[EMAIL PROTECTED]',
>     Subject => "something"
>     );
> ...

> Am I just misunderstanding the use of local?????????????????

Yes.

See this:

        sub foo {
                print "\$x = $x\n";
        }

        $x = "global value";
        foo();
        {
                local $x = "local value";
                foo();
        }
        foo();
        {
                my $x = "my value";
                foo();
        }
        foo();

Do you see? 
The "my $x = ..." "changes the value of $x" only for the block, while 
"local $x = ..." changes the value of $x UNTIL you finish the block.
That's a big difference.

What local does is this:
        1) it stores the value of the variable somewhere
        2) sets the variable to undef or whatever you told it to
        3) installs a "handler" that'll replace the value of the variable
         with whatever local stored when the execution leaves the block.

On the other hand "my" creates a NEW variable that's not accessible 
from anywhere outside the block.

You want to read MJD's "Coping with Scoping"
http://perl.plover.com/FAQs/Namespaces.html

Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to