l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
September 2: Social gathering
Next Installfest:
TBD
Latest News:
Aug. 18: Discounts to "Velocity" in NY; come to tonight's "Photography" talk
Page last updated:
2001 Dec 30 17:08

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Perl: A different approach to: Can I declare $main::...
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Perl: A different approach to: Can I declare $main::...



I got it to work:

It was the difference between $ref_hash->{key} and ${$ref_hash->{key}} (I'd
stored an address to a scalar in one of my values).

And I understand you're point, there is no difference to the sub if it gets

$ref_hash = { jay=>"lame at perl" }
sub ($ref_hash);

and

%hash = ( jay=>"lame at perl" )
sub (\%hash);

Thanks (as always) for the help
Jay

----- Original Message -----
From: "Micah Cowan" <micah@cowanbox.com>
To: <vox-tech@franz.mother.com>
Sent: Wednesday, August 08, 2001 3:00 PM
Subject: Re: [vox-tech] Perl: A different approach to: Can I declare
$main::...


> On Wed, Aug 08, 2001 at 01:44:04PM -0500, Jay Strauss wrote:
> > Thanks Ted,
> >
> > But the moral of my story is I should explain what I'm doing instead of
> > boiling the code down to my specific error.  That way you guys could
tell me
> > a better way.  So here it is:
> >
> > I'm using Getopt::Long, but I wanted some extra functionality.  So I
wrote a
> > wrapper that did some additional stuff (really good stuff).
Getopt::Long
> > requires an address of a hash, and an array of program argument/option
> > definitions.  So I can't use an ref to an anonymous hash, I need to
declare
> > a hash and pass the reference.  But my pgm is almost working but now I'm
> > getting an "Can't use string ("1") as a SCALAR ref while "strict refs"
in
> > use".  Don't really know why (it should work).
> >
> > Jay
>
> The above reasoning doesn't make sense.  Both
>
> my %arg = (quiet => "yep");
> &foo (\%arg);
>
> and
>
> my $arg = {quiet => "yep"};
> &foo ($arg);
>
> pass the address of a hash to &foo.  There is no possible way that &foo
> can tell whether you declared it as a "real" hash or an anonymous ones
> (a hash is a hash is a hash.  There is no "unreal" hash).
>
> However, I disagree that there is something wrong with declaring a
> local hash variable versus declaring a scalar which holds a reference
> to an anonymous hash.
>
> I'd need to see the relevant code (the actual lines where it fails) to
> diagnose the problem properly, but my hunch is that you're
> accidentally converting an array to a scalar somewhere.  Let's see the
> real code?
>
> Micah


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Appahost Applications
For a significant contribution towards our projector, and a generous donation to allow us to continue meeting at the Davis Library.