とあるエンジニアの闇歴史帳

配列を初期化する - Perl

「Perl大技林」一覧に戻る 配列を初期化するにはいくつかの方法がある。 ここでは代表的な方法を示す。

成長するファイルを読み込み続ける - Perl

「Perl大技林」一覧に戻る 例えばApacheのアクセスログやエラーログなどは、アクセスがある限り半永久的にデータがファイルに追記(記録)されていく。このような成長し続けるファイルを常に読み込み、表示し続けるにはどうすれば良いだろうか? 原理は簡単だ…

実行されたSQLを自動的にログへ記録する - PostgreSQL

データベースへ投げられたSQLを実行される度に記録したいが、どうすれば良いだろう? PostgreSQLでは設定ファイル「postgresql.conf」内にある「log_statement」の設定を変更すれば良い。 PostgreSQLでは8.0からログの記録に関する機能が強化されている。log…

行番号を表示(非表示)する - vim

「Vim入門」一覧に戻る vimでは行番号の表示と非表示を切り替えることが出来る。いずれもエスケープキーを押し、コマンドモードで実行すること。 コマンド 説明 :set number 表示する :set nonumber 非表示 「Vim入門」一覧に戻る 実践Vim 思考のスピードで…

画面を分割する - vim

「Vim入門」一覧に戻る ファイル編集中にvimで画面を分割するには、コマンドモードで次のコマンドを入力すれば良い。

異常終了した際にエラーメッセージを表示したい - Perl,CGI

「Perl大技林」一覧に戻る 実行しているCGIに致命的なエラーが発生した際に通常は「500 Internal Server Error」となり異常終了するところを、エラーメッセージなどを表示したい。CGI::Carpモジュールを利用すれば良い。 使い方は非常にシンプルで、CGI::Car…

HTMLを文字列として表示する - Perl,CGI

「Perl大技林」一覧に戻る 例えば文字列中にHTMLが含まれる場合、それをHTMLではなくタダの文字として表示したい場合がある。このような時にはHTMLの仕様で定められている文字実体参照などへ変換してやれば良い。 原理は非常にシンプルだ。単純に以下の文字…

SHA1の値を取得する - Perl

「Perl大技林」一覧に戻る MD5などよりも安全性の高いと言われるSHA1の値を取得したい。Digest::SHA1モジュールを用いればあっという間に実現できる。 Digest::SHA1モジュールには三種類の関数(メソッド)が用意されており、用途によって使い分けることができ…

タグクラウドを簡単に生成する - Perl

「Perl大技林」一覧に戻る タグクラウド(TagCloud)を生成したいが、かんたんに行えるモジュールはないだろうか?そんな時はHTML::TagCloudモジュールを利用すれば良い。 タグクラウドとは特定のキーワードに重み付けをし、重要な物は大きく表示しそうでない…

データの保存場所を変更する(シンボリックリンク編) - MySQL4.x

MySQL4.0(Linux)でデータベースやログの保存場所を変更したい。 ただし設定ファイルを直接いじるのは怖いのでしたくない。そこでシンボリックリンクを用いた手順を示す。ここではVineLinux3.2上にapt-getでインストールした物を変更するケースとなる。ほかの…

/etc/fstabの設定ミスでOSが起動しなくなった時の対処法 - Linux

Linuxの設定ファイルの修正をミスって再起動(リブート)をすると立ち上がらなくなる場合がある。 このような場合、どうすれば良いだろうか?解決策の一例を示す。

データの保存場所を変更する(my.cnf編) - MySQL4.x

MySQL4.0(Linux)でデータベースやログの保存場所を変更したい。その手順を示す。 今回はVineLinux3.2上にapt-getでインストールした物を変更するケースとなる。ほかのディストリビーションやソースからコンパイルした場合、バイナリ版では異なる可能性がある…

CPANのモジュールをインストールする - Perl

「Perl大技林」一覧に戻る CPANからLinuxなどのUNIXクローンOSに、最新版のモジュールをインストールしたい。Perlに搭載されている機能を用いれば、非常にかんたんに実行できる。

キャンバスを生成する - ImageMagick, Perl

「Perl大技林」一覧に戻る 真っ白なキャンバスに点や線を描く、または文字を書く場合、まずは元となる画像が必要になる。あらかじめ画像を用意しても良いが、ImageMagickでは動的にキャンバスを生成することができる。 インスタンス生成後、Set, Readで各種…

文字列を文字コードへ変換する - Perl

「Perl大技林」一覧に戻る 「文字」を文字コードへ変換するにはord関数を用いれば良いが、「文字列」の場合はどうすれば良いのだろうか?ord関数の使い方を工夫してやれば良い。 単純に1byteずつ置換してやれば良い。この置換時にord関数を用いることになる。

