logo       

Re: [Boston.pm] Subroutine definition: msg#00008

Subject: Re: [Boston.pm] Subroutine definition
On 9/11/07, Palit, Nilanjan 
<nilanjan.palit-ral2JQCrhuEAvxtiuMwx3w@xxxxxxxxxxxxxxxx> wrote:
> So I tried this using the following code, where %format_conv has an
> entry for each type of conversion needed with a list of items:
[...]
> When I run it, the 'defined' part works fine, but I get an error on the
> last line:
>
> Can't use string ("formatconv_bidir2in") as a subroutine ref while
> "strict refs" in use at bsdl_gen.pl line 238.

I'm very glad you have that check.  Read
http://perl.plover.com/varvarname.html and the two follow-up posts
that it links to to understand why you really don't want to
accidentally use symbolic refs.

> How do I get this sub call to work with the sub name in a variable?

Two options.  One is that you can locally turn off that check with

  no strict 'refs';

just before the subroutine call.  The other is that you could take a
reference to the subroutine and use that:

  my $sub = \&$subname;
  # time passes
  $sub->(@args);

(I've never quite understood why that's allowed by strict 'refs', but it is.)

A random incidental note.  It is very bad form to use map as a looping
construct.  If you're going to insist on writing that loop inline, use
an inline for loop.  Like this:

  $sub->($_) for @itemlist;  #Convert all the items

A second random incidental note.  I've found that it is generally a
bad idea to change the format of variables in place.  If for no other
reason than the fact that you're unable to give the variables an
unambiguous name.  Read chapter 11 in Code Complete 2 to learn more
about good variable names.  (Read the rest of the book while you're at
it...)

Cheers,
Ben


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
science.linguis...    culture.sf.lite...    video.mplayer.c...    yellowdog.gener...    ietf.rfc822/199...    emacs.help/2002...    redhat.release....    kernel.speakup/...    java.openejb.de...    debian.devel.gt...    xfree86.newbie/...    bug-tracking.ma...    pam/2003-05/msg...    games.devel.ope...    user-groups.lin...    music.pancham/2...    network.mq.deve...    web.html.genera...    arklinux.bugs/2...    linux.ecasound/...    qnx.openqnx.dev...    org.user-groups...    file-systems.sf...    trustix.contrib...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe