On Dec 11, 2007 7:33 PM, Why Tea <[EMAIL PROTECTED]> wrote:
> my $s = "This is a string\nThis is line 2\n";
> print $s;
>
> The "\n" is interpreted as newline in the code above. But if the
> string (i.e. $s) is in a file, it will be printed literally as "\n" -
> how do I get Perl to treat it as newline?
>
> /Why Tea
snip

I can think of two ways off the top of my head: an evil one and a pita one.

The painful one is to use a substitution on the string to change all
occurrences of '\n' with "\n":

$s =~ s/\\n/\n/g;

Of course, this won't do the right thing for '\\n' (i.e. where you are
escaping the escape, not the n), so you have to run this substitution
first

$s =~ s/\\\\/\\/g;
$s =~ s/\\n/\n/g;

Of course, this only handles "\n", you would also need to add a
substitution for "\t", "\r", etc.  I won't go into the evil one, but
lets just say string eval is highly insecure (especially in a CGI
program).

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to