Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 区别于;52“;52岁?_Perl - Fatal编程技术网

Perl 区别于;52“;52岁?

Perl 区别于;52“;52岁?,perl,Perl,伙计们,perl并不像我想象的那么简单,我只是转向了操作符,我写了一些代码,但我无法理解编译器是如何处理它们的 $in = "42" ; $out = "56"+32+"good"; print $out,; 上面代码的输出是88,好的东西到哪里去了?现在让我们看看另一个 $in ="42"; $out="good52"+32; print $out ; 对于这些,输出是32。问题是,我们刚才存储在$out中的善在哪里消失了,值52在“”之间,为什么编译器只是将值打印为32,而不是剩

伙计们,perl并不像我想象的那么简单,我只是转向了操作符,我写了一些代码,但我无法理解编译器是如何处理它们的

$in = "42" ;

$out = "56"+32+"good";

print $out,;
上面代码的输出是88,好的东西到哪里去了?现在让我们看看另一个

$in ="42";

$out="good52"+32;

print $out ;
对于这些,输出是32。问题是,我们刚才存储在$out中的善在哪里消失了,值52在“”之间,为什么编译器只是将值打印为32,而不是剩余的文本

$in=52;

$in="52"; 
两者都做同样的工作“52”不作为一个文本工作。因为我们加上“52”+32等于84。发生了什么事

$in = "hello";

$in = hello; 

两者都做同样的工作?或者它们是否不同,但如果我打印,则会给出相同的输出。这只会吞噬我的大脑。这太令人困惑了,因为当“52”或“52”和“hello”或“hello”做相同的工作时,它们为什么会引入。我只需要解释一下上述代码为什么会出现这种情况。

在perl中,是数字上下文中的字符串(如使用
+
运算符时)转换为数字

在perl中,您可以使用
(点)运算符连接字符串,而不是
+

如果使用
+
,perl将尝试将所有操作数解释为数字。这对数字表示的字符串很有效,否则将得到0。这解释了您看到的内容

$in=52;

$in=“52”

两者都做同样的工作“52”不作为一个文本工作。因为当我们加上“52”+32它给84

这里的问题不在于变量定义。一个是字符串,另一个是数字。但当您在数字表达式(
+
)中使用字符串时,它将转换为数字

关于你的第二个问题:

  • $in=“hello”
    如您所期望的那样定义字符串

  • $in=hello;
    只会将hello符号(无论定义如何)复制到变量上。这实际上不是“严格”perl,如果在文件中设置
    使用严格;
    ,perl会对此表示不满


  • 在perl中,数字上下文中的字符串(如使用
    +
    运算符时)被转换为数字

    在perl中,您可以使用
    (点)运算符连接字符串,而不是
    +

    如果使用
    +
    ,perl将尝试将所有操作数解释为数字。这对数字表示的字符串很有效,否则将得到0。这解释了您看到的内容

    $in=52;

    $in=“52”

    两者都做同样的工作“52”不作为一个文本工作。因为当我们加上“52”+32它给84

    这里的问题不在于变量定义。一个是字符串,另一个是数字。但当您在数字表达式(
    +
    )中使用字符串时,它将转换为数字

    关于你的第二个问题:

  • $in=“hello”
    如您所期望的那样定义字符串

  • $in=hello;
    只会将hello符号(无论定义如何)复制到变量上。这实际上不是“严格”perl,如果在文件中设置
    使用严格;
    ,perl会对此表示不满

  • 首先,读一读

    您的问题是,
    +
    是一个数学加法,它对字符串不起作用。如果您使用它,Perl将假定您在处理数字,因此会丢弃任何不起作用的内容

    要连接字符串,请使用

    $str = "blah " . "blah " . "blah";
    
    “52”
    52
    之间的区别而言,没有区别。因为Perl中没有任何东西(命令、注释等)可以以数字开头,编译器不需要引号来知道该做什么。

    首先,请阅读

    您的问题是,
    +
    是一个数学加法,它对字符串不起作用。如果您使用它,Perl将假定您在处理数字,因此会丢弃任何不起作用的内容

    要连接字符串,请使用

    $str = "blah " . "blah " . "blah";
    

    至于
    “52”
    52
    之间的区别,没有区别。因为没有区别(命令、注释等)在Perl中,可以从数字开始,编译器不需要引号来知道该做什么。

    在Perl中,
    +
    是一个数字运算符。它试图将其两个操作数解释为数字。
    51
    是数字51。
    “51”
    是一个包含两个数字的字符串,
    +
    运算符尝试将该字符串转换为一个数字,即51,并在计算中使用它。
    “hello”
    是一个包含五个字母的字符串,当
    +
    运算符尝试将其解释为一个数字时,它等于0(零)

    因此,你的第一个例子是:

    $out = "56"+32+"good";
    
    这就像:

    $out = 56 + 32 + 0;
    
    您的
    打印
    然后在输出时将其转换为字符串,得到88


    在perl中,
    +
    运算符将其参数视为数字,并尝试将非数字的任何内容转换为数字运算符用于连接字符串:如果操作数不是字符串,它将尝试将其转换为字符串。

    在Perl中,
    +
    是数字运算符。它尝试将其两个操作数解释为数字。
    51
    是数字51。
    “51”
    是一个包含两个数字的字符串,
    +
    运算符尝试将该字符串转换为一个数字,即51,并在计算中使用它。
    “hello”
    是一个包含五个字母的字符串,当
    +
    运算符尝试将其解释为一个数字时,它等于0(零)

    因此,你的第一个例子是:

    $out = "56"+32+"good";
    
    这就像:

    $out = 56 + 32 + 0;
    
    您的
    打印
    然后在输出时将其转换为字符串,得到88

    在perl中,
    +
    运算符将其参数视为数字,并尝试转换任何非数字的内容