执行attatched代码时,输入f将返回:
Arthur Putie:923-835-8745:923-812-6789:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000
Barbara Kertz:385-573-8326:385-555-8321:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
Betty Boop:245-836-8357:245-876-7656:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500
Ephram Hardy:293-259-5395:293-222-3334:235 CarltonLane, Joliet, IL 73858:8/12/20:56700
输入l时返回与输入f相同的内容,根据名字排序。
print "Please choose either first or last name (f/l): ";
$type = <>;
chomp($type);
if ( $type == "f" ) {
system("sort list.txt");
} elsif ( $type == "l" ) {
system("sort -k2 list.txt");
} else {
print "Choice not recognized.\n";
}
但是,如果我在UNIX中手动执行命令,则命令按原样排序,([sort list.txt]是第一个名称alphabatized,[sort -k2 list.txt]是姓氏aplphabetized)
为什么会发生这种情况的任何想法,或解决方法的解决方法?我是perl的新手,所以我宁愿坚持使用UNIX命令替代方案,而不是纯粹的perl脚本解决方案。
答案 0 :(得分:5)
使用 eq 而不是 == ,您正在使用数字比较,您应该进行字符串比较。
这是一个经典的错误,我经常在匆忙中这样做而不考虑标量和我想要的东西。我在shell中进行了测试,现在可以正常工作了。