l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
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::...

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);


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?


LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
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:
Sunset Systems
Who graciously hosts our website & mailing lists!