我的代码如下
my $string = $cells[71];
print $string;
这会打印字符串,但空格应该在其中有一个包含01 10
的框。我在Notepad ++中打开它,框变成了黑色GS
(我假设它是组分隔符)。
我在网上看了它说:
s/[^[:print:]]+//g
但是当我将字符串设置为:
my $string =~s/[^[:print:]]+//g
然后我运行程序:
4294967295
我如何解决这个问题?
我做了HOBBS所说的并且它有效...谢谢:)
无论如何我可以打印一个输入,其中每个字符都是(1001的方框)?
答案 0 :(得分:1)
在进行正则表达式匹配时,您需要小心编写$var =~ /pattern/
,而不是$var = ~ /pattern/
。当你使用第二个时,你正在进行/pattern/
,这是与$_
的正则表达式匹配,在标量上下文中返回一个数字。然后,您执行~
,它采用该数字的按位反转,然后($var =
)将结果分配给$var
。不是你想要的。
答案 1 :(得分:0)
您必须先分配变量,然后进行替换:
my $string = $cells[71];
$string =~ s/[^[:print:]]+//g;