Home > Archive > PERL Beginners > September 2004 > POSIX module
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
|
|
| Errin Larsen 2004-09-30, 2:55 am |
| 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
| |
| Bob Showalter 2004-09-30, 2:55 am |
| Errin 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)
| |
|
|
> 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
| |
| Errin Larsen 2004-09-30, 2:55 am |
| On 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 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? Is there a difference
between the two implementations above that I'm not seeing?
--Errin
| |
| Bob Showalter 2004-09-30, 2:55 am |
| Errin 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.
| |
| Errin Larsen 2004-09-30, 2:55 am |
| On Wed, 29 Sep 2004 12:27:03 -0400, Bob Showalter
<bob_showalter@taylorwhite.com> wrote:
> Errin Larsen wrote:
<< SNIP >>
[color=darkred]
>
> 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 me.
--Errin
|
|
|
|
|