Въпреки че има много запитвания, които задават един и същи въпрос. Но тук грешката се хвърля от apache вместо от Perl. Опитвам се да създам XML отговор за клиента на Mac OS X Mavericks и съм написал perl скрипта, както следва:
#!/usr/bin/perl -wT
use lib '/opt/local/lib/perl5/site_perl/5.16.1/Geo';
use strict;
use CGI;
use Geo::Gpx;
open (FH, "/tmp/temp/file.txt") or print ("Unable to Open File");
my $gpx = Geo::Gpx->new;
my $cgi = CGI->new;
print $cgi->header(-type=>"text/gpx",-status=>"200 OK");
my $lon;
my @arr = <FH>;
foreach(@arr){
my %waypoints;
my $var = $_;
my @lat = split(/\s+/,$var);
#@waypoints=split(/\s+/,$_);
$waypoints{$lat[0]}=$lat[1];
$waypoints{$lat[2]}=$lat[3];
$gpx->add_waypoint(\%waypoints);
}
my $xml = $gpx->xml;
print $xml;
open FILE, ">/tmp/temp/xmlfile.xml" or die $!;
print FILE $xml;
close (FILE);
close(FH);
За да може apache да намери действителния път на Gpx.pm, използвах 'use lib', за да му покажа истинския път на файла. Въпреки че този скрипт работи перфектно на командния ред, моят apache сървър извежда следната грешка:
[Tue Nov 26 18:34:51 2013] [error] [client 127.0.0.1] Can't locate Geo/Gpx.pm in @INC
(@INC contains: /opt/local/lib/perl5/site_perl/5.16.1/Geo /Library/Perl/5.16/darwin-thread-multi-2level
/Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level /Network/Library/Perl/5.16
/Library/Perl/Updates/5.16.2 /System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16
/System/Library/Perl/Extras/5.16/darwin-thread-multi-2level /System/Library/Perl/Extras/5.16 .) at /Users/Rachit/Sites/temp.pl line 7.
[Tue Nov 26 18:34:51 2013] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /Users/Rachit/Sites/temp.pl line 7.
Използвал съм macports и при търсене в мрежата открих, че Mavericks има предварително инсталиран perl 5.16. Така че apache може да използва това, а perl използва инсталираните библиотеки на macport. При проверка на пътищата, споменати от файла apache error_log, както публикувах по-горе, копирах Gpx.pm в една от библиотеките, инсталирани в Geo Folder, но все още не го разрешавам. При изпълнение на 'which perl' Резултатът
/opt/local/bin/perl
И "кой cpan" дава
/opt/local/bin/cpan
Моля, коригирайте този проблем, тъй като не мога да продължа напред поради това. И аз не съм толкова запознат с apache.