Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Here documents in blocks (updated)

by AnomalousMonk (Archbishop)
on Dec 19, 2020 at 18:30 UTC ( [id://11125462]=note: print w/replies, xml ) Need Help??


in reply to Here documents in blocks

Win8 Strawberry 5.30.3.1 (64) Sat 12/19/2020 13:18:14 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings use 5.014; # for s/// with /r modifier print "Content-type: text/plain\n\n"; print "Test\n\n"; # sub undent { # works, but not as flexible # return $_[0] =~ s/^\s+//gmr; # } sub undent { my $text = shift; $text =~ s{ \A [^\n]* \n (\s*) }{}xms; my $dent = length $1; return $text =~ s{ ^ \s{0,$dent} }{}xmsgr; } if (1) { print undent " Here is some test text that can also be ragged with plenty of space at the start\n" } ^Z Content-type: text/plain Test Here is some test text that can also be ragged with plenty of space at the start
However, this has the disadvantage that you have to manually stick a newline at the end to get a nice block ending. But I suppose you could tack that on automatically with a .= "\n" or some such.
(Update: I realized after posting that I only tested with spaces as indentation characters, not tabs, which I never use anyway. I think the code would work with pure tab indents, but I haven't tested this. I doubt the code would work with a mixture of spaces and tabs used as indentation.)

Update: Yes,
    return $text =~ s{ ^ \s{0,$dent} }{}xmsgr . "\n";
seems to do it for the automatic newline text block end.


Give a man a fish:  <%-{-{-{-<

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11125462]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (3)
As of 2024-04-26 02:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found