小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlノート

SQLiteを使ってみる!(パート2)

前回のをencode/decodeを使って書き換えてみました。 『from_toはバイト文字列をバイト文字列に変換するのでよくないです』、とのご指摘もありましたので…。 use strict; use warnings; use DBI; use Encode; use utf8; binmode STDOUT, ':encoding(shiftjis…

Perlで文字列長(バイト数)を求めるにはパート2

約2年前の2007/12/3に以下の記事を書きました。 Perlで文字列長(バイト数)を求めるには しかし、length関数は、utf8 pragmaするとバイト数でなく、文字数を返すようになるのです。 で、バイト数を求めるにはと…ググると以下のfbisさんのページに遭遇しま…

Perlで .NET Framework クラスを利用する

膨大な .NET FrameworkクラスをPerlでも利用できないかと考えました。 Perlでは、Windows用のPerlとしてActivePerlが利用できる。 ActivePerlでは、PerlScriptというスクリプトが利用できる。 PerlScriptでは、WScript Objectがデフォルトで利用できる。 WSc…

等しくないの『!=』 と『<>』

Perl、JavaScript、Java等のC言語系の『等しくない』は『!=』です。 VB6、VBA、VBScript、VB2005のVB系の『等しくない』は『<>』です。 ちなみに、SQLでは両方OKですね! また、ちなみに『等しい』は、C言語系が『==』で、VB系は『=』です。 なんでこの記…

IISとApacheのドキュメントルートの違い

あまり詳しくないのですが、IISとApacheのドキュメントルートの違いは、以下の感じですか? IISは、任意のファルダをドキュメントルートに設定できる。別の言い方をすれば、任意のフォルダを仮想パスに設定できる。 Apacheでのドキュメントルートは、httpd.c…

Apacheのprintenv.plには気をつけろ!

Windows用のApache2系をインストールし、CGIの設定をした後、とりあえず、デフォルトで入っているcgi-binのprintenv.plを実行しますが、すると『ファイルのダウンロード』が出て上手く行かない場合があります。 これは、単に表示が上手く行かないだけで、C…

SQLiteを使ってみる!

実は、ActivePerl(私のは5.8.8)には、標準でDBが使えるようになっているのです! そう、ActivePerlをインストールしただけで、標準でSQLiteがバンドルされているのです! まさか、SQLが使えるDBが言語のパッケージに入っているとは思ってもいません…

Perlでのファイルロックについて

