Perl arrays and loop through array


 
Thread Tools Search this Thread
Top Forums Programming Perl arrays and loop through array
# 1  
Old 03-06-2011
Perl arrays and loop through array

Hi All

I need to get <STDIN> from a user. the <STDIN> is a range of number delimited by "," (comma) and can be with range delimited by "-".

Example: 1,2,3,4-9,12,15,34-36,70

Now I need to get this from the user and go on each number and "Do something"... but when trying to do this as above the loop use the array element as string.

Code:
my $str = "1, 2 ,3, 4,6 -10,11 - 15,16, 17";

$str =~ s/\s+//g;
$str =~ s/-/\.\./g;
my @arr = split /,/, $str;
for (@arr){
    my $i = $_;
    print "==>>> $i\n";
}

The result of this is:
Code:
==>>> 1 ==>>> 2 ==>>> 3 ==>>> 4 ==>>> 6..10 ==>>> 11..15 ==>>> 16 ==>>> 17

and not:
Code:
==>>> 1 ==>>> 2 ==>>> 3 ==>>> 4 ==>>> 6 ==>>> 7 ==>>> 8 ==>>> 9 ==>>> 10 ==>>> 11 ==>>> 12 ==>>> 13 ==>>> 14 ==>>> 15 ==>>> 16 ==>>> 17

as wanted...

Any suggestions? Thank you all.

Last edited by radoulov; 03-06-2011 at 08:35 AM.. Reason: Code tags, please!
# 2  
Old 03-06-2011
Code:
% perl -le'

  $str = "1, 2 ,3, 4,6 -10,11 - 15,16, 17";

  $str =~ s/(\d+)\s*-\s*(\d+)/@{[$1..$2]}/g;

  print "==>>> $_" for split /[\s,]+/, $str;

  '
==>>> 1
==>>> 2
==>>> 3
==>>> 4
==>>> 6
==>>> 7
==>>> 8
==>>> 9
==>>> 10
==>>> 11
==>>> 12
==>>> 13
==>>> 14
==>>> 15
==>>> 16
==>>> 17

This User Gave Thanks to radoulov For This Post:
# 3  
Old 03-06-2011
Thanks. {solved}

Code:
my @arr = eval $str;

or
Code:
$str =~ s/(\d+)-(\d+)/join(",",$1..$2)/ge;


Last edited by Scott; 03-06-2011 at 11:21 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Looping an array of 2d arrays in C

Le sigh... Hopefully this will be the last time I have to ask for help on this topic. For a while now I've been working with a 1d array that holds 2d arrays. For reference you can view here. Now I'm just trying to loop through the elements with the following: #include <stdio.h> void... (3 Replies)
Discussion started by: Azrael
3 Replies

2. Programming

Calling an array of arrays in C.

Corona688 was great in helping me learn how to create arrays that hold other two dimensional array here. Unfortunately I didn't think ask about how to implement or call them. Basically, I'm trying to call an array of two-dimensional arrays like this: declaration: int (*side_one) = { { white_l1,... (6 Replies)
Discussion started by: Azrael
6 Replies

3. Programming

Making an array of 2D arrays in C

I hate I'm asking for help again. Unfortunately it seems there just aren't any links I can find on making an array that holds a bunch of two dimensional arrays. Maybe my google-fu is lacking. Basically I have a header file like this: #define MATRIX 10 int white_l1; int white_l2; int... (2 Replies)
Discussion started by: Azrael
2 Replies

4. Shell Programming and Scripting

Bash arrays: rebin/interpolate smaller array to large array

hello, i need a bit of help on how to do this effectively in bash without a lot of extra looping or massive switch/case i have a long array of M elements and a short array of N elements, so M > N always. M is not a multiple of N. for case 1, I want to stretch N to fit M arrayHuge H = (... (2 Replies)
Discussion started by: f77hack
2 Replies

5. Shell Programming and Scripting

awk loop using array:wish to store array values from loop for use outside loop

Here's my code: awk -F '' 'NR==FNR { if (/time/ && $5>10) A=$2" "$3":"$4":"($5-01) else if (/time/ && $5<01) A=$2" "$3":"$4-01":"(59-$5) else if (/time/ && $5<=10) A=$2" "$3":"$4":0"($5-01) else if (/close/) { B=0 n1=n2; ... (2 Replies)
Discussion started by: klane
2 Replies

6. Shell Programming and Scripting

Loop through array of arrays of string with spaces

Hi I'm trying to loop through an array that contains other arrays and these arrays consist of strings with spaces. The problem is that I can't seem to preserve the spacing in the string. The string with spaces are either divided into multiple items if I change IFS to \n or all the elements of... (4 Replies)
Discussion started by: kidmanos
4 Replies

7. Shell Programming and Scripting

using arrays and also help with array.contains functionality

here is what i have... i=1 while read line do if grep -i-q "create procedure"<<<$line then startline="$line" endline="blahblah" Get procedure name into a variable named procName procName="procedure name is stored" do some... (2 Replies)
Discussion started by: vivek d r
2 Replies

8. Shell Programming and Scripting

perl - need help with 2 arrays to hash or 2d array?

I have 2 arrays: @array1 outputs the following: 1 1 1 2 @array2 outputs the following A B C D (2 Replies)
Discussion started by: streetfighter2
2 Replies

9. Shell Programming and Scripting

Searching array of arrays in perl

Suppose there are two arrays of arrays: @A = ( , , , ); @B = ( , , , , ); For each of $A, $A, $A..., I want to find the corresponding one in @B (match the letter, like $A eq $B), and print out both the second item, for example, $A and $B. How can I do this in perl? grep + map? Hope I... (1 Reply)
Discussion started by: zx1106
1 Replies

10. Shell Programming and Scripting

Perl array of arrays

Hi, I am trying to assign an array as a value to one of the array element, I mean I have an array @KS and array @kr. I want array @KS to hold @kr as an element. So I am doin this $KS=@kr; But the value stored is number of elements in the @kr array. Can... (2 Replies)
Discussion started by: eamani_sun
2 Replies
Login or Register to Ask a Question