use warnings; use 5.014; # for s///r use File::Replace qw/replace3/; use utf8; my $mainkml = 'main.kml'; my $dynkml = 'dyn.kml'; open my $fh1, '>:encoding(UTF-8)', $mainkml or die "$mainkml: $!"; print $fh1 <<'END_KML1' =~ s/__FILENAME__/$dynkml/r; Network Links 0 0 Random Placemark 0 1 1 1 2 onInterval __FILENAME__ END_KML1 close $fh1; print "Please open '$mainkml' in Google Earth\n"; my $run = 1; $SIG{INT} = sub { $run=0 }; my ($lat,$lon) = (52.514509,13.350103); while ($run) { my (undef,$outfh,$repl) = replace3($dynkml, ':encoding(UTF-8)'); print $outfh <<'END_KML2' =~ s/__LONLAT__/sprintf('%.6f,%.6f',$lon,$lat)/er; Random Placemark Hello, World! __LONLAT__ END_KML2 $repl->finish; sleep 1; $lat += (rand(2)-1)/1000; $lon += (rand(2)-1)/1000; }