Perlでのファイルロックでは、普通、flock関数を使用します。 flock関数の第1引数にはファイルハンドルを指定し、第2引数には以下のいずれかの値を指定します。 尚、 LOCK_SHやLOCK_EX等を使用する場合は、『use Fcntl ':flock';』宣言が必要です。 1(LOC…

ファイルのサイズを変更するtruncate

SQLでは、ロールバック無しにデータを削除するtruncateがありますが、Perlでもデータを削除してファイルのサイズを変更するtruncate関数があります。 truncate関数は、ファイルハンドルだけでなくファイル名指定でもサイズ変更が出来ます。 とりあえず、…

配列の要素をユニークにする!

Linuxのuniqコマンドみたいに配列変数の要素をユニークにしたい場合があります。 しかし、標準関数には残念ながら…そのような関数はありません。 またしかし、柔軟なPerlでは、ちょっと工夫すると既存の関数で出来てしまうのです。 ◆サンプル use strict; us…

Perlでのファイル処理について

Perlでのファイル処理は、以下の感じです。 組み込み関数によるオープン・リード・ライト・クローズ FileHandleモジュールによるオープン・リード・ライト・クローズ ファイルテスト演算子によるファイル存在チェックやファイルサイズの取得等 ファイル操作…

ActivePerlのライセンス

私の場合、WINDOWSでのPerlは、ActivePerl5.8.8を使っています。 つい最近まで、フリーソフトウェアのライセンスだと思っていましたが、ちょっと違うらしい…。 しかし、『このパッケージは、無償で商用または非商用の目的で使うことができる』は、確かなよう…

Perlでの日本語処理について

えーと、Perlでの日本語処理は、結論から言うと、今の時代、以下の感じです。 WINDOWSでは、ソースコードをUTF-8で書き、ファイルI/Oや標準入出力ではシフトJISに変換する。 LINUXでは、ソースコードをUTF-8で書き、ファイルI/Oや標準入出力もUTF-8と…

Perlでの配列連結について

Perlには配列変数があり、配列を操作する組み込み関数も沢山用意されています。 たとえば、以下の感じ。 shift:配列をシフトして先頭の要素を取り除く unshift:配列をシフトして先頭に要素を追加する pop:配列をシフトして末尾の要素を取り除く push:配…

Perlでの and と or について

Perlでの and と or も論理演算子といい、普通の言語のようにif文でも使用しますが、Perlでは以下のサンプルのように普通文でも使用します。 ◆サンプル open my $fh, '>', $file and print "Open OK!\n" or die "Cannot open '$file': $!"; ◆andの性質 and …

『Perlノート講座』というWebページを公開!!

実は、Perlで挫折した人のための再入門をコンセプトとしてスタートした『初めてでないPerl』でしたが、イマイチだったので…。 『Perlノート』の人気にあやかって、『Perlノート講座』として再スタートします!! プログラミング初めての人が、無理なくPerlを…

Perlでのプロセス排他について

Web等のマルチユーザ環境では、複数のユーザが同時に処理要求した場合、シーケンシャル番号の採番などで排他制御が必要になります。 元々マルチユーザ環境のLinux系では、色々とサポートされていますが、元々シングルユーザ環境のWindows系では、あまりサポ…

Perlノートでググるとベスト10独占!!

WindowsXPで『Perlノート』キーワードでのGoogle検索をすると1,230,000件ヒットし、1ページ目独占(1位〜10位)状態に!! 最近、たまたま気がつきました。気持ちいい! http://www.google.co.jp/search?hl=ja&safe=off&rlz=1T4GZEZ_jaJP259JP259&q=Perl…

Perlでのオブジェクト指向について

Perlは元々は、オブジェクト指向言語ではありません。 しかし、柔軟な言語仕様のPerlでは、オブジェクト指向言語のように振る舞うことも可能なのです。 普通、オブジェクト指向プログラミングでは、以下の要素が必要です。 クラス(Perlではパッケージで対応…

Perlでのオブジェクトについて

えーと、前回ご説明しましたが、Perlでは一つのパッケージが一つのクラスになります。 つまり、パッケージ名がクラス名になるのです。 また普通、クラスには、オブジェクトを構築するコンストラクタがあります。 そして、コンストラクタでblessしたリファレ…

Perlでのblessについて

useやモジュールとリファレンスが理解出来てくると、blessが気になってきますね! 今回は、そんなblessの謎に迫ります。 blessを一言でいうと、リファレンスとパッケージを紐付けます。 たとえば、以下を見てください。 use strict; use warnings; my %test_…

Perlでのuse宣言について

Perlをやり始めると、requireはすぐ分かるんだけれど、useって謎だなぁって思いますね! 今回は、そんなuseの謎に迫ります。 はじめに、requireは、C言語でいう%includeと同じで別ファイルにあるソースを実行時にあたかも自ソースとして読み込みます。 つぎ…

Perlでのリファレンスについて

普通、リファレンスといえば、一覧の機能参照のことですが、Perlでリファレンスといえば、言語仕様のアドレス参照のことなのです。 まぁ、PerlでのリファレンスをC言語でいえば、アドレス演算ができないポインタのようなものなのです。 リファレンスの利用…

『初めてでないPerl』ページ更新

『初めてでないPerl』に『【その0】 プログラミングの基礎の基礎』を追加しました! http://chaichan.lolipop.jp/src/perlbgn.htm あと、リファレンスとモジュールの説明ページを作りたいと思っている今日この頃です。 しかし、なかなか…。

URLからPathを抜き出すには

URLは、RFC1738では、以下のようになっています。 HTTP URL は、以下のような形態を取る http://:/? http://www.spencernetwork.org/reference/rfc1738-ja-URL.txt 以下にURLからを抜き出す正規表現を書いてみました。 ◆サンプル use strict; use warnings; …

プログラミングの基礎の基礎

えーと、前回以下のWebページを作りましたが、しかし本当の初心者にはまだまだ取っ掛かりが高いと思いますので本コンテンツを追加します。 初めてでないPerl ◆ はじめに 今ここを読んでいるということは、プログラミングに興味があり、Perlでもやってみよう…

『選択の最短マッチ(最小マッチ)は可能ですか?』の答え

昨日のつづきです。 ◆選択の最短マッチ(最小マッチ)は可能ですか? http://d.hatena.ne.jp/chaichanPaPa/20090902/1251890804 ◆答え(masa-kさんに教えていただきました) $wkstr =~ /^(A.*)(CCC|DDD)/; を $wkstr =~ /^(A.*?)(CCC|DDD)/; とする。 ・サン…

選択の最短マッチ(最小マッチ)は可能ですか?

まず、Perlでの文字列マッチは、デフォルトでは最長マッチ(最大マッチ)です。 たとえば、以下の感じです。 ◆最長マッチ $wkstr = "AAABBBCCCAAABBBCCC"; $wkstr =~ /^(A.*)CCC/; print $1, "\n"; C:\perltest>perl t01.pl AAABBBCCCAAABBB これを『.*?』を…

フォールバック(fallback)とフェールバック(failback)

ちょっと勘違いがありました。 Perlでの演算子のオーバーロードで、fallbackと言う機能があるのですが、『l』と『i』を見違えてフェールバックだと思っていました。 ちなみに、fallbackでTRUEを指定すると、演算子に対するメソッドが見つからない場合、Perl …

perlにも真偽値は存在する

『値がオブジェクトで、かつ演算子boolが定義されている場合』 http://blog.livedoor.jp/dankogai/archives/51268304.html 上記にあるソースを理解するには、演算子のオーバーロードを知らないと太刀打ちできないです。 あと、fallback、Carp、blessなども必…