[PR]血液型生年月日で運命診断:無料お試しも本格鑑定!

deep link 連絡先 過去ログ検索 いろいろ upload トイレ チャット 2ショット アンケ−ト 2 掲示板 envcheck @フるセえリ メモちょう


2005/04/17(日)00時01分23秒
文字コードによるURLエンコード結果の違い

例:「あした」

shift-jis→%82%a0%82%b5%82%bd
euc-jp   →%a4%a2%a4%b7%a4%bf
utf-8    →%e3%81%82%e3%81%97%e3%81%9f

2004/10/05(火)16時50分02秒
> $urlで指定したサイトの内容を$dataに。
> use LWP::UserAgent;
> my $ua = LWP::UserAgent->new;
> $ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
> local $data='';
> my $request = HTTP::Request->new('GET' , $url);
> $request->header('Referer', $url);
> my $response = $ua->request($request , sub {$data .= shift;} , 4096); 
> print $response->status_line;
> print "\n";

こうだな
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
my $request = HTTP::Request->new('GET' , $url);
$request->header('Referer', $url);
my $response = $ua->request($request); 
my $data = $response->content;
print $response->status_line;
print "\n";

参考:2004/10/03(日)06時14分00秒

2004/10/03(日)06時18分01秒
つーか

use LWP::Simple;
my $data=get($url);

でいいだろ(笑)よくないか

2004/10/03(日)06時14分00秒
$urlで指定したサイトの内容を$dataに。

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');

local $data='';
my $request = HTTP::Request->new('GET' , $url);
$request->header('Referer', $url);
my $response = $ua->request($request , sub {$data .= shift;} , 4096); 

print $response->status_line;
print "\n";


参考:2003/11/12(水)20時46分58秒

2004/10/02(土)11時26分28秒
どんな文字コードでもutf8に変換
guess_encodingはutf8のときには落ちるので、
!ref($enc)ならutf8と強引に解釈。

use Encode qw/ from_to /;
use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /;
my $enc = guess_encoding( $data );
from_to( $data , $enc->name , 'utf8' ) if ( ref($enc) );

2004/10/02(土)11時23分53秒
フォーム入力データの受け取りとデコード。
とりあえずutf8もsjisもうまくいった。euc-jpも大丈夫でしょう

use CGI;
$CGI::POST_MAX=400;          #POSTデータサイズの上限(バイト)
$CGI::DISABLE_UPLOADS = 1;   #ファイルアップロードのPOSTを拒否
my $query = new CGI;
my $data = $query->param('form_name');

2004/09/07(火)04時00分34秒
まちがえた。ただしくはこっちだ。

@bに含まれるものを@aから除外する

my %temp_b = map { $_ => 1 } @b;
@a = grep {! exists $temp_b{$_}} @a;

2004/09/07(火)03時59分03秒
@bに含まれるものを@aから除外する

%temp_b = map { $_ => 1 } @b;
@a = grep {! exists $b{$_}} @a;

2004/08/29(日)07時59分03秒
> やっとくと何気に見た目が良くなるかもしれない処理

修正
$text =~ s/<.*?>//gi;
$text =~ s/^\s+//;
$text =~ s/\s+$//;
$text =~ s/\s\s+/ /g;
$text =~ s/&quot;|&#34;|&#034;/"/g;
$text =~ s/&#39;|&#039;/'/g;
$text =~ s/&nbsp;/ /g; 
$text =~ s/&lt;/</g;
$text =~ s/&gt;/>/g;
$text =~ s/&amp;/&/g;

参考:2003/11/12(水)21時13分36秒

2004/08/29(日)01時42分14秒
配列から重複した要素を取り除く。さらに登場回数をカウント

my %count;
@array = grep(!$count{$_}++, @array);

http://www.din.or.jp/~ohzaki/perl.htm#ArrayUnique

2003/11/18(火)03時20分53秒
マルチスレッド処理
http://derangeworld.hp.infoseek.co.jp/source/multithread.txt

2003/11/12(水)21時20分35秒
文字列を比較するときに全角半角の違い、大文字小文字を違いを意識したくない
なら、比較直前に半角にそろえて英文字は全部小文字にしなきゃいけない。けど、
シフトJISだとなかなかうまくいかないのよねー。だからEUCにするよ、おれは。

--------------------
my $from = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!”#$%&’()=^¥|{}:;+*?_/<>−';
my $to   = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!"#$%&\'()=^\|{}:;+*?_/<>-';
&jcode::convert ( \$from , 'euc' );

&jcode::convert ( \$data , 'euc' );
&jcode::tr( \$data , $from , $to);
$soft =~ tr/A-Z/a-z/;
--------------------

2003/11/12(水)21時13分36秒
やっとくと何気に見た目が良くなるかもしれない処理

