RE: OT: use problem (need interpolation)

2000-09-28 Thread Jerrad Pierce

Thanks...

as It turns out I had to use both a BEGIN{} to set the variables and an
eval{} around the use (don't ask, it's some rather ugly stuff...).

autouse wasn't quite whta I needed (the module I'm using contains no
functions, just a big hash)

>-Original Message-
>From: David Mitchell [mailto:[EMAIL PROTECTED]]
>Sent: Thursday, September 28, 2000 10:53 AM
>To: [EMAIL PROTECTED]
>Cc: [EMAIL PROTECTED]
>Subject: Re: OT: use problem (need interpolation)
>
>
>> From: Jerrad Pierce <[EMAIL PROTECTED]>
>> Is there anyway to fool perl into letting you do a:
>> 
>> use Foo ($bar, 'baz', 'quux');
>
>'use' lines are executed very early on during script loading:
>
>   use Foo x y z
>   
>is roughly equivalent to
>
>   BEGIN { require Foo; import Foo x y z }
>   
>so $bar is likely to be undefined unless you also set it in
>a BEGIN section, eg
>
>   BEGIN { $bar =  }
>   use Foo ($bar, 'baz', 'quux');
>
>or use 'require' instead of 'use' if you can tolerate the module being
>loaded late, eg
>
>   $bar = ;
>   require Foo;
>   import Foo ($bar, 'baz', 'quux');
>
>
>
>* Dave Mitchell, Operations Manager,
>* Fretwell-Downing Facilities Ltd, UK.  [EMAIL PROTECTED]
>* Tel: +44 114 281 6113.The usual disclaimers
>*
>* Standards (n). Battle insignia or tribal totems
>



Re: OT: use problem (need interpolation)

2000-09-28 Thread David Mitchell

> From: Jerrad Pierce <[EMAIL PROTECTED]>
> Is there anyway to fool perl into letting you do a:
> 
> use Foo ($bar, 'baz', 'quux');

'use' lines are executed very early on during script loading:

use Foo x y z

is roughly equivalent to

BEGIN { require Foo; import Foo x y z }

so $bar is likely to be undefined unless you also set it in
a BEGIN section, eg

BEGIN { $bar =  }
use Foo ($bar, 'baz', 'quux');

or use 'require' instead of 'use' if you can tolerate the module being
loaded late, eg

$bar = ;
require Foo;
import Foo ($bar, 'baz', 'quux');



* Dave Mitchell, Operations Manager,
* Fretwell-Downing Facilities Ltd, UK.  [EMAIL PROTECTED]
* Tel: +44 114 281 6113.The usual disclaimers
*
* Standards (n). Battle insignia or tribal totems




Re: OT: use problem (need interpolation)

2000-09-28 Thread Matthew Byng-Maddick

On Thu, 28 Sep 2000, Jerrad Pierce wrote:
> Is there anyway to fool perl into letting you do a:
> use Foo ($bar, 'baz', 'quux');
> ??
> Foo is only getting 'baz' and 'quux', the value of $bar is lost in the
> ether.
> I have tried many ways of trying to sneak it past but none seems to work...

use is syntactically equiavalent to
BEGIN
{
require Foo;
Foo->import(@argarray);
}

so $baz will need to be defined at compile time, ie. within its own BEGIN
block.

MBM

-- 
Matthew Byng-Maddick   Home: <[EMAIL PROTECTED]>  +44 20  8981 8633  (Home)
http://colondot.net/   Work: <[EMAIL PROTECTED]> +44 7956 613942  (Mobile)
Genius may have  its limitations,  but stupidity  is not thus handicapped.
 -- Elbert Hubbard