代码之家  ›  专栏  ›  技术社区  ›  ewok

perl:字符串插值内的增量变量

  •  0
  • ewok  · 技术社区  · 9 年前

    ++ 字符串插值中的运算符?我尝试了以下几点:

    my $i = 0;
    foreach my $line (@lines) {
        print "${i++}. $line\n";
    }
    

    Compile error: Can't modify constant item in postincrement (++)

    2 回复  |  直到 7 年前
        1
  •  6
  •   ikegami Gilles Quénot    9 年前

    赤裸裸的 i 相当于 "i" ,那么你在做什么 "i"++ .

    print($i++, ". $line\n");
    

    更简单:

    print("$i. $line\n");
    ++$i;
    

    将值嵌入字符串的一个好方法是 sprintf / printf

    printf("%d. %s\n", $i++, $line);
    

    use strict

    Bareword "i" not allowed while "strict subs" in use
    

    奇怪的是,这个错误发生在你提到的错误之后。

        2
  •  4
  •   dgw    9 年前

    您可以使用 ${\($var++)} 在插值变量时增加变量。

    use strict ;
    use warnings ;
    
    my $var = 5 ;
    
    print "Before:     var=$var\n" ;
    print "Incremented var=${\($var++)}\n" ;
    print "After:      var=$var\n" ;
    

    Before:     var=5
    Incremented var=6
    After:      var=6
    

    但我建议,如评论中所述,不要使用此代码,因为使用 printf 更容易书写和阅读。

    推荐文章