zoukankan      html  css  js  c++  java
  • [Perl] useless use of a constant in a void context

        Do you understand context? It freaked me out once or fifty times too. =) When perl is compiling your code, it looks at structures like these and decides on what "context" codehere() is in:
    codehere(); #void context 
    $c=codehere(); #scalar context 
    ($l)=codehere(); #list context 
    @a=codehere(); #list context 
    %h=codehere(); #list context 
    print codehere(); #list context 
    foreach (codehere()) { #list context 
    if ( 1 <= codehere() ) { #scalar context

    When you do something along the lines of this: $a=( codehere(),codehere() ); 

    then the $a= forces the right side into scalar context since perl can see you don't want a list so in scalar context, the right side isn't treated as a list but as a statement group. Thus, "," is an operator that forces void context on it's left-hand-side and passes on the whatever context it is in to it's right-hand-side. Since you strung together a series of values like this: $a = ( 2, 3, 4, 5, 6 ); the first four numbers are in void context and only the last item in the series is in scalar context. Thus your statement could be rewritten: 2; 3; 4; 5; $a = 6;

    And, bam!, from that you can see there are 4 constants in void context. Run either of those with perl -we on the command line and enjoy seeing the 4 warnings pop-up.

    BTW, $a = ( 1, 5 ); pulls no error. =) It seems that perl and in fact Perl treat 1; special.

  • 相关阅读:
    使用阿里云ECS安装HDFS的小问题
    退役回忆录嘤嘤嘤
    2018 ICPC北京 H ac自动机
    Educational Codeforces Round 54 (Rated for Div. 2) DE
    sa learning
    网络流learning
    Python模块logging
    Python模块unittest
    Linux /dev/shm
    Shell 字符串操作
  • 原文地址:https://www.cnblogs.com/sanquanfeng/p/3298278.html
Copyright © 2011-2022 走看看