POSIX module

2004-09-29 Thread Errin Larsen
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

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




RE: POSIX module

2004-09-29 Thread Bob Showalter
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)

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




RE: POSIX module

2004-09-29 Thread Jim
 
> 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
 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Re: POSIX module

2004-09-29 Thread Errin Larsen
On Wed, 29 Sep 2004 11:32:58 -0400, Jim <[EMAIL PROTECTED]> 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?
> >
> 
> 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

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




RE: POSIX module

2004-09-29 Thread Bob Showalter
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.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Re: POSIX module

2004-09-29 Thread Errin Larsen
On Wed, 29 Sep 2004 12:27:03 -0400, Bob Showalter
<[EMAIL PROTECTED]> wrote:
> 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.

<< 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 me.

--Errin

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>