如何在perl中比较字符串? 使用严格; 使用警告; 使用时间:雇佣qw(睡眠); 使用Test::WWW::Selenium; 使用测试::更多“无计划”; 使用Test::异常; 使用Text::Table; 我们的($a,$critical); 打印“输入文本:”; $a=; 打印“输入临界值:”; $critical=; 打印$a; 打印$critical; | | | | | $sel->单击确定(//div[\@class='x-combo-list-internal']/div[8]”); my$v7=$sel->get_text(“//div[\@class='x-combo-list-internal']]/div[8]”; 打印($v7.“\n”); 打印($critical。“\n”); 如果($critical eq$v7) { 执行操作 } 其他的 { 不要做手术 }

如何在perl中比较字符串? 使用严格; 使用警告; 使用时间:雇佣qw(睡眠); 使用Test::WWW::Selenium; 使用测试::更多“无计划”; 使用Test::异常; 使用Text::Table; 我们的($a,$critical); 打印“输入文本:”; $a=; 打印“输入临界值:”; $critical=; 打印$a; 打印$critical; | | | | | $sel->单击确定(//div[\@class='x-combo-list-internal']/div[8]”); my$v7=$sel->get_text(“//div[\@class='x-combo-list-internal']]/div[8]”; 打印($v7.“\n”); 打印($critical。“\n”); 如果($critical eq$v7) { 执行操作 } 其他的 { 不要做手术 },perl,selenium-rc,Perl,Selenium Rc,我从cmd i'Last 45 Days'中输入的临界值以及从div[8]中检索的值以及在上述代码中存储在v7中的临界值也是相同的('Last 45 Days')。但是当它遇到if循环时,它不会执行该操作。还有其他方法来比较这类字符串吗?您可能在$critical上追加了一个换行符。尝试用chomp($critical)删除它 正如克鲁达斯所说,很可能在$critical的末尾有一个新行。您当然不会显示删除它的代码,而且get\u text返回的字符串不太可能以换行符结尾 我建议您使用(注意不要

我从cmd i
'Last 45 Days'
中输入的临界值以及从div[8]中检索的值以及在上述代码中存储在v7中的临界值也是相同的
('Last 45 Days')
。但是当它遇到if循环时,它不会执行该操作。还有其他方法来比较这类字符串吗?

您可能在$critical上追加了一个换行符。尝试用chomp($critical)删除它

正如克鲁达斯所说,很可能在
$critical
的末尾有一个新行。您当然不会显示删除它的代码,而且
get\u text
返回的字符串不太可能以换行符结尾

我建议您使用(注意不要使用
Data::Dumper
)来显示字符串。一旦你安装了模块,这只是一个简单的问题

use strict;
use warnings;
use Time::HiRes qw(sleep);
use Test::WWW::Selenium;
use Test::More "no_plan";
use Test::Exception;
use Text::Table; 
our ($a,$critical);

print "Enter text:";
$a = <>;
print "Enter critical value:";
$critical = <>;
print $a;
print $critical;
|
|
|
|
|
$sel->click_ok("//div[\@class='x-combo-list-inner']/div[8]");
my $v7 = $sel->get_text("//div[\@class='x-combo-list-inner']/div[8]");
print($v7 . "\n");
print($critical . "\n");
if ($critical eq $v7)
{
perform operations
}
else
{
don't perform operation
}

任何不可打印的内容都将显示为相应的可见转义码。

当我打印v7&critical的值时,两个都会在45天内打印相同的值。还有其他方法吗?@Jackie James:在你的输出中将看不到尾随的换行符。你无论如何都应该
chomp
从键盘输入,因为它将包含一个换行符,并且不是你感兴趣的数据的一部分。@Kludas&Borodin:非常感谢。我已经使用chomp删除了换行符。试着从每个字符串中转储八位字节,看看是否存在不可见的差异(不同类型的空格等)。例如,使用
ord
。如果像
eq
这样简单的东西没有达到您期望的效果,您必须问这样一个问题,“那么,这两个字符串有什么不同?”显示
use-Devel::Peek的输出;转储$critical;转储$v7
use Data::Dump;

dd $critical;
dd $v7;