如何在perl中将\\ n更改为\ n

时间:2010-12-07 07:39:15

标签: perl

我有一个$ string,包括斜杠之后的特殊字符,例如“1234 \\ n567 \\ t”;
注意“\\ n”和“\\ t”都是两个char,而不是三个char。因此,当它们显示时,它们显示为“\ n”和“\ t”。

出于某种原因,我需要将字符串更改为:“1234 \ n567`efg \ t”。如何以简单的方式做到这一点? 这是我的代码,我认为可以改进:

            @src_array = split(//, $string);  
            @des_array = ();    
            $size = $#src_array + 1;  
            $converting = 0;  
            for ($i = 0, $j = 0; $i< $size; $i++){  
               if ($converting == 1) {  
                            # convert and replace '\\n' with '\n'  
                    $des_array[$j++] = $slash_char{$src_array[$i]};  
                    $converting = 0;  
               }  
               elsif ($src_array[$i] == '\\'){  
                    $converting = 1;  
               }  
               else {  
                    $des_array[$j++] = $src_array[$i];  
               }  
            }

my %slash_char = (  
        'a' => '\a',  
        'b' => '\b'    
...  
); 

2 个答案:

答案 0 :(得分:3)

为什么不:

s/\\n/\n/g;
s/\\t/\t/g;

使用tr///会很好,但是不能将两个字符转换为一个字符。

答案 1 :(得分:3)

嗯,简单的方法是使用String::Escape

use String::Escape 'unbackslash';

my $string = "1234\\n567\\t";
my $new_string = unbackslash($string);