--- In perl-beginner%40yahoogroups.com">perl-beginner
yahoogroups.com, "hooyar66" <pcbcad
...> wrote:
>
> --- In perl-beginner%40yahoogroups.com">perl-beginner
yahoogroups.com,
> "skarlso777" <Gergely_Brautigam
> wrote:
> >
> > Hi!
> >
> > In my knowledge it is so that you have to turn it around. So don't
> use
> > :> my (
array,$string) = (('A','B'),'C');
> > Because it will always be ABC, but use it so:
> > > my ($string,
array) = ('C', ('A','B'));
> >
> > Perl flushes everything at one times. This also goes for passing
> > parameters.
> >
> > Gergely.
> >
> >
> > --- In perl-beginner%40yahoogroups.com">perl-beginner
yahoogroups.com, "hooyar66" <pcbcad
> wrote:
> > >
> > > I know this must be easy but Perl's syntax has confounded me
> again... I
> > > would expect the code
> > > below to assign the value of $string as 'C' b
> > > ut instead all values are assigned to the
array
> > > .
> > >
> > > How can I assign to both a string and array in one line - ideally
> > > without using references.
> > >
> > > Thanks
> > > NJH
> > >
> > > #!c:/perl/bin/perl.exe
> > >
> > > use warnings;
> > > use strict;
> > > use diagnostics;
> > >
> > > my (
array,$string) = (('A','B'),'C');
> > > print "My
array is:
arraynMy $string is: $stringn";
> > >
> > > Produces:
> > > My
array is: A B C
> > > My $string is:
> > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
> > >
> >
>
> Thanks for the reply Gergely - the example I gave was very simple
> however I really need to use an assignment with multiple strings and
> arrays, so this would be a better example:
>
> my ($string,
array1,
array2) = ('A',('B','C'),('D','E'));
> print "My $string is: $stringnMy
array1 is:
array1nMy
array2
> is:
array2n";
>
> which produces:
> My $string is: A
> My
array1 is: B C D E
> My
array2 is:
>
> Is there a way to assign multiple arrays in a single line? I actually
> need to assign my values from the return of a subroutine, something
> like:
>
> my ($string,
array1,
array2) = &assign_vals;
> print "My $string is: $stringnMy
array1 is:
array1nMy
array2
> is:
array2n";
>
> sub assign_vals{
> return ('A',('B','C'),('D','E'));
> }
>
> Thanks for any help
> NJH
>
Hi!
The problem is that arrays are greedy. So they swallow up pretty much
everything they come into contact with.
So if you have to return two or more arrays best it's using references
like:
sub function {
my $scalar;
my
array1;
my
array2;
..
.
.
return ($scalar,
array1,
array2);
}
Then use this like:
my ($first, $second, $third ) = function();
Notice i did not use
second i used $second. Because this will contain
the reference to the array you have to cast it into array to use it.
Hope that helps,
Gergely.