in reply to breaking long lines in my code

Potentially dangerous (untested)...
perl -i.bak -ne's{^print\s\"(.*?)\"\;$}{my(@str)=split(/(.{76})/,$1); +"print ".join(",\n\t",map(qq,"$_",,@str)).";"}ge;print' file
update
#!/usr/bin/perl -wT use strict; while(<DATA>) { chomp; if( m{^(?:print\s\"(.*)\"\;)$}g ) { splittor($1); next; } print $_."\n"; } exit; sub splittor { my $str = shift; # my ( @str ) = ( $str ) =~ m/(.{1,60})/gs; my ( @str ) = grep $_, split /(.{1,60})/, $str; print 'print '; print join ( ",\n\t", map {'"'.$_.'"'} @str ); print ';'."\n"; return undef; } __END__ print "I am smelling like a rose that somebody gave me on my birthday +death bed, I am smelling like a rose that somebody gave me ... yeah!\ +n"; print "123456789123456789123456789123456789123456789123456789123456789 +123456789123456789\n."; ###### this is what the output shoud look like (does look like) print "I am smelling like a rose that somebody gave me on my birthd", "ay death bed, I am smelling like a rose that somebody gave m" +, "e ... yeah!\n"; print "123456789123456789123456789123456789123456789123456789123456", "789123456789123456789\n.";

 
______crazyinsomniac_____________________________
Of all the things I've lost, I miss my mind the most.
perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"

Replies are listed 'Best First'.
(cLive ;-) Re: breaking long lines in my code
by cLive ;-) (Prior) on Feb 08, 2002 at 05:01 UTC
    Ah, but what if the print statement's indented?
    #!/usr/bin/perl -wT use strict; while(<DATA>) { chomp; if( m{^(\s+)(?:print\s\"(.*)\"\;)$}g ) { splittor($1,$2); next; } print $_."\n"; } exit; sub splittor { my $indent = shift || ''; my $str = shift; # quick hack for accurate count my $tabcount=0; $tabcount++ for ($indent =~ /\t/g); # assuming tab == 4 spaces my $maxlength = 60-length($indent)-($tabcount*3); my ( @str ) = grep $_, split /(.{1,$maxlength})/, $str; print "${indent}print "; print join ( ",\n$indent\t", map {'"'.$_.'"'} @str ); print ';'."\n"; return undef; }
    or something like that (untested).

    cLive ;-)