One way is:
for my $ip (keys %host) {
print "$ip\n";
for my $port (keys %{$host{$ip}{'tcp'}}) {
print $port," ";
print $host{$ip}{'tcp'}{$port}{'state'}," ";
print $host{$ip}{'tcp'}{$port}{'service'},"\n";
}
}
As for adding another line, you could do this:
%host {
'ip1' => {
'tcp' => {
'21' => {
'state' => 'open',
'service' => 'ftp',
},
'80' => {
'state' => 'open',
'service' => 'web',
},
'53' => {
'state' => 'open',
'service' => 'web',
},
},
},
},
...
Be very careful with your punctuation. Hash elements are separated by commas not semicolons and string values must be in quotes.