I don't have the camel book and could not find an online version. I
also don't see anything in the doc that ships with the perl
installation. But I did find this at
http://perldoc.perl.org/SelfLoader.html#The-__DATA__-token and it helps:

"The __DATA__ token tells the perl compiler that the perl code for
compilation is finished. Everything after the __DATA__ token is
available for reading via the filehandle FOOBAR::DATA..."

"Everything after the __DATA__ token is available for reading..." is
the part that I was unsure about. Now I know!

Thanks,
Phil


On Wed, May 2, 2012 at 10:01 AM, Rothenmaier, Deane
<deane.rothenma...@walgreens.com> wrote:
> See p. 68 of the third edition of the Camel book...
>
> "The __DATA__ token functions similarly to the __END__ token, but opens the 
> DATA filehandle within the current package's namespace, so that files you 
> require can each have their own DATA filehandles open simultaneously. For 
> more information, see DATA in Chapter 28."
>
> HTH,
>
> Deane Rothenmaier
> Programmer/Analyst - IT-StdCfg
> Walgreens Corp.
> 2 Overlook Point #N51022D
> MS 6515
> Lincolnshire, IL 60069
> 224-542-5150
>
> The more corrupt the republic, the more numerous the laws. -- Tacitus
>
> -----Original Message-----
> From: activeperl-boun...@listserv.activestate.com 
> [mailto:activeperl-boun...@listserv.activestate.com] On Behalf Of Phillip 
> Richcreek
> Sent: Wednesday, May 02, 2012 8:56 AM
> To: activeperl@listserv.activestate.com
> Subject: Inline test data
>
> A recent post used a nice feature for providing test data to a script.
> (See __DATA__ below) I've seen it before but never understood it. How does it 
> work? What signals the end of the data to the  while (my $line = <DATA>) { ? 
> Is this a type of here document? Can someone point me where it's descibed in 
> the perl doc?
>
> TIA,
> Phil
>
>
>
>> use warnings;
>> use constant {SECS_PER_DAY => 24 * 60 * 60}; use POSIX qw{strftime};
>>
>> my $startDate = strftime "%Y-%m-%d_", localtime(); my $endDate =
>> strftime "%Y-%m-%d_", localtime(time + 2 * SECS_PER_DAY); my $dateRE =
>> qr{\d{4}-\d{2}-\d{2}_};
>>
>> while (my $line = <DATA>) {
>>    if ($line =~ m/^start_date/) {
>>        $line =~ s/$dateRE/$startDate/g;
>>    }
>>    elsif ($line =~ /^end_date/) {
>>        $line =~ s/$dateRE/$endDate/g;
>>    }
>>    print $line;
>> }
>>
>> __DATA__
>> First line
>> start_date = '2012-04-29_00:00:00', '2012-04-29_00:00:00',
>> '2012-04-29_00:00:00', end_date   = '2012-05-01_00:00:00',
>> '2012-05-01_00:00:00', '2012-05-01_00:00:00', Last line
>>
>> HTH
>>
>> --
>> Brian Raven
> _______________________________________________
> ActivePerl mailing list
> ActivePerl@listserv.ActiveState.com
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
_______________________________________________
ActivePerl mailing list
ActivePerl@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to