【发布时间】:2015-12-08 04:44:39
【问题描述】:
我正在尝试制作一个经过审查的文字脚本, 我不知道为什么,但我的脚本没有正确审查这些词。 审查状态为80%~
这是我的代码:
#!/usr/bin/perl -w
use strict;
my @text;
my @cencoredText;
my $file = "blabla\\text.txt";
open(FH, "<", $file) or die "cant open file";
while(<FH>)
{
push(@text,$_);
}
close(FH);
my $cencoredFile = "blabla\\forbidden.txt";
open(FH2, "<", $cencoredFile) or die "cant open file";
while(<FH2>)
{
push(@cencoredText,$_);
}
close(FH2);
for(my $i=0; $i<@cencoredText; $i++)
{
for(my $j=0; $j<@text; $j++)
{
$text[$j] =~ s/${cencoredText[$i]}/censored/g;
}
}
这两个文件打开,perl 脚本从它们那里获取信息.. 我不知道怎么了。。 谢谢!
【问题讨论】:
-
"我的脚本没有正确地审查单词。审查状态是 80%"。这是什么意思? “适当地”是什么意思?您是否尝试过打印出每一行和要检查的每个单词,以确保您的文本处理是您认为应该的?
-
你没有咀嚼;您的“单词”末尾有换行符,因此它们不会经常匹配。
-
我正在使用 regexboddy,是的,我打印了数组中的每个单元格,看起来还不错
-
请不要将整个文件读入内存:这很浪费而且很少需要。相反,您应该逐行读取和处理文件。但是如果你确实需要读入一个数组,那么
my @text = <FH>就是你想要的——没有必要在循环中调用push
标签: perl