我有以下代码:
#!/usr/bin/env perl
for ($str = <>; $str != '`'; $str = <>) {
$str =~ tr/!-~/P-~!-O/;
print $str;
}
Run Code Online (Sandbox Code Playgroud)
但ROT47无法正常工作.ie
当我使用不在[1-9]中的字符开始$ str时退出(是的,这意味着0不起作用).
$str != '`'
Run Code Online (Sandbox Code Playgroud)
是一个数字比较.两者"0\n"和"`"(以及任何不以十进制数字或点开头的字符串)在数字上都为零,因此它们是相等的.
你打算使用字符串比较ne.
(另外,总是use strict;和use warnings;;后者会发现这个错误.)
一种更典型的写作方式是
while (my $str = <>) {
last if $str =~ /^`$/;
$str =~ tr/!-~/P-~!-O/;
print $str;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |