memo.xight.org

日々のメモ

カテゴリ : Perl

3ページ目 / 全7ページ

Number::Phone::JP - 日本の電話番号のValidator

Synopsis

use Number::Phone::JP;

my $tel = Number::Phone::JP->new('012', '34567890');
print "This is valid!!\n" if $tel->is_valid_number;

$tel->set_number('098 7654 3210');
print "This is valid!!\n" if $tel->is_valid_number;

$tel->import(qw(mobile PHS));
$tel->set_number('090-0123-4567');
print "This is valid!!\n" if $tel->is_valid_number;


Reference

Number::Phone::JP

via

にぽたん研究所 - 2005-03-29 - 本邦初公開!電話番号の正規表現
http://blog.livedoor.jp/nipotan/archives/17526053.html

Regexp::Assemble - 正規表現ジェネレータ

Summary

add() メソッドに渡した文字列や正規表現の全てにマッチする正規表現を作ってくれるモジュール.

Synopsis

use Regexp::Assemble;

my $ra = Regexp::Assemble->new;
$ra->add( 'ab+c' );
$ra->add( 'ab+-' );
$ra->add( 'a\w\d+' );
$ra->add( 'a\d+' );
print $ra->re; # prints a(?:\w?\d+|b+[-c])


Reference

Regexp::Assemble

にぽたん研究所 - 2005-03-29 - 本邦初公開!電話番号の正規表現
http://blog.livedoor.jp/nipotan/archives/17526053.html

blog.bulknews.net - 2005-03-30 - Regexp::Assemble: blog.bulknews.net
http://blog.bulknews.net/mt/archives/001617.html

via

NamingSense::TokuLog! - 2006-01-28 - 郵便番号に厳密にマッチする正規表現
http://d.hatena.ne.jp/tokuhirom/20060128/1138433449

pmtools - Perl のモジュールや POD に関する小さなコマンドラインツール

Summary

Perl のモジュールや POD に関する小さなコマンドラインツールが同梱されてるパッケージ.

Reference

pmtools

use Perl | pmtools-1.00 Now on CPAN
http://use.perl.org/articles/06/01/13/1950245.shtml

via

naoyaのはてなダイアリー - pmtools
http://d.hatena.ne.jp/naoya/20060114/1137217478

perlsh - perlでインタラクティブなシェル

Summary

Term::ReadLine::Gnu に含まれている perlsh でインタラクティブシェル.
cpan install ではインストールされない.
使用するにはソースを展開して,ファイル群に含まれる perlsh を適切な場所におく必要がある.

Reference

2nd life - perl でインタラクティブなシェルを実現する perlsh
http://d.hatena.ne.jp/secondlife/20060111/1136975310

Term::ReadLine::Gnu

via

cl.pocari.org - perl でインタラクティブなシェルを実現する perlsh
http://cl.pocari.org/2006-01-11-7.html/

Perl で TypeKey 認証

Authen::TypeKey

Synopsis
use CGI;
use Authen::TypeKey;
my $q = CGI->new;
my $tk = Authen::TypeKey->new;
$tk->token('typekey-token');
my $res = $tk->verify($q) or die $tk->errstr;


Apache::AuthTypeKey

Synopsis
## In httpd.conf or .htaccess:
PerlModule Apache::AuthTypeKey
PerlSetVar TypeKeyPath /
PerlSetVar TypeKeyLoginScript /login.pl

## These documents require user to be logged in.
<Location /protected>
	AuthType          Apache::AuthTypeKey
	AuthName          TypeKey
	PerlAuthenHandler Apache::AuthTypeKey->authenticate
	require           valid-user
	PerlSetVar        TypeKeyToken your_token
</Location>

## This is the _return URL that the login.pl script should point to.
<Location /login-protected>
	AuthType    Apache::AuthTypeKey
	AuthName    TypeKey
	SetHandler  perl-script
	PerlHandler Apache::AuthTypeKey->login
	PerlSetVar  TypeKeyToken your_token
</Location>


Reference

YukiWiki - TypeKey
http://www.hyuki.com/yukiwiki/wiki.cgi?TypeKey

Authen::TypeKey
Apache::AuthTypeKey

メールアドレスが正しいかを判定するモジュール

Email::Valid

#!/usr/bin/perl
use Email::Valid;
print (Email::Valid->address('user@example.com') ? 'yes' : 'no');


Mail::CheckUser

#!/usr/bin/perl
use Mail::CheckUser qw(check_email last_check);

my $email = 'user@example.com';

if(check_email($email)) {
	print "E-mail address <$email> is OK\n";
} else {
	print "E-mail address <$email> isn't valid: ", last_check()->{reason}, "\n";
}


Data::Validate::Email

use Data::Validate::Email qw(is_email is_email_rfc822);

if(is_email($suspect)){
	print "Looks like an email address\n";
} elsif(is_email_rfc822($suspect)){
	print "Doesn't much look like an email address, but passes rfc822\n";
} else {
	print "Not an email address\n";
}


Reference

Email::Valid
Debian パッケージディレクトリ検索 (バイナリ) - libemail-valid-perl

