On Tue, Jun 07, 2005 at 08:23:43AM -0700, Bryan R Harris wrote:
> 
> >>> Any ideas?
> >>  
> >> Wrap the use() statement in an if block.
> >> 
> >>     if ( $^O eq 'darwin' ) {
> >>         use POSIX;
> >>     } else {
> >>         use POSIX qw(:sys_wait_h);
> >>     }
> >> 
> >> Will that work?

No.

> > Only if you wrap that in a BEGIN block.

And not even then.

> >                                         Remember, 'use' happens at
> > compile not run time.

This is true, but BEGIN happens at compile time too so you've not gained
much.

> Here's what I tried:
> 
> **************************************
> BEGIN {
>     if ( $^O eq 'darwin' ) { use POSIX; }
>     else { use POSIX qw(setsid nice :sys_wait_h); }     # line 14
> }
> 
> ... but it still errors out:

> Any other ideas?

"perldoc -f use" reminds us that "use Module LIST" is exactly
equivalent to

    BEGIN { require Module; import Module LIST; }

so:

BEGIN
{
    require POSIX;
    POSIX->import($^O ne "darwin" ? qw(setsid nice :sys_wait_h) : ())
}

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

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


Reply via email to