Visit Our UNIX and Linux User Community


multidimensional array in perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting multidimensional array in perl
# 1  
Old 11-27-2007
multidimensional array in perl

i'm trying to open a file with three or more columns and an undetermined, but finite number of rows. I want to define an array for each row with each element of the row as a sub array. The columns are separated by tabs or spaces.

Here's the file:

12x3.12z34b.342sd3.sds 454.23.23.232 aSDGgsOds
4z3x3.134b.332sSSsd3.Ccsds 354.23.2113.232 aSDffGgds
12x333.123ww4b.342sed3.sdsO 22454.23.23.20032 BSDGgds
...

i'm trying it like this:

Code:
#!/usr/bin/perl -w
use warnings;
use strict;

open (FILE, xyz.txt) or die " $!";
   our @lines<FILE>;
   chomp @lines;
close (FILE);

for (@lines) {
  $/="\t|' '";      # field sperator is either tab or ' '
  our @lines=([split / /, $_]);
}

print "First element \'$lines[0][0]\'\n";
print "Second element \'$lines[0][1]\'\n";
print "Third element \'$lines[0][2]\'\n";
print "First element \'$lines[1][0]\'\n";
...

or somehow make a hash reference to each element of the row
Code:
...
print "First element \'$lines{0}->{first]\'\n";
print "Second element \'$lines{0}->{second}\'\n";
print "Third element \'$lines{0}->third}\'\n";
print "First element \'$lines{1}->{first}\'\n";
...

any ideas?

thanks

Last edited by prkfriryce; 11-27-2007 at 06:53 PM..
# 2  
Old 11-27-2007
Quote:
Originally Posted by prkfriryce
i'm trying to open a file with .... an infinite number of rows
That will take a while to process......
# 3  
Old 11-27-2007
Quote:
Originally Posted by porter
That will take a while to process......
sorry i meant 'undetermined, but finite number of rows' Smilie
# 4  
Old 11-27-2007
Here is an example:

Code:
open(FILE, '<x.txt') or die $!;
my @lines;
while (<FILE>) {
	chomp;
	@lines = (@lines, [split(/\s+/)]);
}
close FILE;

foreach (@lines) {
	printf("%-35s|%-30s|%-15s\n", $_->[0], $_->[1], $_->[2]);
}

# 5  
Old 11-28-2007
Quote:
Originally Posted by cbkihong
Here is an example:

Code:
open(FILE, '<x.txt') or die $!;
my @lines;
while (<FILE>) {
	chomp;
	@lines = (@lines, [split(/\s+/)]);
}
close FILE;

exactly... thanks! Smilie
# 6  
Old 11-29-2007
How can I generate this data as an array of hashes?

12x3.12z34b.342sd3.sds 454.23.23.232 aSDGgsOds
4z3x3.134b.332sSSsd3.Ccsds 354.23.2113.232 aSDffGgds
12x333.123ww4b.342sed3.sdsO 22454.23.23.20032 BSDGgds

like this:

@lines = ( {
AA => "454.23.23.232"
BB => "12x3.12z34b.342sd3.sds"
CC => "aSDGgsOds"
},
{
AA => "354.23.2113.232"
BB => "4z3x3.134b.332sSSsd3.Ccsds"
CC => "aSDffGgds"
},
{
AA => "22454.23.23.20032"
BB => "12x333.123ww4b.342sed3.sdsO"
CC => "BSDGgds"
}
);

but my syntax isn't working...
Code:
open(FILE, '<x.txt') or die $!;
my @lines;
while (<FILE>) {
	chomp;
	 my ($BB,$AA,$CC)=split(/\s+/,$_);
         $lines[$_]={BB=>$BB,AA=>$AA,CC=>$CC};
}
close FILE;

print $lines[0]{BB},"\n";
...

# 7  
Old 11-29-2007
Code:
open(FILE, '<x.txt') or die $!;
my @lines;
while (<FILE>) {
	chomp;
	 my ($BB,$AA,$CC)=split(/\s+/,$_);
         @lines = (@lines, {BB=>$BB,AA=>$AA,CC=>$CC});
}
close FILE;

