Beefy Boxes and Bandwidth Generously Provided by pair Networks kudra
go ahead... be a heretic
 
PerlMonks  

Re: My day with Damian Conway

by tachyon (Chancellor)
on Jun 30, 2001 at 16:08 UTC ( #92897=note: print w/ replies, xml ) Need Help??


in reply to My day with Damian Conway

I never saw any great problem with this:

sub Unindent { my $unindent = shift; $unindent =~ s/^[ \t]+//gm; return $unindent; } ... $message = Unindent <<" MESSAGE"; A fatal die was trapped by the $scriptname die nice routine: Time: $datetime List name: $list_name Script name: $scriptname Package: $package File: $file Line Number: $line Error Message: $message MESSAGE print $message; ....

cheers

tachyon </code>


Comment on Re: My day with Damian Conway
Download Code
Unindenting here-docs (Re: My day with Damian Conway)
by tye (Cardinal) on Jan 11, 2002 at 21:09 UTC

    Yes, that is fine. The problems come in when you want to strip some of the leading whitespace:

    print unindent( <<" END" ); Usage: $0 [flags] [args] Gropples the snarflog. -v Verbose. -t mode Mode of groppling to use. "mode" can be: fast Minimize execution time. hard Maximize decryption time. wide Minimize alphabet size. Do not use on UTF8 files. END
    Any attempt to write an unindent() for the above will run into problems in the face of 1) editors that insert tabs when maintenance work modifies the text, and 2) people who don't agree on how far apart tabstops should be set.

    The only solution I've found that I like goes something like this:

    sub unindent { s/^\s*\S//gm } print unindent( <<" END" ); .Usage: $0 [flags] [args] .Gropples the snarflog. . -v Verbose. . -t mode Mode of groppling to use. "mode" can be: . fast Minimize execution time. . hard Maximize decryption time. . wide Minimize alphabet size. .Do not use on UTF8 files. END

            - tye (but my friends call me "Tye")
      sub unindent { my $str = shift; (my $s) = $str =~ m/^(\s+)/; $str =~ s/^$s//gm; return $str; }

      This will look at the first line and extract that much leading whitespace from every line so does what you want without the .

      cheers

      tachyon

      s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

        Um, no, you missed the whole point.

        print unquote( <<" TEST" ); First line Second line Third line Fourth line TEST
        Tell me what that should produce and I'll tell you what my tab stops were set to and that you were wrong. :) (And don't be fooled by how your browser happens to display that code.)

                - tye (but my friends call me "Tye")

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (12)
As of 2014-04-17 14:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (449 votes), past polls