ハッシュに追加した順番通りに取り出す - Perl

「Perl大技林」一覧に戻る 通常、ハッシュに入れた値をkeysなどを使って取り出すと、配列のように追加した順番通りに並ぶことはまずないといってもよいし、期待してはならない。この問題を解決するには、つまりハッシュに順番を保持させる簡単な方法は「Tie:…

ハッシュを高速に処理する - Perl

「Perl大技林」一覧に戻る ハッシュに大量のデータを挿入する際、プログラムの動作を出来る限り早く(高速に)、処理を軽くしたい。実は一行付け足すだけで、かなり違ってくる技がある。 keysは本来ハッシュのキーを取り出す際に利用するのだが、これから登録…

配列内の重複を取り除く - Perl

「Perl大技林」一覧に戻る 配列内の同じ値を取り除きたい。ハッシュを利用すればかんたんに実現できる。

ハッシュのキーと値を全て取り出す - Perl

「Perl大技林」一覧に戻る ハッシュの内容を全て出力するには、いくつかの方法がある。 代表的な3つの方法 まずはもっともシンプルな方法。だが、もっとも使用しないだろう方法。ハッシュのキーと値がずらずら~とただ表示される print %ENV; 次に代表的な3…

ハッシュにキーが存在するか調べる - Perl

「Perl大技林」一覧に戻る ハッシュに指定したキーが存在するかどうか調べたい。exists関数を用いれば良い。 exists関数は、指定したキーが存在すれば真(true)を、存在しなければ偽(false)を返す。

ハッシュのキーでソートする - Perl

「Perl大技林」一覧に戻る ハッシュのキーで並べ替えて表示するには、sort関数でkeysの値を並べ替えればよい。 以下はハッシュのキーを文字列としてソートする方法になる。

ハッシュのキーを逆順にソートする - Perl

「Perl大技林」一覧に戻る ハッシュのキーを並べ替えた後、反転させるにはこれも文字通りreverse関数を使用すればよい。

ハッシュの値でソートする - Perl

「Perl大技林」一覧に戻る ハッシュのキーでソートするのはさほど難しくないが、値で並べ替えるにはどうすればよいだろう?同様にsort関数を用いれば良い。

ハッシュに要素を追加する - Perl

「Perl大技林」一覧に戻る ハッシュ(連想配列)に値を追加したい。これはシンプルに代入してやれば良い。 初期化する際には一気にまとめて代入することができる。その後は通常は一つずつ名前(キー)と値を追加していく

ハッシュから要素を削除する - Perl

「Perl大技林」一覧に戻る ハッシュから要素を削除するには、delete関数を使用する。 delete関数に引数として「$hashu{キー名}」として渡せば、キー名の要素をその場で削除してくれる。

文字列を一文字ずつ分割する(全角半角混合) - Perl

「Perl大技林」一覧に戻る 文字列を分解し、1文字ずつ処理を行いたい。全角文字、2バイト文字が含まれるなら、Jcode.pmを用いるのがお手軽だ。「指定バイト数で自動的に改行する」で取り上げた、Jcode.pmの「jfold」メソッドを活用すれば良い。 jfoldは指定…

アルファベットを大文字または小文字に変換する(全角半角混合) - Perl

「Perl大技林」一覧に戻る 文字列内のアルファベット(英字)を、大文字または小文字に変換したい。 全角文字、半角文字が一緒になっている場合はJcode.pmを利用すれば良い。 trメソッドを用いて、単純に置換してやれば良い。置換条件に半角文字の指定を加えれ…

アルファベットを大文字または小文字に変換する(半角のみ) - Perl

「Perl大技林」一覧に戻る 文字列内のアルファベット(英字)を、大文字または小文字に変換したい。 標準の「uc」「lc」関数を使用すれば良い。 それぞれ次のような意味を持っている。 uc 大文字へ(upper char) lc 小文字へ(lower char)

アラビア数字をローマ数字へ変換する - Perl

「Perl大技林」一覧に戻る アラビア数字(1~9)を、ローマ数字(I~X)へ変換したい。またはその逆を行いたい。Romanモジュールを使用すれば良い。 Romanモジュールは標準ではインストールされない。CPANなどから入手しインストールする必要がある。Romanモジュ…

実行可能な属性をファイルに付加する(svn:executable) - Subversion

解説 参考文献 解説 Subversionでファイルに実行可能な属性を付加したい。 複数のOS間で運用しているといつの間にか設定したパーミションが外れてしまう問題を解決したい。これはSubversionで属性の設定を行えばよい。