Code Comments
Programming Forum and web based access to our favorite programming groups.Hi Perlers, I've seen a lot of tutorial or example code dealing with the POSIX module that does something like this: use POSIX ':sys_wait_h'; What does the ':' mean/do in the above line? --Errin
Post Follow-up to this messageErrin Larsen wrote:
> Hi Perlers,
>
> I've seen a lot of tutorial or example code dealing with the POSIX
> module that does something like this:
>
> use POSIX ':sys_wait_h';
>
> What does the ':' mean/do in the above line?
It's called a "tag" and is typically used to import a "basket" of symbols.
See "perldoc Exporter", under the heading "Specialised Import Lists"
For some reason this isn't documented in my copy of POSIX. But you can see
the symbols exported by running:
$ perl -MPOSIX -le 'print for @{$POSIX::EXPORT_TAGS{sys_wait_h}}'
WEXITSTATUS
WIFEXITED
WIFSIGNALED
WIFSTOPPED
WNOHANG
WSTOPSIG
WTERMSIG
WUNTRACED
(your system may show different values)
Post Follow-up to this message> Hi Perlers, > > I've seen a lot of tutorial or example code dealing with the > POSIX module that does something like this: > > use POSIX ':sys_wait_h'; > > What does the ':' mean/do in the above line? > Besides googling for it, try reading: perldoc perlipc perldoc perldoc -f waitpid perldoc POSIX --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.770 / Virus Database: 517 - Release Date: 9/27/2004
Post Follow-up to this messageOn Wed, 29 Sep 2004 11:32:58 -0400, Jim <jkipp5@comcast.net> wrote: > > > > > Besides googling for it, try reading: > perldoc perlipc > perldoc perldoc -f waitpid > perldoc POSIX > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.770 / Virus Database: 517 - Release Date: 9/27/2004 > > Thank you Bob, and Jim I have read about this. My question is more about the 'use' code then about the POSIX module. It's just a really big module that has a lot of these tags in it, it seems. Here's my problem: When I use the following in my code, it runs and works f ine: use POSIX 'setsid'; use POSIX 'errno_h'; use POSIX ':sys_wait_h'; However, when I try to combine those into one line: use POSIX qw/setsid errno_h :sys_wait_h/; Then I get the following error: # ismon.pl ":errno_h" is not exported by the POSIX module at /usr/perl5/5.6.1/lib/sun4-solaris-64int/POSIX.pm line 19 ":sys_wait_h" is not exported by the POSIX module at /usr/perl5/5.6.1/lib/sun4-solaris-64int/POSIX.pm line 19 Can't continue after import errors at /usr/perl5/5.6.1/lib/sun4-solaris-64int/POSIX.pm line 19 BEGIN failed--compilation aborted at ./ismon.pl line 3. First of all, I'm not putting a ':' in front of 'errno_h' in my code, but Perl seems to assume it's there ... why? Is there a difference between the two implementations above that I'm not seeing? --Errin
Post Follow-up to this messageErrin Larsen wrote: > When I use the following in my code, it runs and > works fine: > > use POSIX 'setsid'; > use POSIX 'errno_h'; > use POSIX ':sys_wait_h'; > > However, when I try to combine those into one line: > > use POSIX qw/setsid errno_h :sys_wait_h/; > > Then I get the following error: > > # ismon.pl > ":errno_h" is not exported by the POSIX module at > /usr/perl5/5.6.1/lib/sun4-solaris-64int/POSIX.pm line 19 > > ":sys_wait_h" is not exported by the POSIX module at > /usr/perl5/5.6.1/lib/sun4-solaris-64int/POSIX.pm line 19 > > Can't continue after import errors at > /usr/perl5/5.6.1/lib/sun4-solaris-64int/POSIX.pm line 19 > BEGIN failed--compilation aborted at ./ismon.pl line 3. > > First of all, I'm not putting a ':' in front of 'errno_h' in my code, > but Perl seems to assume it's there ... why? POSIX fixes up foo_h as :foo_h for some reason > Is there a difference > between the two implementations above that I'm not seeing? Exporter only does the special :tag processing if the *first* entry in the import list starts with one of the following characters : ! / So move :sys_wait_h to the front and it will work.
Post Follow-up to this messageOn Wed, 29 Sep 2004 12:27:03 -0400, Bob Showalter <bob_showalter@taylorwhite.com> wrote: > Errin Larsen wrote: << SNIP >> > > Exporter only does the special :tag processing if the *first* entry in the > import list starts with one of the following characters > > : ! / > > So move :sys_wait_h to the front and it will work. > Thanks Bob, that did it. I wonder why that is about Exporter? It seems rather counter-intuitive to m e. --Errin
Post Follow-up to this message
Show a Printable Version
Email This Page to Someone!
Receive updates to this thread
Powered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.