sudevshetty has asked for the wisdom of the Perl Monks concerning the following question:

if i type and run this (17, $var, "a string"); where will this be stored , how can i access them , i haven't specified the name of my variable .

Replies are listed 'Best First'.
Re: new to perl
by GrandFather (Saint) on May 01, 2014 at 07:57 UTC

    Type it where? Run it how? Where did the code come from and what do you expect it to do? What do you want it to do?

    What operating system are you using? Are you using a Perl that came with the OS, or have you installed it yourself (how and where from?)? What editor are you comfortable with? Do you know how to run stuff from the command line?

    Ok, so that's a lot of questions, but we really can't tell what you know or what you have so it's hard to give good advice and it's hard to know what you mean by your questions without some understanding of where you are coming from.

    Perl is the programming world's equivalent of English
Re: new to perl
by Laurent_R (Canon) on May 01, 2014 at 09:24 UTC
     (17, $var, "a string") is a list, i.e. a very ephemeral thing that will usually cease to exist as soon as you go to the next code line. You can either use it immediately, for example this way:
    print "$_ \n" foreach (17, $var, "a string");
    or you need to promote it to become a more persistent item, usually with a name to access to it, such as an array:
    my @array = (17, $var, "a string"); # now you can access the element of the original list by using the arr +ay, e.g.: my $first_num = $array[0];
      ... cease to exist as soon as you go to the next code line.

      Indeed, it may cease to exist even before that, or rather, never come into existence in the first place. In the example below, the compiler doesn't even bother with the literal values. I suspect it only compiles  $var because it isn't smart enough to be sure there is no side-effect associated with the reference: maybe it's a tie-ed variable? Other kinds of compilers may be much more aggressive about eliminating such "dead code."

      c:\@Work\Perl\monks>perl -wMstrict -MO=Deparse,-p -le "my $var = 42; (17, $var, 'a string'); (137, 'd string'); " Useless use of a constant (17) in void context at -e line 1. Useless use of private variable in void context at -e line 1. Useless use of a constant (a string) in void context at -e line 1. Useless use of a constant (137) in void context at -e line 1. Useless use of a constant (d string) in void context at -e line 1. BEGIN { $^W = 1; } BEGIN { $/ = "\n"; $\ = "\n"; } use strict 'refs'; (my $var = 42); ('???', $var, '???'); ('???', '???'); -e syntax OK
        Yeah, clearly, I agree, if you have only that in a code line:
        (17, $var, 'a string');
        it is completely useless, and the compiler tells it to you (at least if you use the strict and/or warnings pragmata). Such a list comes to existence only insofar it is somehow used for something. My point was the opposite view, to show how a list can sometimes be useful, but with a very limited scope (usually at most one code line). If you need larger scope, then give it a name and promote it to an array (or possibly another data structure).
Re: new to perl ( if i type and run this (17, $var, "a string"); where will this be stored )
by Anonymous Monk on May 01, 2014 at 07:52 UTC

    if i type and run this (17, $var, "a string"); where will this be stored

    It won't be stored anywhere,

    , how can i access them , i haven't specified the name of my variable .

    you can't access "them" that aren't stored , so it might be a good idea to store "them"

    perlintro shows you examples of storing like  my @stuff = ( 17, $var, "a string" );

Re: new to perl
by sudevshetty (Initiate) on May 01, 2014 at 10:04 UTC
    Thank guys