2008年12月アーカイブ

質問は、こんな感じ

 

perlでPHPみたいにrtrimをしたいです。
文字列の一番最後に全角スペースや半角スペースがあれば
削除するみたいな感じにしたいです。
全角が2つあってもそれも削除します。

どうすれば可能でしょうか?

 

#2を回答した方が、#1の方を惜しいと言ってるんだけれども、

#2の方も惜しいww

 

正規表現で、

 

$str =~ s/[\s ]+$//g;

 

すると、半角スペース、または、UTF-8の全角スペース「E38080」が分解され、

「\xE3」または、「\x80」または、「\x80」を消すってなっちゃいます

 

正解は、こんな感じ

 

作ったのは、チョー簡単なcgiで、やってることはパラメータで受けたURLを

perlにてリクエストし、JSON形式で返すだけ

 

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use HTTP::Lite;
use JSON::Syck;
use Jcode;

my($data, %qq);
my $q    = CGI->new();
my $http = HTTP::Lite->new();
my $req  = $http->request($q->param('src')) or goto RET;
my $body = $http->body();

if ($q->param('headless')) {
    $body =~ s!^.*<body[^>]*>(.*)</body>.*$!$1!i;
}
my $char = getcode($body);
if ($char && $char !~ /utf\-?8/i) {
    $body = jcode($body, $char)->utf8;
}
for ($q->param()) {
    $qq{$_} = $q->param($_);
}
$data = {%qq, content => $body};
RET:

print
    $q->header(-type => 'application/x-javascript; charset=UTF-8'),
    $q->param('callback'), '(', JSON::Syck::Dump($data), ');', "\n";
exit;

 

まー、いたって簡単ですな

 

これを使って、右サイドバーのamazon広告をonloadで変えてみます

 

 

 

たとえば、こんな感じのcgiを計測しようと思った時に

 

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);

my $a = 'あいうえお';
my $t = [gettimeofday];

if (!$a) {
    use Jcode;
}

jcode($a, 'utf8')->sjis;
print "Content-type:text/html\n\n";
print tv_interval($t);
print "\n";
exit;

 

と、

 

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);

my $a = 'あいうえお';
my $t = [gettimeofday];

my $jcode;
# if (!$a) {
if ($a) {
    require "/usr/lib/perl5/site_perl/5.8.8/Jcode.pm";
    $jcode = Jcode->new();
}

$jcode->set($a, 'utf8')->sjis;
print "Content-type:text/html\n\n";
print tv_interval($t);
print "\n";
exit;

 

は、全く結果が違っちゃいます

 

Perl 勉強本

Oracle 勉強本

J2EE 勉強するなら、これしかなくね?

ブログ管理人

SE perler@29

アドパートナー

tooland

Pingo!

boox