#!/usr/local/bin/perl use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); $infile=$ARGV[0]; if (!(-e $infile)) { print "Error: Could not find file $infile\n"; print "Press a return to exit program.\n"; <>; exit(0); } my $zip = Archive::Zip->new(); die 'read error' unless $zip->read($infile) == AZ_OK; # my @members = $zip->members(); #$member = $zip->memberNamed( 'doc.kml' ); $zip->extractMember( 'doc.kml' ); open(IFIL,"doc.kml"); @lines=; close(IFIL); open(UFIL,">doc.kml"); $type=0; foreach $line (@lines) { $line=~s/files\///g; print UFIL $line; if ($line=~/o0.jpeg/) { $type=1; } if ($line=~/map_0.jpeg/) { $type=2; } } close(UFIL); if ($type==1) { $zip->extractMember( 'files/o0.jpeg','o0.jpeg'); $zip->extractMember( 'files/i0.png','i0.png'); $zip->extractMember( 'files/i1.png','i1.png'); } elsif ($type==2) { $zip->extractMember( 'files/map_0.jpeg','map_0.jpeg'); } if ($type) { my $newzip = Archive::Zip->new(); $newzip->addFile( "doc.kml" ); if ($type==1) { $newzip->addFile( "o0.jpeg" ); $newzip->addFile( "i0.png" ); $newzip->addFile( "i1.png" ); } elsif ($type==2) { $newzip->addFile( "map_0.jpeg" ); } $outfile=$infile; $outfile=~s/\.kmz//g; $outfile=~s/\.zip//g; $outfile.="_garmin.kmz"; $newzip->writeToFileNamed($outfile); print "Tried to write to $outfile\n"; } else { print "Error: Did not recognize QuickRoute file!\n"; } print "Press a return to finish program\n"; <>; # Change doc.kml # Add all files