如何摆脱perl中的控制字符..具体[gs]?

时间:2011-09-13 17:35:08

标签: perl

我的代码如下

my $string = $cells[71];
print $string;

这会打印字符串,但空格应该在其中有一个包含01 10的框。我在Notepad ++中打开它,框变成了黑色GS(我假设它是组分隔符)。

我在网上看了它说:

s/[^[:print:]]+//g

但是当我将字符串设置为:

my $string =~s/[^[:print:]]+//g

然后我运行程序:

4294967295

我如何解决这个问题?

我做了HOBBS所说的并且它有效...谢谢:)

无论如何我可以打印一个输入,其中每个字符都是(1001的方框)?

2 个答案:

答案 0 :(得分:1)

在进行正则表达式匹配时,您需要小心编写$var =~ /pattern/,而不是$var = ~ /pattern/。当你使用第二个时,你正在进行/pattern/,这是与$_的正则表达式匹配,在标量上下文中返回一个数字。然后,您执行~,它采用该数字的按位反转,然后($var =)将结果分配给$var。不是你想要的。

答案 1 :(得分:0)

您必须先分配变量,然后进行替换:

my $string = $cells[71];
$string =~ s/[^[:print:]]+//g;