print $lines[0]->{BB},"\n";
...


Previous Thread | Next Thread
Test Your Knowledge in Computers #37
Difficulty: Easy
The hard disk space dedicated for swapping out processes on a memory-constrained Unix system is called the 'swap channel'.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sort multidimensional Array

Hello I have a problem. I create a Multidimensional Array Like this: ENTRY="$kunnum-$host" ENTRY="$host" ENTRY="# $3" for key in "${!ENTRY}"; do ENTRIES=${ENTRY} # INDEX=IP(5) donedeclare -p declare -A ENTRIES=(="unas15533" ="unas" ="# RDP-Terminal 2"... (12 Replies)
Discussion started by: Marti95
12 Replies

2. Shell Programming and Scripting

Multidimensional array

I am learning about bash system variables, such as $ , @ and #. I have this piece of script implementing an array and it is doing its job just fine. This is not the only array I will be using. Just for ease of maintenance and more coding I would like to have the arrays in two dimensional... (4 Replies)
Discussion started by: annacreek
4 Replies

3. Shell Programming and Scripting

Multidimensional array:awk error

awk -F'\t' -v OFS='\t' ' { if($2 in arr) { #print "Sahi", NR,arr for(k=2;k<=NF;k++){ # sum]+=$2 } } else { arr=NR #print "awk",NR for (k=3;k<=NF ; k++){ sum=$k } } } (7 Replies)
Discussion started by: genome
7 Replies

4. UNIX and Linux Applications

SQL database call into Multidimensional Array using Perl Script

#!/usr/local/bin/perl use DBI; use File::Copy; use Time::Local; use Data::Dumper; -Comments Describing what I'm doing-------------- -I'm pulling information from a database that has an ID and Name. They are separated by a space and I'm trying to load them into a multidimensional array so as... (3 Replies)
Discussion started by: eazyeddie22
3 Replies

5. Shell Programming and Scripting

multidimensional array in awk

Hi, I was trying to process a file with the help of awk. I want to first display all the rows that contains 01 and at the end of processing I have to print some portion of all the lines. like below. Output expected: (2 Replies)
Discussion started by: ahmedwaseem2000
2 Replies

6. Shell Programming and Scripting

perl-data from file save to multidimensional array

i have a file,like 1 3 4 5 6 7 8 9 i want to save it into an array. and then i want to get every element, because i want to use them to calculate. for example: i want to calculate 1 + 3. but i cannot reach my goal. open (FILE, "<", "number"); my @arr; while (<FILE>){ chomp;... (1 Reply)
Discussion started by: pp-zz
1 Replies

7. Shell Programming and Scripting

Perl help: Creating a multidimensional array of subdirectories and its contents

I'm currently working with dozens of FASTA files, and I'm tired of having to manually change the filename in my Perl script. I'm trying to write a simple Perl script that'll create a 2-dimensional array containing the name of the folders and its contents. For example, I would like the output... (6 Replies)
Discussion started by: shwang3
6 Replies

8. Programming

multidimensional array using c++ vector

Hi! I need to make dynamic multidimensional arrays using the vector class. I found in this page How to dynamically create a two dimensional array? - Microsoft: Visual C++ FAQ - Tek-Tips the way to do it in 2D, and now i'm trying to expand it to 3D but i don't understand how is the operator working,... (0 Replies)
Discussion started by: carl.alv
0 Replies

9. Shell Programming and Scripting

AWK multidimensional array

In a single dim. awk array, we can use : <index> in <array name> to determine whether a particualar index exists in the array or not. Is there a way to achieve this in a awk multi dim. array ? (4 Replies)
Discussion started by: sinpeak
4 Replies

10. Shell Programming and Scripting

Awk multidimensional Array

Hello Experts,, Can anybody give me a brief idea what is following bold letter statement is for!! what is the term called so that I can google for it.. It seems to be an array inside another array.. awk' /TXADDR/ { txaddr=$NF } ##understood /TXDATA/ { txdata]=$NF... (1 Reply)
Discussion started by: user_prady
1 Replies

Featured Tech Videos