• Perlの情報。どんな書き方もできるので人によって好き嫌いが分かれる。CPANというライブラリが豊富

基本テクニック

引数のファイルを読み込んで表示

  • 下記コードをread.plとして保存
while(<>){
   print "$_\n";
}
perl read.pl 読み込みたいファイル

ファイルハンドルから配列に読み込ませる。

変数宣言

  • 通常の変数の他、配列型や連想配列などは宣言が違ってくる
my $normal;
my %hash = ("key" => "value");
# 使うときは%ではなく$
$hash{"key"};

一行Perl

HTMLの一括置き換え&バックアップ

perl -p -i.bak -e 's/catalog/index/g' *html

タブの置き換え

perl -p -i.bak -e 's/\t/    /g' tabtest

CPAN

ここを参考に設定する。ほとんどリターンキーでOKで、ミラーサイトの選択だけ慎重に!

基本操作

対話モードperl -MCPAN -e shell
直接インストールperl -MCPAN -e 'install "Bundle::Bugzilla"'
config一覧を見るcpan> O conf
configかえるcpan> O conf urllist push http://newurl/
config保存cpan> O conf commit
perl -MCPAN -e 'install "Bundle::Bugzilla"'
  • DBIとPostgres(CentOS3.4で成功)
perl -MCPAN -e 'install "DBI"'
perl -MCPAN -e 'install "DBD::Pg"'

インクルードパスの追加

  • @INCという配列変数にしたがってモジュールを検索している。大抵カレントも含まれるので最悪ライブラリを同じ場所において置けばよい。中身みたいなら以下のコマンドで
print join("\n",@INC);
  • 追加するにはこんな感じで配列に加えてやる
unshift @INC,'/var/tmp';
  • こんなやり方もある。こっちが直感的にわかりやすい気がする。
use lib 'ライブラリへのパス';
  • コードにライブラリへのパスを書くのはいやだという人には環境変数PERLLIBを設定することをお勧めする。

Perlの使えるオプション

汚染検出モード

入力値をそのまま引数に渡すとエラーになる。ユーザ入力値をそのまま使うプログラムを改修する羽目になったらこいつでエラーを出して改修個所の当たりをつけるといいだろう。新規のプログラムでは当然このオプションをつけてもエラーが出ないようなプログラミングを心がけなければいけない。

正規表現ライブラリ

  • というほど大げさなものではなく、一度やったことのメモ書き。大概2ヶ月もたつと忘れてしまいますからね。
# 改行コード除去
$var =~ s/\r\n//g;
$var =~ s/\n//g;
# タブ除去
$var =~ s/\t//g;
# タグ除去
$var =~ s/<.*?>//g;
# 実体参照変換
$var =~ s/&gt;/>/g;
$var =~ s/&lt;/</g;
$var =~ s/&nbsp;/ /g;
$var =~ s/&quot;/"/g;
$var =~ s/&amp;/&/g;
# 英数字以外が含まれていた場合は不正とみなす。
if ($var =~ /[^a-zA-Z0-9]+/) {
    return undef;
}

URLパラメータ分割

use strict;
my $url = shift;
my @params = split(/&/, $url);
my @empty;
my @contain;
foreach my $parts(@params){
 #print "$parts\n";
 @_ = split(/=/, $parts);
 if (scalar(@_) == 2) {
       push(@contain, @_[0] . "=" . @_[1]);
 } else {
       push(@empty, @_[0] . "=");
 }
}
foreach my $parts(@contain){
        print "$parts&\n";
}
foreach my $parts(@empty){
        print "$parts&\n";
}
Counter: 10257, today: 5, yesterday: 1

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-12 (月) 15:33:57