String 如何在Perl中比较字母数字值?

String 如何在Perl中比较字母数字值?,string,perl,comparison,alphanumeric,String,Perl,Comparison,Alphanumeric,这是我的密码- print $cpu_arch."\n"; if ($cpu_arch eq'AMD64') { print "Remote machine is 64bit\n"; } 根据CPU体系结构,$CPU_arch返回x86或AMD64。 问题是,无论$cpu_arch返回什么,if循环条件都没有得到满足。我试着吃了$cpu拱门,但似乎也没用 您的代码是正确的。$cpu\u arch不包含AMD64,或者您错误地认为if条件为false(可能是因为缓冲) 以

这是我的密码-

print $cpu_arch."\n";  
if ($cpu_arch eq'AMD64') {      
    print "Remote machine is 64bit\n";
}
根据CPU体系结构,$CPU_arch返回x86或AMD64。
问题是,无论$cpu_arch返回什么,if循环条件都没有得到满足。我试着吃了$cpu拱门,但似乎也没用

您的代码是正确的。
$cpu\u arch
不包含
AMD64
,或者您错误地认为
if
条件为false(可能是因为缓冲)

以下内容可能有助于您检查
$cpu\u arch

use Data::Dumper;

{
   local $Data::Dumper::Useqq = 1;
   print(Dumper($cpu_arch));
}

你的代码是正确的。
$cpu\u arch
不包含
AMD64
,或者您错误地认为
if
条件为false(可能是因为缓冲)

以下内容可能有助于您检查
$cpu\u arch

use Data::Dumper;

{
   local $Data::Dumper::Useqq = 1;
   print(Dumper($cpu_arch));
}

字符串的运算符是
eq
。您的问题不在于操作员,而在于数据。很可能是缓冲不正确(更改
$|
变量)或
$cpu\u arch
有尾随空格。或者您可能正在寻找正则表达式匹配而不是文本匹配(然后您需要
/AMD64/

字符串的运算符是
eq
。您的问题不在于操作员,而在于数据。很可能是缓冲不正确(更改
$|
变量)或
$cpu\u arch
有尾随空格。或者您正在寻找正则表达式匹配而不是文本匹配(然后您想要
/AMD64/

您是否尝试过双引号,如“AMD64”?还有,你确定没有额外的空格吗?正则表达式比较可能更容易。您是否尝试过双引号,如“AMD64”?还有,你确定没有额外的空格吗?正则表达式比较可能更容易。谢谢!正则表达式工作得很好。正如您所提到的,缓冲可能有问题。正则表达式的工作表明这不是缓冲问题,而是一个尾随空格问题。当您说“缓冲不正确”时,您到底在说什么?这可能是不好的措辞。我的意思是,STDOUT没有刷新,所以看起来好像什么都没有打印,而实际上它是,但你的终端没有显示它。谢谢!正则表达式工作得很好。正如您所提到的,缓冲可能有问题。正则表达式的工作表明这不是缓冲问题,而是一个尾随空格问题。当您说“缓冲不正确”时,您到底在说什么?这可能是不好的措辞。我的意思是,STDOUT没有刷新,所以看起来好像什么都没有打印,而实际上它是,但您的终端没有显示它。