Loading ...
Sorry, an error occurred while loading the content.

Variable Interpolation

Expand Messages
  • Sumit
    Hi, I have a small doubt. I am familiar that Perl can do variable interpolation and hence we can give scalar values as string forms. I was trying this script
    Message 1 of 20 , Dec 18, 2001
    • 0 Attachment
      Hi,
      I have a small doubt. I am familiar that Perl can do variable interpolation and hence we can give scalar
      values as string forms. I was trying this script which gave me strange results.
      $str = "123";
      $str1 = "456";

      print "1. $str|$str1\n"; # Prints 1. 123|456
      print "1. $str&$str1\n"; # Prints 1. 123&456

      print "2. $str_$str1\n"; # Prints 2. 456

      However if I give a backslash before the underscore, I get the output as I want (123_456).
      What problem does Perl have with '_' ???

      Thanks,
      Sumit.



      [Non-text portions of this message have been removed]
    • Daniel Gardner
      ... it s not having a problem with the _, it thinks that it s part of the variable name you re trying to use. ie. it thinks you re trying to use a variable
      Message 2 of 20 , Dec 18, 2001
      • 0 Attachment
        Tuesday, December 18, 2001, 3:32:45 PM, you wrote:

        > I have a small doubt. I am familiar that Perl can do variable interpolation and hence we can give scalar
        > values as string forms. I was trying this script which gave me strange results.
        > $str = "123";
        > $str1 = "456";

        > print "1. $str|$str1\n"; # Prints 1. 123|456
        > print "1. $str&$str1\n"; # Prints 1. 123&456

        > print "2. $str_$str1\n"; # Prints 2. 456

        > However if I give a backslash before the underscore, I get the output as I want (123_456).
        > What problem does Perl have with '_' ???

        it's not having a "problem" with the _, it thinks that it's part of
        the variable name you're trying to use. ie. it thinks you're trying to
        use a variable called '$str_' (which is perfectly valid).


        ta,
        daniel
      • Godwin Stewart
        ... The underscore character can be used in variable names, so Perl thinks your trying to print the variable $str1_ followed by $str2. $str1_ is undefined so
        Message 3 of 20 , Dec 18, 2001
        • 0 Attachment
          On Tue, 18 Dec 2001 10:32:45 -0500, "Sumit" <sumit_827@...> wrote:

          > However if I give a backslash before the underscore, I get the output as I
          > want (123_456).
          > What problem does Perl have with '_' ???


          The underscore character can be used in variable names, so Perl thinks your
          trying to print the variable $str1_ followed by $str2.

          $str1_ is undefined so it prints nothing.

          If you want to force Perl to use $str1 you should put the name in curlies:

          print "2. ${str1}_$str2\n";


          --
          ____________________________________________
          | G. Stewart -- gstewart@... |
          | Port de Pontille, FR-37500 CHINON, FRANCE. |
          ____________________________________________
        • Adrian Stovall
          _ is a valid character to use in a variable name. Since you didn t include warnings, perl never mentioned that the variable was uninitialized, it just
          Message 4 of 20 , Dec 18, 2001
          • 0 Attachment
            '_' is a valid character to use in a variable name. Since you didn't
            include warnings, perl never mentioned that the variable was uninitialized,
            it just interpolated "$str_" as "", which is correct, since you assigned
            values to "$str" and "$str1", but not "$str_".

            >-----Original Message-----
            >From: Sumit [mailto:sumit_827@...]
            >Sent: Tuesday, December 18, 2001 9:33 AM
            >Subject: [PBML] Variable Interpolation
            >
            >
            >Hi,
            >I have a small doubt. I am familiar that Perl can do variable
            >interpolation and hence we can give scalar
            >values as string forms. I was trying this script which gave me
            >strange results.
            >$str = "123";
            >$str1 = "456";
            >
            >print "1. $str|$str1\n"; # Prints 1. 123|456
            >print "1. $str&$str1\n"; # Prints 1. 123&456
            >
            >print "2. $str_$str1\n"; # Prints 2. 456
            >
            >However if I give a backslash before the underscore, I get the
            >output as I want (123_456).
            >What problem does Perl have with '_' ???
            >
            >Thanks,
            >Sumit.
            >
            >
            >
            >[Non-text portions of this message have been removed]
            >
            >
            >------------------------ Yahoo! Groups Sponsor
            >---------------------~-->
            >Unlimited calling with 3-way conferencing. Only $1/Mo.
            >with CrystalVoice! FREE trial. Click Here.
            >http://us.click.yahoo.com/Hb1xVB/HxbDAA/ySSFAA/ndFolB/TM
            >---------------------------------------------------------------
            >------~->
            >
            >Unsubscribing info is here:
            >http://help.yahoo.com/help/us/groups/groups->32.html
            >
            >Your use
            >of Yahoo! Groups is subject to
            >http://docs.yahoo.com/info/terms/
            >
            >
          • mail meda
            Hi Friends, Can you please let me know how to get the content of a value of the variable . For Eg: my $type = shift; my $f_group= PBML ; my $f_lang= perl ;
            Message 5 of 20 , Jan 2, 2006
            • 0 Attachment
              Hi Friends,

              Can you please let me know how to get the content of a " value of the
              variable ".
              For Eg:

              my $type = shift;
              my $f_group='PBML';
              my $f_lang='perl';
              my $f_os='linux';
              my $ref = "f_$type";

              Where $type can be group,lang or os which is found during the runtime.

              How to get the result of the above in $ref variable.

              Thanks in advance.


              [Non-text portions of this message have been removed]
            • KalyanRaj
              hi all, guide me if i m wrong. I slightly modified the code #!/usr/bin/perl sub reference { $type = shift; $f_group= PBML ; $f_lang= perl ; $f_os= linux ; $ref
              Message 6 of 20 , Jan 2, 2006
              • 0 Attachment
                hi all,

                guide me if i'm wrong.

                I slightly modified the code

                #!/usr/bin/perl
                sub reference {
                $type = shift;
                $f_group='PBML';
                $f_lang='perl';
                $f_os='linux';
                $ref = "f_$type";
                }
                reference(perlgroup);
                print $ref;

                $ref will contain the value of $type which is given at run-time. as you
                mentioned $type = shift , I assumed a subroutine and passed value of $type
                from the subroutine "reference". when we run the program $ref will have
                f_perlgroup, where the value of $type will be substituted in $ref.

                we need to be very careful with variable interpolation with single and
                double quotes.

                when we print $ref with single quotes , value of $type will not be
                substituted. Variable interpolation will takes place only if we have double
                quotes.

                hope this has helped you ... if i assumed anything wrong guide me further.

                thanks,
                KalyanRaj

                -----Original Message-----
                From: perl-beginner@yahoogroups.com
                [mailto:perl-beginner@yahoogroups.com]On Behalf Of mail meda
                Sent: Monday, January 02, 2006 4:40 PM
                To: perl-beginner@yahoogroups.com
                Subject: [PBML] Variable Interpolation


                Hi Friends,

                Can you please let me know how to get the content of a " value of the
                variable ".
                For Eg:

                my $type = shift;
                my $f_group='PBML';
                my $f_lang='perl';
                my $f_os='linux';
                my $ref = "f_$type";

                Where $type can be group,lang or os which is found during the runtime.

                How to get the result of the above in $ref variable.

                Thanks in advance.


                [Non-text portions of this message have been removed]



                Unsubscribing info is here:
                http://help.yahoo.com/help/us/groups/groups-32.html
                Yahoo! Groups Links
              • mail meda
                Hi Raj, The code you gave just returns the name of the variable and not the value in it. Your code with call reference(group) gave f_group and not its value
                Message 7 of 20 , Jan 2, 2006
                • 0 Attachment
                  Hi Raj,

                  The code you gave just returns the name of the variable and not the value in
                  it.
                  Your code with call 'reference(group) gave 'f_group' and not its value
                  'PBML'.
                  Any idea ?

                  Thanks for your efforts.

                  Expecting more response..

                  Bye



                  On 1/2/06, KalyanRaj <kalyanrajs@...> wrote:
                  >
                  > hi all,
                  >
                  > guide me if i'm wrong.
                  >
                  > I slightly modified the code
                  >
                  > #!/usr/bin/perl
                  > sub reference {
                  > $type = shift;
                  > $f_group='PBML';
                  > $f_lang='perl';
                  > $f_os='linux';
                  > $ref = "f_$type";
                  > }
                  > reference(perlgroup);
                  > print $ref;
                  >
                  > $ref will contain the value of $type which is given at run-time. as you
                  > mentioned $type = shift , I assumed a subroutine and passed value of $type
                  > from the subroutine "reference". when we run the program $ref will have
                  > f_perlgroup, where the value of $type will be substituted in $ref.
                  >
                  > we need to be very careful with variable interpolation with single and
                  > double quotes.
                  >
                  > when we print $ref with single quotes , value of $type will not be
                  > substituted. Variable interpolation will takes place only if we have
                  > double
                  > quotes.
                  >
                  > hope this has helped you ... if i assumed anything wrong guide me further.
                  >
                  > thanks,
                  > KalyanRaj
                  >
                  > -----Original Message-----
                  > From: perl-beginner@yahoogroups.com
                  > [mailto:perl-beginner@yahoogroups.com]On Behalf Of mail meda
                  > Sent: Monday, January 02, 2006 4:40 PM
                  > To: perl-beginner@yahoogroups.com
                  > Subject: [PBML] Variable Interpolation
                  >
                  >
                  > Hi Friends,
                  >
                  > Can you please let me know how to get the content of a " value of the
                  > variable ".
                  > For Eg:
                  >
                  > my $type = shift;
                  > my $f_group='PBML';
                  > my $f_lang='perl';
                  > my $f_os='linux';
                  > my $ref = "f_$type";
                  >
                  > Where $type can be group,lang or os which is found during the runtime.
                  >
                  > How to get the result of the above in $ref variable.
                  >
                  > Thanks in advance.
                  >
                  >
                  > [Non-text portions of this message have been removed]
                  >
                  >
                  >
                  > Unsubscribing info is here:
                  > http://help.yahoo.com/help/us/groups/groups-32.html
                  > Yahoo! Groups Links
                  >
                  >
                  >
                  >
                  >
                  >
                  >
                  > Unsubscribing info is here:
                  > http://help.yahoo.com/help/us/groups/groups-32.html
                  > Yahoo! Groups Links
                  >
                  >
                  >
                  >
                  >
                  >
                  >


                  [Non-text portions of this message have been removed]
                • KalyanRaj
                  hi , when we call subroutine reference(group) , output will be f_group which is not a scalar. $f_group and f_group have different meaning in Perl. Let me
                  Message 8 of 20 , Jan 2, 2006
                  • 0 Attachment
                    hi ,

                    when we call subroutine ' reference(group) ', output will be f_group which
                    is not a scalar.
                    $f_group and f_group have different meaning in Perl.

                    Let me know what exactly you want to do ...

                    Regards,
                    KalyanRaj



                    -----Original Message-----
                    From: perl-beginner@yahoogroups.com
                    [mailto:perl-beginner@yahoogroups.com]On Behalf Of mail meda
                    Sent: Monday, January 02, 2006 6:04 PM
                    To: perl-beginner@yahoogroups.com
                    Subject: Re: [PBML] Variable Interpolation


                    Hi Raj,

                    The code you gave just returns the name of the variable and not the value in
                    it.
                    Your code with call 'reference(group) gave 'f_group' and not its value
                    'PBML'.
                    Any idea ?

                    Thanks for your efforts.

                    Expecting more response..

                    Bye



                    On 1/2/06, KalyanRaj <kalyanrajs@...> wrote:
                    >
                    > hi all,
                    >
                    > guide me if i'm wrong.
                    >
                    > I slightly modified the code
                    >
                    > #!/usr/bin/perl
                    > sub reference {
                    > $type = shift;
                    > $f_group='PBML';
                    > $f_lang='perl';
                    > $f_os='linux';
                    > $ref = "f_$type";
                    > }
                    > reference(perlgroup);
                    > print $ref;
                    >
                    > $ref will contain the value of $type which is given at run-time. as you
                    > mentioned $type = shift , I assumed a subroutine and passed value of $type
                    > from the subroutine "reference". when we run the program $ref will have
                    > f_perlgroup, where the value of $type will be substituted in $ref.
                    >
                    > we need to be very careful with variable interpolation with single and
                    > double quotes.
                    >
                    > when we print $ref with single quotes , value of $type will not be
                    > substituted. Variable interpolation will takes place only if we have
                    > double
                    > quotes.
                    >
                    > hope this has helped you ... if i assumed anything wrong guide me further.
                    >
                    > thanks,
                    > KalyanRaj
                    >
                    > -----Original Message-----
                    > From: perl-beginner@yahoogroups.com
                    > [mailto:perl-beginner@yahoogroups.com]On Behalf Of mail meda
                    > Sent: Monday, January 02, 2006 4:40 PM
                    > To: perl-beginner@yahoogroups.com
                    > Subject: [PBML] Variable Interpolation
                    >
                    >
                    > Hi Friends,
                    >
                    > Can you please let me know how to get the content of a " value of the
                    > variable ".
                    > For Eg:
                    >
                    > my $type = shift;
                    > my $f_group='PBML';
                    > my $f_lang='perl';
                    > my $f_os='linux';
                    > my $ref = "f_$type";
                    >
                    > Where $type can be group,lang or os which is found during the runtime.
                    >
                    > How to get the result of the above in $ref variable.
                    >
                    > Thanks in advance.
                    >
                    >
                    > [Non-text portions of this message have been removed]
                    >
                    >
                    >
                    > Unsubscribing info is here:
                    > http://help.yahoo.com/help/us/groups/groups-32.html
                    > Yahoo! Groups Links
                    >
                    >
                    >
                    >
                    >
                    >
                    >
                    > Unsubscribing info is here:
                    > http://help.yahoo.com/help/us/groups/groups-32.html
                    > Yahoo! Groups Links
                    >
                    >
                    >
                    >
                    >
                    >
                    >


                    [Non-text portions of this message have been removed]



                    Unsubscribing info is here:
                    http://help.yahoo.com/help/us/groups/groups-32.html
                    Yahoo! Groups Links
                  • merlyn@stonehenge.com
                    ... mail Hi Friends, mail Can you please let me know how to get the content of a value of the mail variable . mail For Eg: mail my $type = shift; mail
                    Message 9 of 20 , Jan 2, 2006
                    • 0 Attachment
                      >>>>> "mail" == mail meda <mailmeda@...> writes:

                      mail> Hi Friends,
                      mail> Can you please let me know how to get the content of a " value of the
                      mail> variable ".
                      mail> For Eg:

                      mail> my $type = shift;
                      mail> my $f_group='PBML';
                      mail> my $f_lang='perl';
                      mail> my $f_os='linux';
                      mail> my $ref = "f_$type";

                      In Perl, the way to do this is to put the elements in a hash:

                      my %mapping = (group => 'PBML', lang => 'perl', os => 'linux');
                      my $type = shift;
                      my $result = $mapping{$type};

                      --
                      Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                      <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                      Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
                      See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
                    • KalyanRaj
                      hi , as mentioned by Randal, we can put elements in a hash... shift is a keyword in Perl which gives out first element in an array...I wonder is there
                      Message 10 of 20 , Jan 2, 2006
                      • 0 Attachment
                        hi ,

                        as mentioned by Randal, we can put elements in a hash...
                        "shift" is a keyword in Perl which gives out first element in an array...I
                        wonder is there anyother use of "shift"
                        when i'm executing the code given by Randal, nothing is printed out....

                        MailMeda --- the below code print out PBML which is what you wanted. Also
                        checkout the scope of the variables. if we place the statement
                        print $result outside reference subroutine, it wont print anything.

                        my %mapping = (group => 'PBML', lang => 'perl', os => 'linux');
                        reference(group);
                        sub reference {
                        my $type = shift;
                        my $result = $mapping{$type};
                        print $result;
                        }

                        Regards,
                        KalyanRaj

                        -----Original Message-----
                        From: perl-beginner@yahoogroups.com
                        [mailto:perl-beginner@yahoogroups.com]On Behalf Of merlyn@...
                        Sent: Monday, January 02, 2006 6:26 PM
                        To: mail meda
                        Cc: perl-beginner@yahoogroups.com
                        Subject: Re: [PBML] Variable Interpolation


                        >>>>> "mail" == mail meda <mailmeda@...> writes:

                        mail> Hi Friends,
                        mail> Can you please let me know how to get the content of a " value of the
                        mail> variable ".
                        mail> For Eg:

                        mail> my $type = shift;
                        mail> my $f_group='PBML';
                        mail> my $f_lang='perl';
                        mail> my $f_os='linux';
                        mail> my $ref = "f_$type";

                        In Perl, the way to do this is to put the elements in a hash:

                        my %mapping = (group => 'PBML', lang => 'perl', os => 'linux');
                        my $type = shift;
                        my $result = $mapping{$type};

                        --
                        Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                        <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                        Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
                        See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl
                        training!


                        Unsubscribing info is here:
                        http://help.yahoo.com/help/us/groups/groups-32.html
                        Yahoo! Groups Links
                      • Shawn Corey
                        ... You should always use an argument for shift. In this case, shift works on @_ since it is inside a subroutine. Outside any subroutine, shift works on @ARGV.
                        Message 11 of 20 , Jan 2, 2006
                        • 0 Attachment
                          KalyanRaj wrote:
                          > as mentioned by Randal, we can put elements in a hash...
                          > "shift" is a keyword in Perl which gives out first element in an array...I
                          > wonder is there anyother use of "shift"
                          > when i'm executing the code given by Randal, nothing is printed out....
                          >
                          > MailMeda --- the below code print out PBML which is what you wanted. Also
                          > checkout the scope of the variables. if we place the statement
                          > print $result outside reference subroutine, it wont print anything.
                          >
                          > my %mapping = (group => 'PBML', lang => 'perl', os => 'linux');
                          > reference(group);
                          > sub reference {
                          > my $type = shift;
                          > my $result = $mapping{$type};
                          > print $result;
                          > }

                          You should always use an argument for shift. In this case, shift works
                          on @_ since it is inside a subroutine. Outside any subroutine, shift
                          works on @ARGV. To avoid confusion, always supply it with an argument.

                          my $type = shift @_;


                          --

                          Just my 0.00000002 million dollars worth,
                          --- Shawn

                          "Probability is now one. Any problems that are left are your own."
                          SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_

                          * Perl tutorials at http://perlmonks.org/?node=Tutorials
                          * A searchable perldoc is available at http://perldoc.perl.org/
                        • merlyn@stonehenge.com
                          ... Shawn You should always use an argument for shift. That s a bit strong. It s accepted to leave the argument off shift when it s being used in a sane way.
                          Message 12 of 20 , Jan 2, 2006
                          • 0 Attachment
                            >>>>> "Shawn" == Shawn Corey <shawn.corey@...> writes:

                            Shawn> You should always use an argument for shift.

                            That's a bit strong. It's accepted to leave the argument off shift
                            when it's being used in a sane way. I presumed the original poster
                            knew what he was doing, and didn't comment on that.

                            --
                            Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                            <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                            Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
                            See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
                          • Shawn Corey
                            ... Yes, it s strong but all good discipline seems strong until you reap the benefits from it. I don t think it s sane for the implied behaviour of any
                            Message 13 of 20 , Jan 2, 2006
                            • 0 Attachment
                              Randal L. Schwartz wrote:
                              >>>>>>"Shawn" == Shawn Corey <shawn.corey@...> writes:
                              >
                              >
                              > Shawn> You should always use an argument for shift.
                              >
                              > That's a bit strong. It's accepted to leave the argument off shift
                              > when it's being used in a sane way. I presumed the original poster
                              > knew what he was doing, and didn't comment on that.
                              >

                              Yes, it's strong but all good discipline seems strong until you reap the
                              benefits from it. I don't think it's sane for the implied behaviour of
                              any construct to change. What it means is that when I'm reading a
                              program, I have one more thing to keep track of. Anything that reduces
                              this overhead is worth the effort.

                              Always write your programs as though you aren't going to see them again
                              for 25 years and then have to make a critical change immediately.


                              --

                              Just my 0.00000002 million dollars worth,
                              --- Shawn

                              "Probability is now one. Any problems that are left are your own."
                              SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_

                              * Perl tutorials at http://perlmonks.org/?node=Tutorials
                              * A searchable perldoc is available at http://perldoc.perl.org/
                            • KalyanRaj
                              Hi, Mail Meda - the following code will give you what you want....PBML. another version of code which uses hash and return sub reference { $type = shift;
                              Message 14 of 20 , Jan 2, 2006
                              • 0 Attachment
                                Hi,

                                Mail Meda - the following code will give you what you want....PBML.
                                another version of code which uses hash and return
                                sub reference {
                                $type = shift;
                                %types = (
                                group => "PBML",
                                lang => "Perl",
                                os => "Linux"
                                );
                                return $types{$type};
                                }
                                $result = reference("group");
                                print "$result\n";

                                Cheers,
                                KalyanRaj

                                -----Original Message-----
                                From: perl-beginner@yahoogroups.com
                                [mailto:perl-beginner@yahoogroups.com]On Behalf Of Shawn Corey
                                Sent: Monday, January 02, 2006 11:28 PM
                                To: perl-beginner@yahoogroups.com
                                Subject: Re: [PBML] Variable Interpolation


                                Randal L. Schwartz wrote:
                                >>>>>>"Shawn" == Shawn Corey <shawn.corey@...> writes:
                                >
                                >
                                > Shawn> You should always use an argument for shift.
                                >
                                > That's a bit strong. It's accepted to leave the argument off shift
                                > when it's being used in a sane way. I presumed the original poster
                                > knew what he was doing, and didn't comment on that.
                                >

                                Yes, it's strong but all good discipline seems strong until you reap the
                                benefits from it. I don't think it's sane for the implied behaviour of
                                any construct to change. What it means is that when I'm reading a
                                program, I have one more thing to keep track of. Anything that reduces
                                this overhead is worth the effort.

                                Always write your programs as though you aren't going to see them again
                                for 25 years and then have to make a critical change immediately.


                                --

                                Just my 0.00000002 million dollars worth,
                                --- Shawn

                                "Probability is now one. Any problems that are left are your own."
                                SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_

                                * Perl tutorials at http://perlmonks.org/?node=Tutorials
                                * A searchable perldoc is available at http://perldoc.perl.org/


                                Unsubscribing info is here:
                                http://help.yahoo.com/help/us/groups/groups-32.html
                                Yahoo! Groups Links
                              • Jenda Krynicky
                                From: Shawn Corey ... I would be a bit surprised if anyone wrote: sub foo { my $bar = shift(@_); ... and would wonder why. In this
                                Message 15 of 20 , Jan 3, 2006
                                • 0 Attachment
                                  From: Shawn Corey <shawn.corey@...>
                                  > Randal L. Schwartz wrote:
                                  > >>>>>>"Shawn" == Shawn Corey <shawn.corey@...> writes:
                                  > >
                                  > >
                                  > > Shawn> You should always use an argument for shift.
                                  > >
                                  > > That's a bit strong. It's accepted to leave the argument off shift
                                  > > when it's being used in a sane way. I presumed the original poster
                                  > > knew what he was doing, and didn't comment on that.
                                  > >
                                  >
                                  > Yes, it's strong but all good discipline seems strong until you reap
                                  > the benefits from it. I don't think it's sane for the implied
                                  > behaviour of any construct to change. What it means is that when I'm
                                  > reading a program, I have one more thing to keep track of. Anything
                                  > that reduces this overhead is worth the effort.
                                  >
                                  > Always write your programs as though you aren't going to see them
                                  > again for 25 years and then have to make a critical change
                                  > immediately.

                                  I would be a bit surprised if anyone wrote:

                                  sub foo {
                                  my $bar = shift(@_);
                                  ...

                                  and would wonder why. In this case it's a generally accepted that the
                                  @_ gets omited. OTOH, I'd never make use of the fact that outside
                                  subroutines shift() means shift(@ARGV). That's something lots of
                                  people doesn't remember and something that might break easily if I
                                  tried to move the piece of code into a subroutine.

                                  Jenda
                                  ===== Jenda@... === http://Jenda.Krynicky.cz =====
                                  When it comes to wine, women and song, wizards are allowed
                                  to get drunk and croon as much as they like.
                                  -- Terry Pratchett in Sourcery
                                • merlyn@stonehenge.com
                                  ... Jenda I would be a bit surprised if anyone wrote: Jenda sub foo { Jenda my $bar = shift(@_); Jenda ... Jenda and would wonder why. In this case
                                  Message 16 of 20 , Jan 3, 2006
                                  • 0 Attachment
                                    >>>>> "Jenda" == Jenda Krynicky <Jenda@...> writes:

                                    Jenda> I would be a bit surprised if anyone wrote:

                                    Jenda> sub foo {
                                    Jenda> my $bar = shift(@_);
                                    Jenda> ...

                                    Jenda> and would wonder why. In this case it's a generally accepted that the
                                    Jenda> @_ gets omited. OTOH, I'd never make use of the fact that outside
                                    Jenda> subroutines shift() means shift(@ARGV). That's something lots of
                                    Jenda> people doesn't remember and something that might break easily if I
                                    Jenda> tried to move the piece of code into a subroutine.

                                    I agree with you there. However, for a five line program:

                                    #!/usr/bin/perl
                                    my $from = shift;
                                    my $to = shift;
                                    if (-e $to) { rename $to, "$to~" or warn "cannot backup $to: $!"; }
                                    rename $from, $to or warn "Cannot rename $from to $to: $!";

                                    Will anyone really not know what "shift" is doing there? Or confuse
                                    it with shift(@_)?

                                    That's the point of defaults... they're the defaults because they're
                                    the most common thing you would do with that operator *in that context*.

                                    --
                                    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                                    <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                                    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
                                    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
                                  • Shawn Corey
                                    ... The key phrase being in that context . My issue is that the default depends on the context. If it was the same throughout the regardless of context, I
                                    Message 17 of 20 , Jan 3, 2006
                                    • 0 Attachment
                                      merlyn@... wrote:
                                      > That's the point of defaults... they're the defaults because they're
                                      > the most common thing you would do with that operator *in that context*.
                                      >

                                      The key phrase being "in that context". My issue is that the default
                                      depends on the context. If it was the same throughout the regardless of
                                      context, I wouldn't have a problem. The problem is that when I see a
                                      naked shift, I have to stop and remember the context. One more thing to
                                      worry about while reading a program.


                                      --

                                      Just my 0.00000002 million dollars worth,
                                      --- Shawn

                                      "Probability is now one. Any problems that are left are your own."
                                      SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_

                                      * Perl tutorials at http://perlmonks.org/?node=Tutorials
                                      * A searchable perldoc is available at http://perldoc.perl.org/
                                    • merlyn@stonehenge.com
                                      ... Shawn The key phrase being in that context . My issue is that the default Shawn depends on the context. If it was the same throughout the regardless of
                                      Message 18 of 20 , Jan 3, 2006
                                      • 0 Attachment
                                        >>>>> "Shawn" == Shawn Corey <shawn.corey@...> writes:

                                        Shawn> The key phrase being "in that context". My issue is that the default
                                        Shawn> depends on the context. If it was the same throughout the regardless of
                                        Shawn> context, I wouldn't have a problem. The problem is that when I see a
                                        Shawn> naked shift, I have to stop and remember the context. One more thing to
                                        Shawn> worry about while reading a program.

                                        That's why I said "10 line program". If this were a 200 line program,
                                        I wouldn't bury "shift" in the middle, unless it was within 10 lines
                                        of the start of a subroutine.

                                        I believe it is reasonable to ask a programmer to look back about
                                        ten lines to figure out the general flow of the program. I don't
                                        think it's reasonable to have to maintain "state" further than that,
                                        which is why I argue for 10-20 line subroutines instead of most of
                                        the monoliths that I see most people write.

                                        --
                                        Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                                        <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                                        Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
                                        See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
                                      • Shawn Corey
                                        ... Large monoliths have given me the willies ever since 2001: A Space Odyssey came out ;) -- Just my 0.00000002 million dollars worth, ... Probability is
                                        Message 19 of 20 , Jan 3, 2006
                                        • 0 Attachment
                                          Randal L. Schwartz wrote:
                                          > I believe it is reasonable to ask a programmer to look back about
                                          > ten lines to figure out the general flow of the program. I don't
                                          > think it's reasonable to have to maintain "state" further than that,
                                          > which is why I argue for 10-20 line subroutines instead of most of
                                          > the monoliths that I see most people write.
                                          >

                                          Large monoliths have given me the willies ever since "2001: A Space
                                          Odyssey" came out ;)


                                          --

                                          Just my 0.00000002 million dollars worth,
                                          --- Shawn

                                          "Probability is now one. Any problems that are left are your own."
                                          SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_

                                          * Perl tutorials at http://perlmonks.org/?node=Tutorials
                                          * A searchable perldoc is available at http://perldoc.perl.org/
                                        • mail meda
                                          Hi Frnds, Thanks for your response. Bye. ... [Non-text portions of this message have been removed]
                                          Message 20 of 20 , Jan 5, 2006
                                          • 0 Attachment
                                            Hi Frnds,

                                            Thanks for your response.

                                            Bye.


                                            On 1/4/06, Shawn Corey <shawn.corey@...> wrote:
                                            >
                                            > Randal L. Schwartz wrote:
                                            > > I believe it is reasonable to ask a programmer to look back about
                                            > > ten lines to figure out the general flow of the program. I don't
                                            > > think it's reasonable to have to maintain "state" further than that,
                                            > > which is why I argue for 10-20 line subroutines instead of most of
                                            > > the monoliths that I see most people write.
                                            > >
                                            >
                                            > Large monoliths have given me the willies ever since "2001: A Space
                                            > Odyssey" came out ;)
                                            >
                                            >
                                            > --
                                            >
                                            > Just my 0.00000002 million dollars worth,
                                            > --- Shawn
                                            >
                                            > "Probability is now one. Any problems that are left are your own."
                                            > SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_
                                            >
                                            > * Perl tutorials at http://perlmonks.org/?node=Tutorials
                                            > * A searchable perldoc is available at http://perldoc.perl.org/
                                            >
                                            >
                                            > Unsubscribing info is here:
                                            > http://help.yahoo.com/help/us/groups/groups-32.html
                                            > Yahoo! Groups Links
                                            >
                                            >
                                            >
                                            >
                                            >
                                            >
                                            >
                                            >


                                            [Non-text portions of this message have been removed]
                                          Your message has been successfully submitted and would be delivered to recipients shortly.