You want to split up array @all_st into subgroups of 30 each, I think. You can easily do this using the module List::MoreUtils' function natatime.
You are just a beginner, so you probably aren't aware that, instead of creating 3 or however many separate subarrays of @all_st, you can create an array of arrays like. . . $store_get2[0][0]. This notation would access the first item in the first 'subarray'.
You should read perllol which will explain this better than me :-) (You would probably be better off not appending a comma to your data at this stage of your program. It could more easily done later with a join ",", @some_list).
Here is an example of using natatime
#!/usr/bin/perl
use strict;
use warnings;
use List::MoreUtils qw/ natatime /;
use Data::Dumper;
my @all_st = 1..125;
my @store_get;
my $it = natatime 30, @all_st;
while (my @vals = $it->()) {
push @store_get, [@vals];
}
print Dumper \@store_get;
__END__
C:\perlp>perl t3.pl
$VAR1 = [
[
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
],
[
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60
],
[
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90
],
[
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120
],
[
121,
122,
123,
124,
125
]
];
C:\perlp>
Update A better solution that uses no module and doesn't keep 2 sets of data when only one set is probably required. Also, it puts the data into a form that can be used for an *in* clause for a SQL select statement (single quotes enclosing the items for the *in* clause).
#!/usr/bin/perl
use strict;
use warnings;
my @all_st = 1..125;
my @store_get;
while (@all_st) {
push @store_get, join ",", map "'$_'", splice @all_st, 0, 30;
}
Update: The in keyword will accept unquoted data if the type is integer. So the line above doesn't need the quotes added
push @store_get, join ",", splice @all_st, 0, 30;
|