On Sat, Oct 13, 2001 at 04:30:08PM +0200, raptor wrote:
> I was looking at TPJ one-liners and saw this :
>
> #32 A trick for indenting here strings
>
> ($definition = <<'FINIS') =~ s/^\s+//gm;
> The five varieties of camelids are the familliar
> camel, his friends the llama and the alpaca, and
> the rather less well-known guanaco and vicuna.
> FINIS
>
> Courtesy of The Perl Cookbook
>
> It is very cool if we have a way to set this RegEx so that it executes in
> compile time.... I mean if we have the ability to set this, so that we have
> any funny formating we want w/o loosing the speed of parsing it at
> runtime...
There was a big hub-bub about this back when RFCs were flying around.
If I remember Apoc 2 correctly, it will work like so:
$definition = <<'FINIS';
The five varieties of camelids are the familliar
camel, his friends the llama and the alpaca, and
the rather less well-known guanaco and vicuna.
FINIS
The here-doc text will be stripped up to the indented terminator. So
in this case, all the leading whitespace will be stripped off.
Not only is it a bit faster than the s/^\s+//gm regex, but it is also
more flexible.
if( $self->feeling_snooty ) {
print <<'POEM';
Sometimes
form has to follow function
all over the page.
POEM
}
Rather than simply stripping the whitespace off the front, which would
lose the layout of the poem, it only strips as much as POEM is
indented. Like having s/^\s{4}//gm. So you get the equivalent of:
print
" Sometimes\n".
" form has to follow function\n".
" all over the page.\n";
--
Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/
Perl6 Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One
Home of da bomb