Category Archive: Perl

post by yamamoto | | 0 | 1,057 views

perl tips 文字列に英文以外の文字を取り出す

#!/usr/bin/perl use strict; use Encode; my $content = "阴阳学说 yin-yang theory 中国古代哲学理论范畴。阴阳的对立统一是天地万物运动变化的根本规律。"; print "$content\n"; my $notlatin = GetNotLatin($content); print $notlatin,"\n" ; sub GetNotLatin { my $string =shift; $string.=" "; my @alph_list = ('A' .. 'Z', 'a' .. 'z','\'','.','(',')','-' ); my @string = (); my @word = (); foreach my $character (split //, $string) { if ( grep {$_ eq $character} @alph_list ){ push(@string, $character); } else {     if ($#string>0){         push(@word, ...

post by yamamoto | | 0 | 1,400 views

perl memo DBD::CSV LEFT JOIN

【実行結果】 My-iPad:~/textastic/perl root# perl csv_left_join.pl Found result row: id = 1, name = カンマ 花子, age = Found result row: id = 2, name = カンマ 次郎, age = 30

post by yamamoto | | 0 | 1,822 views

perl memo DBD::CSV JOIN

【実行結果】 My-iPad:~/textastic/perl root# perl csv_join.pl Found result row: id = 1, name = カンマ 花子, age = 26 Found result row: id = 2, name = カンマ 次郎, age = 30

post by yamamoto | | 0 | 3,258 views

perl memo DBD::CSVを使ってみる

DBD::CSVはCPANのページを御覧ください。それから、日本語訳はこちらです。 iPadのインストールとMacBook pro のインストールは前の記事を御覧ください。 なお、基本的に多言語の対応のデータ処理を想定しておりますので、文字コードはUTF-8でやっております。 まず、テーブルの削除(DROP)と作成(CREATE)、そしてデータの挿入(INSERT)と更新(UPDATE)をやってみましょう。 (PRIMARY KEY は使えないそうです) 以下はサンプルcsv_as_db.plの中身です。 #!/usr/bin/perl     use DBI;     $dbh = DBI->connect("DBI:CSV:f_dir=/Volumes/RamDisk/csvdb")         or die "Cannot connect: " . $DBI::errstr;                  $sth = $dbh->prepare("DROP TABLE a.csv ")         or die "Cannot prepare: " . $dbh->errstr();     $sth->execute() or die "Cannot execute: " . $sth->errstr();          $sth = $dbh->prepare("CREATE TABLE a.csv (id INTEGER not null, name CHAR(10))")         or die ...

post by yamamoto | | 0 | 2,382 views

iPad の Perl に DBD::CSV をインストールする

一つのモジュールをインストールするだけではないかと思っていましたが、意外と大変でした。 まずは、Macbook Pro と同じ方法で考えていましたが、課題が次々へと出てきました。 ( p5-dbi がない場合、apt-get install p5-dbi でインストールしてください) ( perl のインストールはこちらのサイトをご参照ください) iSSH で iPad をアクセスして、perl -MCPAN -e shell で入って install DBD::CSV を実行したが、CPAN.pmが古いって更新をしてみました。(更新しないと前に進めないので)しかし、初代 iPad のメモリが足りないため、途中で落ちてしまいました。(何度も><) まず、メモリはなんとかしないと思って仮想メモリは使えないかとググッたのです。 するとこの記事を見つかりました。 (MacBook Pro からSSHで設定すれば、仮想メモリを有効にする必要がないかもしれません)  仮想メモリを有効にして、うまくCPAN.pm を更新しました。もう一回 install DBD::CSVを実行したら、今度は/bin/sh: cc: command not found.が出てきました。う〜ん、c compilerがないですね。^^; Cydia で検索すると、iphone-gccがありましたが、libgccが先にインストールしないと使えないのです。 wget http://apt.saurik.com/debs/libgcc_4.2-20080410-1-6_iphoneos-arm.deb dpkg -i libgcc_4.2-20080410-1-6_iphoneos-arm.deb apt-get install iphone-gcc ln -s /usr/bin/gcc /usr/bin/cc これでccがない問題が解決されました。 もう一回 install DBD::CSVを実行したら、まだエラーが出ていました。perl.h が参照している libutil.h がないって>< これはどこのパッケージにあるのかを探すのにすごく時間かかりました。 だめモードで darwin と libutil.h をググってみたら、下記のサイトにありました。 で、どこに置けばいいのかわからないので、とりあえず perl.h と同じディレクトリに入れてました。 cd /usr/local/lib/perl5/5.10.0/arm-iphoneos/CORE/ wget ...

post by yamamoto | | 0 | 940 views

perl memo perl.h がある CORE ディレクターを探す

perl -MConfig -e 'print $Config{archlib}'

post by yamamoto | | 0 | 1,549 views

MacBook Pro の perl に DBD::CSV モジュールをインストールする

DBD::CSVは、CSVファイルをデータベースのテーブルのようにクエリーとかできるようにするモジュールです。 一旦データベースに取り込む必要がないので、簡単のデータ処理には便利なやり方です。 しかし、macportsから直接インストールできませんので、perl の CPAN shell からインストールしました。 $ mkdir .cpan $ mkdir .cpan/sources $ wget http://www.cpan.org/MIRRORED.BY $ cp MIRRORED.BY ~/.cpan/sources/. $ FTP_PASSIVE=1 $ export FTP_PASSIVE $ perl -MCPAN -e shell cpan>install DBD::CSV (wget がなければ、sudo port install wget でインストールできます)  

post by yamamoto | | 0 | 1,027 views

古くなったmacportsの再インストール

いま使っているMacBook pro(Lion)は、古いMacBook pro (Snow Leopard)から移行したものなので、macportsも古いままでした。 sudo port selfupdate はできますが、突然 sudo port upgrade outdated がエラーなってしまいました。 いろいろ調べてmacports を一旦削除して最新の2.2.1にしましたが、Unable to execute port: can't read "build.cmd"のエラーが出てきて、sudo port install perl5 で perl をインストールすることができませんでした。 Xcodeを再インストールするとか、いろいろ方法がネットで公開されていますが、私の場合は、Xcode の Preferences からDownloadsにあるCommand Line ToolCommand Line Toolsをインストールしたことで直りました。 ちなみにこちらから、iOS 5.0 Simulator と iOS 4.3 Simulator のインストールもできます。

post by yamamoto | | 0 | 1,113 views

perl memo データベース接続(postgresql)

#DBに接続 sub db_connect{     use DBI;         $user="wiki";         $pass="wiki";         $ds="DBI:Pg:dbname=wiki";         $dbh=DBI->connect($ds,$user,$pass) or die "Connect error: ".DBI::errstr; }

post by yamamoto | | 0 | 1,004 views

perl memo ブラウザーからの入力の取得

#環境変数を取得 $remote_user=$ENV{'REMOTE_USER'}; $ip=$ENV{'REMOTE_ADDR'}; $host=$ENV{'REMOTE_HOST'}; $ident=$ENV{'REMOTE_IDENT'}; $edit_cgi="wiki.cgi";   #パラメータを解析     if($ENV{'REQUEST_METHOD'} eq "POST") {         read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});     } else {         $buffer = $ENV{'QUERY_STRING'};     }     @pairs = split(/&/,$buffer);     foreach $pair (@pairs) {         ($name,$value) = split(/=/,$pair);         $value =~ tr/+/ /;         $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;         $value =~ s/\t//g;         $value =~ s/\r\n/\n/g;         $FORM{$name} .= "\0"            if(defined($FORM{$name}));         $FORM{$name} ...