Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^3: One-liner to append text at fixed column

by Veltro (Hermit)
on Nov 16, 2018 at 15:31 UTC ( [id://1225911]=note: print w/replies, xml ) Need Help??


in reply to Re^2: One-liner to append text at fixed column
in thread One-liner to append text at fixed column

Ok, I think I did not understand the original problem. I thought you were trying to 'align' all the comments from a text like this:

perl -E"say '.' x rand(80) . '# test comment' for 1..3" ......................# test comment .................................# test comment ...................................................................... +....# test comment

So eventually I came up with this which I think is too complex.

perl -E"say '.' x rand(80) . '# test comment' for 1..10" |perl -lpe " +/\s*#(.*)$|$/ && ( substr( $_, $-[0], length($_) ) = qq{ }x(68 - $-[ +0] + 2) . qq{ #$1} ) ............................................... + # test comment .......................................................... + # test comment ....................................... + # test comment ............................................................ + # test comment ...................................................................... +.... # test comment ...... + # test comment ........................................ + # test comment ............................... + # test comment ................................................... + # test comment ................................... + # test comment

Maybe it can be rewritten with a printf but I will leave it with this.

Replies are listed 'Best First'.
Re^4: One-liner to append text at fixed column
by LanX (Saint) on Nov 16, 2018 at 15:55 UTC
    > I thought you were trying to align all the comments from a text like this:

    Oh in this case I'd use the same "match-and-printf" construct, it's extremely flexible.

    D:\tmp>perl -E"say '.' x rand(70) . '# test comment' for 1..3" ....................# test comment ...................................# test comment .......................# test comment D:\tmp>perl -E"say '.' x rand(70) . '# test comment' for 1..20" |perl +-lpe " /(.*?)(#.*)/ and $_ = sprintf qq{%-68s %s},$1,$2" ..................... +# test comment .............................................................. +# test comment ..................................................................... + # test comment .................................... +# test comment .......................................................... +# test comment ............................................... +# test comment ............................................................ +# test comment ............. +# test comment ........................... +# test comment ............... +# test comment .............................. +# test comment .................................... +# test comment ................................................... +# test comment ................................. +# test comment ........................................................... +# test comment .......... +# test comment ....................................................... +# test comment ................................................................. +# test comment .......................................... +# test comment ................................................................ +# test comment

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (5)
As of 2024-04-23 06:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found