Mail::CheckUser

Data::Validate::Email

XML::Simple + JSON で Ajax

1. [Perl] XML over HTTP な API を叩く
2. [Perl] XML::Simple で parse
3. [Perl] そのまま objToJson でJSONに変換
4. [JavaScript] XMLHttpRequest で結果取得
5. [JavaScript] JSON を eval
6. [JavaScript] 復元したデータで DHTML

JKL.ParseXML[2005-10-21-1]でクライアント側でXMLをparseしてもOK.

Reference

JSON
XML::Simple

via

はてな技術勉強会 - 2005年08月26日
http://www.hatena.ne.jp/info/tech#tech050826

Term::ANSIColor

Summary

コンソール上で色付けした文字を扱うためのPerlモジュール.
これは便利!

Sample

#!/usr/bin/perl
use strict;
use warnings;
use Term::ANSIColor qw(:constants);

$Term::ANSIColor::AUTORESET = 1;

print BOLD RED   "RED\n";
print BOLD GREEN "GREEN\n";
print BOLD BLUE  "BLUE\n";


Reference

Term::ANSIColor

via

naoyaのはてなダイアリー - 無線LANブリッジのIPアドレスを探せ
http://d.hatena.ne.jp/naoya/20051231/1135992917

Cheat Sheets Collection

Reference

Perl Cheat Sheet
http://juerd.nl/site.plp/perlcheat
Perl Cheat Sheet
http://ali.as/devel/cheatsheet.html
Perl Cheat Sheet
http://goldenink.com/perl/perlcheat.html
PHP Cheat Sheet
http://www.ilovejackdaniels.com/php/php-cheat-sheet/
JavaScript Cheat Sheet
http://www.ilovejackdaniels.com/javascript/javascript-cheat-sheet/
CSS Cheat Sheet
http://www.ilovejackdaniels.com/css/css-cheat-sheet/
mod_rewrite Cheat Sheet
http://www.ilovejackdaniels.com/cheat-sheets/mod_rewrite-cheat-sheet/
Vim Commands Cheat Sheet
http://bullium.com/support/vim.html
Cheat Sheet Roundup
http://www.petefreitag.com/item/455.cfm

サニタイズの基本

Summary

入門 Ajax pp.16 より。

[2013-03-30] 追記
このエントリは、参考にしてはいけない。

SQLインジェクション

MySQL PHP $sql = mysql_escape_string($sql);
MySQL Perl $sql =~ s/'/''/g; $sql =~ s/\\/\\\\/g;
PostgreSQL PHP $sql = pgsql_escape_string($sql);
PostgreSQL Perl $sql =~ s/'/''/g; $sql =~ s/\\/\\\\/g;
SQLite PHP $sql = sqlite_escape_string($sql);

OSインジェクション

Linux PHP $str = escapeshellarg($str);
Linux Perl $str =~ s/'/\\'/g;

XSS

PHP $str = htmlspecialchars($str);
Perl $str =~ s/

Reference

入門 Ajax - pp.16

入力行に時刻を付けて吐き出すフィルタ

Source

#!/usr/bin/perl
use strict;
use warnings;
use POSIX qq(strftime);
$| = 1;
while (defined(my $line = <>)) {
	print strftime('%Y/%m/%d %H:%M:%S ', localtime), $line;
}

Usage

% ping localhost | puttime
2005/12/09 02:16:08 PING localhost (127.0.0.1): 56 data bytes
2005/12/09 02:16:08 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.0 ms
2005/12/09 02:16:09 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.0 ms
2005/12/09 02:16:10 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.0 ms
2005/12/09 02:16:11 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.0 ms
2005/12/09 02:16:12 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.0 ms

- Reference
スペースモラトリアムノカミサマ - 2005-12-05 - 入力行に時刻を付けて吐き出すフィルタ
http://pmakino.jp/tdiary/20051205.html#p01

via

cl.pocari.org - 2005-12-06 - 入力行に時刻を付けて吐き出すフィルタ
http://cl.pocari.org/2005-12-06-7.html

XML::Simple での XML::SAX

Summary

・ 環境変数 "XML_SIMPLE_PREFERRED_PARSER",またはパッケージ変数 "$XML::Simple::PREFERRED_PARSER" で利用するパーサーを指定可能
・ これら設定が undef の場合,XML::SAX を優先的に使用
・ これら設定は初期状態では undef
・ XML::SAX が内部的に利用するパーサーはユーザが最後にインストールしたSAXパーサーになる

$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
と書くと,XML::Parser が使われる

Reference

search.cpan.org: XML::Simple - Easy API to maintain XML (esp config files)
http://search.cpan.org/%7Egrantm/XML-Simple-2.14/lib/XML/Simple.pm#ENVIRONMENT

iandeth. - XML::Simple は遅い説における意外な落とし穴
http://iandeth.dyndns.org/mt/ian/archives/000589.html

via

Sledge::Plugin::TokuLog! - 「XML::Simple は遅い説における意外な落とし穴」について
http://d.hatena.ne.jp/tokuhirom/20051130/1133306919