Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Random entry from combined data set

by damian1301 (Curate)
on Jul 04, 2001 at 07:10 UTC ( #93759=note: print w/ replies, xml ) Need Help??


in reply to Random entry from combined data set

Hmmm... what you could do is open each file and push (line by line) it in a single array.

open(FH,"$file1") or die " Could not open $file1!!! Here's why: $!"; push @array, <FH>; close FH or die "Could not close $file1. Here's why: $!";


Etc, etc. Then once you have all the files in a you can use a simple line to select a random phrase.

print $array[rand(@array)]; # just for you, meowchow :)
note: This could drain some memory so be careful. Also, it would probably be much more efficient if you made a subroutine to open the files and return the data to you. That way you won't have so many open calls all the time. I will post an example in a bit.

UPDATE:Got the sub.
sub openf{ my $file = shift; open(FH,$file) ||die"There's a problem! Here's what's up: $!"; my @array = <FH>; close FH ||die"There's a problem! Here's what's up: $!"; @array=grep{$_ ne ""} @array; return @array; } push @array,openf("test2.txt"),openf("test.txt"); print $array[4];

UPDATE2: Use wog's advice, as his does not drain memory and has the same functionality as mine...but shorter.

UPDATE3: I don't know why but I felt that push @bla,$_ while <FH>; was the best solution...man I am stoopid tonight... thanks dvergin.

$_.=($=+(6<<1));print(chr(my$a=$_));$^H=$_+$_;$_=$^H; print chr($_-39); # Easy but its ok.


Comment on Re: Random entry from combined data set
Select or Download Code
Replies are listed 'Best First'.
Re: Re: Random entry from combined data set
by dvergin (Monsignor) on Jul 04, 2001 at 07:46 UTC
    Actually, you don't need to:

          push @array,$_ while <FH>;

    'push' takes a list as its second parameter, so:

          push @array, <FH>;

    for each file works fine.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2015-07-28 03:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (251 votes), past polls