use utf8; use Encode; use Geo::Google; use XML::Parser;
#!/usr/bin/perl
use utf8;
use Encode;
use Geo::Google;
use XML::Parser;
my $lng, $lat;
my $address1 = 'your address part 1 here';
my $address2 = 'your address part 2 here';
my ($degree) = getDegrees("$address1 $address2");
if($degree) {
$lng = $degree->longitude;
$lat = $degree->latitude;
} else {
$lng = ''; $lat = '';
}
sub getDegrees { # 住所から緯度経度を検索
return $GEO->location( address => Encode::encode_utf8(shift));
# shift = address / リファレンスを返す
}
use utf8; use Encode; use Geo::Google; use XML::Parser;
#!/usr/bin/perl
use utf8;
use Encode;
use Geo::Google;
use XML::Parser;
my $lng, $lat;
my $address1 = 'your address part 1 here';
my $address2 = 'your address part 2 here';
my ($degree) = getDegrees("$address1 $address2");
if($degree) {
$lng = $degree->longitude;
$lat = $degree->latitude;
} else {
$lng = ''; $lat = '';
}
sub getDegrees { # 住所から緯度経度を検索
return $GEO->location( address => Encode::encode_utf8(shift));
# shift = address / リファレンスを返す
}
print qq|Content-type: text/html\n\n|;という行が必要な以外は、PHP とほとんど同じである。 アップロードには、いつも使っているおなじみの CGI モジュールを使う。
use CGI;そうすると、以下のようにアクセスできる。
our $CGI = new CGI; ... my $xml = $CGI->param('file');$xml はファイルポインタが入っている。通常は open(IN, "..."); などするときの IN にあたるものである。以下は、コード。アップロードする側の HTML ファイルは PHP でアップロードファイルを処理するで紹介したのと同じ。
#!/usr/bin/perl
use strict;
use CGI;
our $CGI = new CGI;
print qq|Content-type: text/html\n\n|;
init();
sub init() {
# XMLパーサー作成 ('UTF-8')
my $xml_parser = new XML::Parser( ProtocolEncoding => 'UTF-8',
Handlers=>{ Start=>\&startElement,
End =>\&endElement,
Char =>\&dataHandler });
# ファイルのオープンはいらない。input タグで指定した name 属性がそのままファイルハンドルになる
my $xml = $CGI->param('file');
# XMLパース処理
$xml_parser->parse($xml) or die "XML error: $xml_parser";
# ファイルクローズ
close($xml);
}
1;
print qq|Content-type: text/html\n\n|;という行が必要な以外は、PHP とほとんど同じである。 アップロードには、いつも使っているおなじみの CGI モジュールを使う。
use CGI;そうすると、以下のようにアクセスできる。
our $CGI = new CGI; ... my $xml = $CGI->param('file');$xml はファイルポインタが入っている。通常は open(IN, "..."); などするときの IN にあたるものである。以下は、コード。アップロードする側の HTML ファイルは PHP でアップロードファイルを処理するで紹介したのと同じ。
#!/usr/bin/perl
use strict;
use CGI;
our $CGI = new CGI;
print qq|Content-type: text/html\n\n|;
init();
sub init() {
# XMLパーサー作成 ('UTF-8')
my $xml_parser = new XML::Parser( ProtocolEncoding => 'UTF-8',
Handlers=>{ Start=>\&startElement,
End =>\&endElement,
Char =>\&dataHandler });
# ファイルのオープンはいらない。input タグで指定した name 属性がそのままファイルハンドルになる
my $xml = $CGI->param('file');
# XMLパース処理
$xml_parser->parse($xml) or die "XML error: $xml_parser";
# ファイルクローズ
close($xml);
}
1;
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Status;
use HTTP::Response;
our $URL = 'https://perltips.twinkle.cc/'; # アクセスする URL
my $proxy = new LWP::UserAgent;
$proxy->agent('your own created browser name here');
$proxy->timeout(60);
my $response = $proxy->request(HTTP::Request->new('GET' => $URL));
my $content = $response->content;
my %tags = (
'img' => 'src',
'a' => 'href',
'link' => 'href',
'td' => 'background',
'form' => 'action'
);
my $data = $content;
skip_others: while($data =~ s/<([^>]*)>// && $i++ < 10000) { # 無限ループに陥るのを防ぐ
my $in_brackets = $1;
foreach $key (keys %tags) {
if($in_brackets =~ /^\s*$key\s+/i) {
if($in_brackets =~ /\s+$tags{$key}\s*=\s*["']([^"']*)["']/i
|| $in_brackets =~ /\s+$tags{$key}\s*=\s*([^\s]+)/i ) {
my $link = $1;
$link =~ s/[\n\r]//g;
$link =~ s/\./\\./g;
$link =~ s/\?/\\?/g;
$content =~
s/\s*=\s*["']*$link["']*/=<<<ここに置換文字列を書く>>>/
if $link !~ m/mailto:/i
&& $link !~ m/javascript/i;
next skip_others;
}
}
}
}
1;
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Status;
use HTTP::Response;
our $URL = 'https://perltips.twinkle.cc/'; # アクセスする URL
my $proxy = new LWP::UserAgent;
$proxy->agent('your own created browser name here');
$proxy->timeout(60);
my $response = $proxy->request(HTTP::Request->new('GET' => $URL));
my $content = $response->content;
my %tags = (
'img' => 'src',
'a' => 'href',
'link' => 'href',
'td' => 'background',
'form' => 'action'
);
my $data = $content;
skip_others: while($data =~ s/<([^>]*)>// && $i++ < 10000) { # 無限ループに陥るのを防ぐ
my $in_brackets = $1;
foreach $key (keys %tags) {
if($in_brackets =~ /^\s*$key\s+/i) {
if($in_brackets =~ /\s+$tags{$key}\s*=\s*["']([^"']*)["']/i
|| $in_brackets =~ /\s+$tags{$key}\s*=\s*([^\s]+)/i ) {
my $link = $1;
$link =~ s/[\n\r]//g;
$link =~ s/\./\\./g;
$link =~ s/\?/\\?/g;
$content =~
s/\s*=\s*["']*$link["']*/=<<<ここに置換文字列を書く>>>/
if $link !~ m/mailto:/i
&& $link !~ m/javascript/i;
next skip_others;
}
}
}
}
1;
方法1:
use lib 'ライブラリのあるパス';
use Foo::Bar;
...
方法2:
unshift @INC, 'ライブラリのあるパス';
use Foo::Bar;
...
とかして、強制的に @INC に入れる。
方法3:
スクリプト中で強制的にインクルードするライブラリへのパスを含めちゃう
(スクリプトの先頭、おなじみ #!/usr/bin/perl の部分に -I オプションを付ける)
#!/usr/bin/perl -I/home/yourdir/lib
…
方法4:
perl -e shell -MCPAN じゃなくてアーカイブのやつをインストールするには、<br />ライブラリの tar.gz を解凍して
# perl Makefile.PL PREFIX=/home/yourname/yourdir/lib
# make install
とかする。PREFIX= でインストール先を指定できる。
Perl のライブラリには必ず Makefile.PL というファイルが入っているから<br />PREFIX オプションを指定してダメだった場合、このファイルの中身をチェックする必要がある。
方法1:
use lib 'ライブラリのあるパス';
use Foo::Bar;
...
方法2:
unshift @INC, 'ライブラリのあるパス';
use Foo::Bar;
...
とかして、強制的に @INC に入れる。
方法3:
スクリプト中で強制的にインクルードするライブラリへのパスを含めちゃう
(スクリプトの先頭、おなじみ #!/usr/bin/perl の部分に -I オプションを付ける)
#!/usr/bin/perl -I/home/yourdir/lib
…
方法4:
perl -e shell -MCPAN じゃなくてアーカイブのやつをインストールするには、<br />ライブラリの tar.gz を解凍して
# perl Makefile.PL PREFIX=/home/yourname/yourdir/lib
# make install
とかする。PREFIX= でインストール先を指定できる。
Perl のライブラリには必ず Makefile.PL というファイルが入っているから<br />PREFIX オプションを指定してダメだった場合、このファイルの中身をチェックする必要がある。