Hi Tassilo,

In article <[EMAIL PROTECTED]>, Tassilo Von Parseval wrote:
> On Sun, Jun 01, 2003 at 11:22:32AM +0200 Kevin Pfeiffer wrote:
> 
>> More problems trying to use constants...
>> 
>> I have:
>> 
>> use constant CFG => qq|$ENV{'HOME'}/.get_quiz|;
>> 
>> 
>> But I can't see how to make this work:
>> 
>> open DATA, "> CFG" or die "Couldn't open ", CFG, " for writing: $!\n";
>> 
>> With quote marks it creates a new file in the pwd called "CFG". (Maybe
>> it's time to get the Programming Perl book?)
> 
> A constant neither has the $ nor @ sigil in front so it wont
> interpolate in strings. Oddly enough you did the right thing in the 'or
> die' string. The second argument to open() is not different: It's just a
> string.
> 
> To get around that, you can use the three-argument form of open():
> 
>     open DATA, ">", CFG or die ...;

I was so close! (I quoted the '>' but I left out the comma following.)
 
> if your Perl is recent enough (>= 5.6.0). Or you use the
> interpolate-anything trick:
> 
>     open DATA, ">@{[ CFG ]}" or die ...;
> 
> The part between @{[ ]} is arbitry Perl-code that is executed in list
> context and the last expression evaluated in this Perl code is what gets
> eventually printed.

This seems too confusing here for me (but I will add it to my save file for 
future reference.)
     
> Btw: You probably shouldn't use the DATA handle. It's special in that it
> refers to anything that follows the __DATA__ or __END__ token in your
> scripts. It even is seekable so you can write a script that prints
> itself with the help of this filehandle.

I almost asked about this earlier - if a script can also write to itself. I 
wrote something to test it, but haven't had time to look up the seek 
functions, etc. I suppose this only makes sense in very limited situations 
(if at all)?

Thanks!

-K

-- 
Kevin Pfeiffer
International University Bremen

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to