Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Assigning Variables to String Elements

by Kenosis (Priest)
on Dec 07, 2013 at 07:52 UTC ( #1066109=note: print w/replies, xml ) Need Help??


in reply to Assigning Variables to String Elements

ig effectively addressed your split issue.

I have a question about pushing 1552 randomly-obtained strings from @X_info onto @tmp, and then doing a splice to move the first 26 from @tmp into @PAR1. (Although jethro correctly pointed out that @tmp is never reset, so strings keep getting pushed onto it. Nevertheless, the randomness doesn't essentially change.) Why not just generate those first 26 randomly-obtained strings, one at a time, and split them as you go? In both cases--1552 using the first 26 vs. just generating 26--the 26 strings were randomly obtained from a superset. Is there a certain protocol that you're following that requires you to generate all 1552 and then grab the first 26 for processing? If not, then consider the following refactoring:

use warnings; use strict; my $runs = 1; # for testing code # Program vars my $chr_X_input = "bootstrap_data.txt"; my $range = 1552; # total number of array elem +ents my $pi_sum; my $L_sum; my $differences_sum; my $coverage_sum; open my $CHR_X_INPUT, '<', $chr_X_input or die "Can't open chromosome +X input: $!"; chomp( my @X_info = <$CHR_X_INPUT> ); close $CHR_X_INPUT; for ( 1 .. $runs ) { for ( 1 .. 26 ) { my ( $pi, $L, $differences, $coverage ) = split /\t/, $X_info[ + int( rand($range) ) ]; $pi_sum += $pi; $L_sum += $L; $differences_sum += $differences; $coverage_sum += $coverage; my $PAR1_diversity = ( ( $pi_sum / $L_sum ) / ( $differences_s +um / $coverage_sum ) ); } }

Hope this helps!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1066109]
help
Chatterbox?
[Discipulus]: if more than 3 go for named variables LA
[Lady_Aleena]: Discipulus, it is at 2 now, but with what I am thinking about, it could go to 3. However, only 1 is needed. The second and third are optional.
[shmem]: straight list or named parameters - that depends on whether (and how many) optional arguments you have
[Discipulus]: if so a plain list is ok, imho
[Lady_Aleena]: shmem, I already have the plugin installed, just not active.
[shmem]: if you have 1 optional argument, place that at the end of the list. If you have more, go for named parameters.
[Lady_Aleena]: 1 manditory, 2 optional.
[Discipulus]: my ($need,$opta,$optb ) = @_; .. if $opta..
[shmem]: all else leads to trouble, even if the third argument depends on the existence of the second. That may become brittle.
[Discipulus]: but if have case like subname(15,undef,3 ) maybe bettere named parameters

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (12)
As of 2017-04-27 12:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (506 votes). Check out past polls.