Thanks all . But I found an another question :
If I wrote this script like this : #!/usr/bin/perl while (<DATA>){ @lines = $_; print "$lines[rand @lines]"; } __DATA__ uriel daniel joel samue It would not display the random element of the array Why ? Or if I want to display the random element of the array like this ,what should I do ? Thanks in advance ~~ On Tue, Nov 3, 2009 at 6:13 PM, tom smith <climbingpartn...@gmail.com>wrote: > On Tue, Nov 3, 2009 at 12:11 AM, Majian <jian...@gmail.com> wrote: > >> Hi ,all : >> >> I want to know if there is a way in which I can randomnize(?) the content >> in >> an array. >> >> In this example : >> >> my @array = ('uriel', 'daniel', 'joel', 'samuel'); >> >> Now what I want is create a process so every time I print the array it >> prints one element from the array . >> >> I wrote it like this : >> >> #!/usr/bin/perl -w >> >> use strict; >> >> my @array = ('uriel', 'daniel', 'joel', 'samuel'); >> print "Array before random: @array\n\n"; >> >> print "Array of random: $array[rand @array]\n"; >> >> >> I thoght it might work but it doesnt. I hope someone could give me an >> idea to work this out... >> > > > The op's code works for me: > > $ perl -v > > This is perl, v5.8.6 built for darwin-thread-multi-2level > (with 3 registered patches, see perl -V for more detail) > > Copyright 1987-2004, Larry Wall > <snip> > > $ cat 1perl.pl > #!/usr/bin/perl -w > > use strict; > > my @array = ('uriel', 'daniel', 'joel', 'samuel'); > print "Array before random: @array\n\n"; > > print "Array of random: $array[rand @array]\n"; > > $ 1perl.pl > Array before random: uriel daniel joel samuel > > Array of random: uriel > > $ > > ...but I would be afraid to put such a complex variable name inside a > string. I read somewhere that you can put { } around just the part of a > string that you want perl to use as the variable name. For instance, > instead of this: > > my $str = "hello "; > my $result = "$strworld"; > print $result, "\n" > > --output:-- > Global symbol "$strworld" requires explicit package name at 1perl.pl line > 5. > Execution of 1perl.pl aborted due to compilation errors. > > > ...you can write this: > > use strict; > use warnings; > > my $str = "hello "; > my $result = "${str}world"; > print $result, "\n" > > --output:-- > hello world > > Maybe putting braces around the op's variable name might be applicable? > For instance, > > > print "Array of random: ${array[rand @array]}\n"; > > >