我是 Perl 和一般编程的新手,我刚刚了解了正则表达式和替换运算符。
#!/usr/bin/perl
open(LEET, "leet.txt") or die "Can't open leet.txt: $!\n";
while($line = <LEET>) {
$line =~ s/4/a/gi, s/3/e/gi;
}
print $line;
为什么他不打印任何东西?我想制作一个 leet talk 翻译器,它可以打开一个文本文件并打印出翻译后的文本。
最佳答案
您只打印最后行。尝试将 print
移动到循环内:
while($line = <LEET>) {
$line =~ s/4/a/gi;
$line =~ s/3/e/gi;
print $line;
}
我还使用了两个单独的正则表达式替换,您无法按照问题中显示的方式将它们组合起来。
请注意,Perl 还具有 tr
运算符,这是一步执行两个(单字符)替换的另一种方法:
$line =~ tr/43/ae/;
关于regex - 为什么这个 perl prog 不打印翻译后的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7102260/