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]
|
|
| 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:==========
|
|
|
|
|