Store in a 2 dimensional array - Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Store in a 2 dimensional array - Perl
# 1  
Old 12-17-2012
Store in a 2 dimensional array - Perl

Hey guyz.

Here is my sample input file following by first part of my code:

Code:
*	A	B	C	D	E
reg1	1	0	1	1	0
reg2	0	1	0	0	1
reg3	1	0	0	1	0
reg4	0	0	1	0	1
reg5	1	1	0	0	1


Code:
use strict; 
use warnings;

open (IN, "test_input.txt") or die ("Can't open file.txt: $!\n");
my $line = <IN>; 
chomp $line; 

my @TF = split ('\t', $line);
shift (@TF);

while ($line = <IN>) {
	my @temp = split('\t', $line);
	shift (@temp);
	my $i = 0;
	
	while ($i < @TF) {
		if ($temp[$i]==1) {
			print "$TF[$i]";
		}
		$i++;	
	}
}

close(IN);

It prints a list:

Code:
ACDBEADCEABE

I want this list to be stored in a 2 dimensional array following by a random number between 0-1 in second column. Desired array:

Code:
A	0.724392652
C	0.100361935
D	0.980176163
B	0.626905862
E	0.545560827
A	0.207170636
D	0.233475703
C	0.248689653
E	0.441124913
A	0.695127525
B	0.028040103
E	0.980644345

Any help? Thanks.
# 2  
Old 12-17-2012
Change print "$TF[$i]"; to print "$TF[$i]\t" . rand(1) . "\n";.
This User Gave Thanks to bartus11 For This Post:
# 3  
Old 12-17-2012
Thanks bartus11!

now that I have this 2 dimensional array I would like to do this afterward:

I want to fill an empty matrix with these letters in this array. The reason for creating random numbers is to take the letters in a random order.

So I add another column to this array with 0 values:

print "$TF[$i]\t" . rand(1) . "\t0\n";


Code:
A	0.724392652	0
C	0.100361935	0
D	0.980176163	0
B	0.626905862	0
E	0.545560827	0
A	0.207170636	0
D	0.233475703	0
C	0.248689653	0
E	0.441124913	0
A	0.695127525	0
B	0.028040103	0
E	0.980644345	0

After sorting based on random numbers the letter is taken and feed to this empty matrix. Each row shouldn't have more than 3 letters in total. by taking each letter the 0 value in array is replaced by 1 , so next time if it is 1 means that we have to skip since it has been taken once.

Do you think you can help me with this? :/

Thanks alot
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi Dimensional array in bash

Hi, I'm developing a script which contains a multi dimensional array, however for some reason the array is not iterating. When executing the script, services are listed as arguments from argument 2. Ex voice data sms. service=${@:2}; for services in $service do ... (2 Replies)
Discussion started by: nms
2 Replies

2. Shell Programming and Scripting

Multi Dimensional array

I have an array of names. Each one of the name, has a number represented to it. For example A has an ID 8, B has an ID 2. What I am after is a for loop that when the array is in position 1, a particular variable is set to the value of position 1 in array 2 declare -a arr=("A" "B" "C"... (6 Replies)
Discussion started by: nms
6 Replies

3. Shell Programming and Scripting

How to reference 2 dimensional array in awk?

Hello, all For a 1-dimensional array, such as myarr_1=1 myarr_1=2 myarr_1=3I know I can write a loop as below to show the array member one by one: for (i in myarr_1){print i, myarr_1}Now, suppose I have a two dimensional array such as: myarray_2=1 myarray_2=2 myarray_2=10 myarray_2=20My... (3 Replies)
Discussion started by: littlewenwen
3 Replies

4. Shell Programming and Scripting

Manipulating a list into a two-dimensional array

hi, total newbie to shell scripting and wondering if some of you guru's can give me a hand on a problem I'm trying to solve. The tmplsnr.a file contains LSNR_51526 db1 db2 LSNR_51527 db3 db4 db5 Summary - depending on which db is set, the script will start the relevant listener... (5 Replies)
Discussion started by: mingy10
5 Replies

5. Programming

Return two dimensional array in c++

I am writing matrix multiplication and trying to return a two dimensional array from a function but I keep getting errors. Can someone please help me? here is my code (it is just the skeleton of my program): void main () { ... int *matmultiply (int, int, int, int , int , int ) ... } ... (4 Replies)
Discussion started by: saboture88
4 Replies

6. Shell Programming and Scripting

Store content from array to Spread_sheet using perl

How to store the content from array to either "row-column" or "column-row" order? (0 Replies)
Discussion started by: kavi.mogu
0 Replies

7. Shell Programming and Scripting

PHP: Search Multi-Dimensional(nested) array and export values of currenly worked on array.

Hi All, I'm writing a nagios check that will see if our ldap servers are in sync... I got the status data into a nested array, I would like to search key of each array and if "OK" is NOT present, echo other key=>values in the current array to a variable so...eg...let take the single array... (1 Reply)
Discussion started by: zeekblack
1 Replies

8. Shell Programming and Scripting

2 dimensional array in unix

I am trying to implementing two dimensinal array in ksh script.Would you pls help me out. I have a large size of file, File contains looks like ID SID VLAUE1 VALUE2 TOTALVALUE 1 a1 01 02 03 1 b1 02 05 07 ... (2 Replies)
Discussion started by: pritish.sas
2 Replies

9. Shell Programming and Scripting

Help for record (2 dimensional array.)

I am going to develop a address book using the shell scripting commands without sed, awk, .... I am thinking to apply the concept of 2 dimenstional array. Can I create a two dimensional array for the insertion/updation/deletion of record in unix. If yes then tell me plz or recommend me some... (1 Reply)
Discussion started by: murtaza
1 Replies

10. Shell Programming and Scripting

Reference two dimensional array in Perl sub

I am trying to reference a two dimensional array in a subroutine and can't seem to figure this one out in Perl. Does anybody know? Please enlighten me. #!/usr/bin/perl -w use constant DIM => 4; sub Shift_elements_right{ my (@Input, @Output) = @_; for ($i = 0 ; $i <= DIM ;... (5 Replies)
Discussion started by: photon
5 Replies
Login or Register to Ask a Question