--------------------
$data =~ s/\&quot\;/\"/g;
$data =~ s/\&nbsp\;/ /g;
$data =~ s/\&amp\;/\&/g;
$data =~ s/\&lt\;/</g;
$data =~ s/\&gt\;/>/g;
$data =~ s/^\s+//;
$data =~ s/\s+$//;
$data =~ s/\s\s+/ /g;
$data =~ s/<.*?>//gi;
--------------------

2003/11/12(水)21時08分51秒
で、肝心のデータの抜き出し処理だけどなにげに一番めんどくさい。
一番簡単なのがHTMLファイルをそのまま配列に入れて、
1行ずつマッチングさせていくだけで済むとき。
きれいなHTMLならこれで大丈夫。

でも汚いときはchompで改行コードを取っていったん全部くっつけて
1つの変数に入れる。その後、特徴的な部分でsplitして配列に入れる。
(例えば抜き出したい各項目の先頭に●があるなら/●/でsplit)。
その後、1つずつマッチングさせていく。

--------------------
JISとかEUCのときは、
&jcode::convert ( \$data , 'sjis' );
で、シフトJISに変換してからマッチング(ほかのに合わせてもいいけど)。
UTF-8のときは、
use Encode qw/ from_to /;
from_to( $data, 'UTF-8', 'shiftjis' );

2003/11/12(水)20時58分22秒
メール送信はこんなかんじで。mimew.plはどこかで手にいれとくこと。
$bodyに本文、$subjectに題名

--------------------
require "./mimew.pl";
#SMTPサーバ名
my $mailhost='localhost';
#自分のメールアドレス
my $mailadd ='';
#送信先のメールアドレス
my $toadd = '';
#メールソフトの名前
my $mailer ='Becky! ver. 2.06.02';

$subject = mimeencode( jcode'jis($subject) );
$body = jcode'jis($body);

my $head = "From: $mailadd\nTo: $toadd\nX-Mailer: $mailer\nSubject: $subject\nContent-Type: text/plain; charset=iso-2022-jp\n\n";
my $send = "$head$body\n";

use Net::SMTP;
my $smtp = Net::SMTP->new($mailhost);
$smtp->mail($mailadd);
$smtp->to($toadd);
$smtp->data();
$smtp->datasend($send);
$smtp->dataend();
$smtp->quit;
--------------------

2003/11/12(水)20時53分48秒
プロクシ通したいときは(例では、プロクシは127.0.0.1:8080にしとく)
LWP::UserAgentの場合は
$ua->proxy('http', 'http://127.0.0.1:8080/');
をmy $ua = LWP::UserAgent->new;のあとにでも追加。
HTTP::Liteの場合は
$http->proxy ( '127.0.0.1:8080' );
を$http->reset();のあとにでも追加。

2003/11/12(水)20時46分58秒
で、最近はPPMでインストールしなくても使えるLWPをメインに使ってます。

------------------
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
my $request = HTTP::Request->new('GET' , $url);
$request->header('Referer', $url);
my $response = $ua->request($request , $file); 
#return ($response->status_line);
print $response->status_line;
print "\n";
------------------
RefererとかUserAgentをいじらないなら
LWP::Simple;
my $response = getstore($url, $file);
で動くはず。
(ためしてない)

2003/11/12(水)20時39分21秒
最初にウェブからのデータ取得だけども、SOCKSたたくのも面倒なんで、ActivePerlのPPMでHTTP::Liteを入れて作ったのがこんなもん。
$urlと$referer渡せば$fileで指定したファイルにデータが保存されます。

------------------
use HTTP::Lite;
my $http = new HTTP::Lite();
$http->reset();
$http->add_req_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$http->add_req_header('Referer', "$referer");
my $request = $http->request("$url");
if ($request eq "200") {
  my $data = $http->body();
  open (OUT,">$file");
  binmode (OUT);
  print OUT $data;
  close(OUT);
}
------------------
スクリプトの種類によっては$requestが302のときに
$http->headers_array()からLocationヘッダからURL取って再接続してます

2003/11/12(水)20時30分37秒
いろんなサイトからデータを取得して、ウェブにアップロードしたりメールしたり
してるわけですが、Perlスクリプトを書いて、それをwindowsのタスクに登録して
自動で動かしてます。スクリプトの書き方のまー分からないこと(笑)。とはいえ、
せっかくちょっとはノウハウがたまったので多少は披露しようかと。

環境はwindows2000+ActivePerl。面倒くさいっていうかよく分からないので、
オブジェクトとかクラスとかそういうのはほとんど使ってないし、速く動かすた
めの最適化もしてません。とりあえず動けばいいしさ。例外処理もタイムアウト
もほとんどしてないしね。

以上は、現在登録されている新着順1番目から19番目までの記事です。これ以下の記事はありません。


くずはすくりぷと Final Beta #3 (Preview Release 2)+α


[PR]恋愛の悩みなら:こころtoからだで診断!