Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Get reference to newly-created array

by ikegami (Patriarch)
on Oct 22, 2007 at 16:33 UTC ( [id://646487]=note: print w/replies, xml ) Need Help??


in reply to Get reference to newly-created array

[] and do { my @array; \@array }, will both create an array and return a reference to it, but the array will be anonymous. No good.

You could use prototype trickery to do what you want.

sub get_array_ref(\@) { $_[0] } GetOptions( 'array=s' => get_array_ref(my @array) ); print("@array\n");

By the way, it's =s when you pass a reference to an array, and =s@ when you pass a reference to a scalar. That opens up another possibility:

GetOptions( 'array=s@' => \(my $array) ); print("@$array\n");

Replies are listed 'Best First'.
Re: Get reference to newly-created array
by benizi (Hermit) on Oct 22, 2007 at 21:58 UTC
    By the way, it's =s when you pass a reference to an array, and =s@ when you pass a reference to a scalar.

    Both seem to work and do what I want. Is there any particular reason to choose one over the other?

    $ cat test-gol.pl #!/usr/bin/perl use Getopt::Long qw/:config pass_through/; my ($array, @array); # option names are: [sa][nw] s=scalar, a=array n=no '@', w=with '@' GetOptions( 'sn=s' => \$array ) or die 'options'; print "Scalar @$array\n"; undef $array; GetOptions( 'sw=s@' => \$array ) or die 'options'; print "Scalar @$array\n"; GetOptions( 'an=s' => \@array ) or die 'options'; print "Array @array\n"; @array = (); GetOptions( 'aw=s@' => \@array ) or die 'options'; print "Array @array\n"; $ perl test-gol.pl --sn one --sn two --sw one --sw two --an one --an t +wo --aw one --aw two Scalar Scalar one two Array one two Array one two

      Both seem to work and do what I want. Is there any particular reason to choose one over the other?

      Yes. One is documented, and the other just happens to work at the moment.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://646487]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2024-04-19 22:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found