For Programmers: Free Programming Magazines  


Home > Archive > PERL Beginners > January 2006 > Nested Loop









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Nested Loop
overkill@sadsix.com

2006-01-19, 6:58 pm

Greetings,

Basically I deleted a portion of a mysql database and need to insert the
subnet back in. The output is suppose to increment the first field
starting with '8' until the IP is 10.168.17.255. I can't figure out my
inside loops condition. Maybe there is a perl module for this?


Example:

> INSERT INTO `anyInventory_values` VALUES (8,1,'10.168.17.0');
> INSERT INTO `anyInventory_values` VALUES (8,2,'Unknown');
> INSERT INTO `anyInventory_values` VALUES (8,3,'');
> INSERT INTO `anyInventory_values` VALUES (8,4,'');
> INSERT INTO `anyInventory_values` VALUES (8,5,'');
> INSERT INTO `anyInventory_values` VALUES (8,6,'');
> INSERT INTO `anyInventory_values` VALUES (8,7,'');
> INSERT INTO `anyInventory_values` VALUES (8,8,'Unknown');
> INSERT INTO `anyInventory_values` VALUES (8,9,'');
> INSERT INTO `anyInventory_values` VALUES (8,10,'');
> INSERT INTO `anyInventory_values` VALUES (8,14,'');
> INSERT INTO `anyInventory_values` VALUES (9,1,'10.168.17.1');
> INSERT INTO `anyInventory_values` VALUES (9,2,'Unknown');
> INSERT INTO `anyInventory_values` VALUES (9,3,'');
> INSERT INTO `anyInventory_values` VALUES (9,4,'');
> INSERT INTO `anyInventory_values` VALUES (9,5,'');
> INSERT INTO `anyInventory_values` VALUES (9,6,'');
> INSERT INTO `anyInventory_values` VALUES (9,7,'');
> INSERT INTO `anyInventory_values` VALUES (9,8,'Unknown');
> INSERT INTO `anyInventory_values` VALUES (9,9,'');
> INSERT INTO `anyInventory_values` VALUES (9,10,'');
> INSERT INTO `anyInventory_values` VALUES (9,14,'');

....



My Runaway Perl Script:


$file = 'out.sql'; # sql script
open(INFO, ">$file"); # open for output


for($x=0;$x<=255;$x++){

for($n=8;$n+1;$n++){

print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,1,'10.168.17.$x')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,2,'Unknown')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,3,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,4,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,5,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,6,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,7,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,8,'Unknown')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,9,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,10,'')\;\n";
print INFO "INSERT INTO \`anyInventory_values\` VALUES
($n,14,'')\;\n";

}
}

Xicheng

2006-01-19, 6:58 pm

overkill@six.com wrote:
> Example:
> ...
> My Runaway Perl Script:

you need to group your data:
=============
use strict; use warnings;
my $head = "INSERT INTO 'anyInventory_values'";
for my $i(0..255){
my @ip=("10.168.17.$i", 'Unknown', '', '', '', '', '', 'Unknown',
'', '');
for my $j(0..9) {
print "$head VALUES ($i,@{[$j+1]},'$ip[$j]');\n";
}
print "$head VALUES ($i,14,'');\n";
}
===========result:==========
INSERT INTO 'anyInventory_values' VALUES (0,1,'10.168.17.0');
INSERT INTO 'anyInventory_values' VALUES (0,2,'Unknown');
INSERT INTO 'anyInventory_values' VALUES (0,3,'');
INSERT INTO 'anyInventory_values' VALUES (0,4,'');
INSERT INTO 'anyInventory_values' VALUES (0,5,'');
INSERT INTO 'anyInventory_values' VALUES (0,6,'');
INSERT INTO 'anyInventory_values' VALUES (0,7,'');
INSERT INTO 'anyInventory_values' VALUES (0,8,'Unknown');
INSERT INTO 'anyInventory_values' VALUES (0,9,'');
INSERT INTO 'anyInventory_values' VALUES (0,10,'');
INSERT INTO 'anyInventory_values' VALUES (0,14,'');
INSERT INTO 'anyInventory_values' VALUES (1,1,'10.168.17.1');
INSERT INTO 'anyInventory_values' VALUES (1,2,'Unknown');
INSERT INTO 'anyInventory_values' VALUES (1,3,'');
INSERT INTO 'anyInventory_values' VALUES (1,4,'');
INSERT INTO 'anyInventory_values' VALUES (1,5,'');
INSERT INTO 'anyInventory_values' VALUES (1,6,'');
INSERT INTO 'anyInventory_values' VALUES (1,7,'');
INSERT INTO 'anyInventory_values' VALUES (1,8,'Unknown');
INSERT INTO 'anyInventory_values' VALUES (1,9,'');
INSERT INTO 'anyInventory_values' VALUES (1,10,'');
INSERT INTO 'anyInventory_values' VALUES (1,14,'');
INSERT INTO 'anyInventory_values' VALUES (2,1,'10.168.17.2');
........

Xicheng

2006-01-19, 6:58 pm

Xicheng wrote:
> overkill@six.com wrote:
> you need to group your data:
> =============
> use strict; use warnings;
> my $head = "INSERT INTO 'anyInventory_values'";
> for my $i(0..255){
> my @ip=("10.168.17.$i", 'Unknown', '', '', '', '', '', 'Unknown',
> '', '');
> for my $j(0..9) {
> print "$head VALUES ($i,@{[$j+1]},'$ip[$j]');\n";

~~
If you need the first field starting from '8', change $i to @{[$i+8]}
print "$head VALUES (@{[$i+8]},@{[$j+1]},'$ip[$j]');\n";

Xicheng
> }
> print "$head VALUES ($i,14,'');\n";
> }
> ===========result:==========


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com