[perl]の検索結果
Perlの関数を使用して、以下の手順で10進数を2進文字列に
変換することができます。sprintf関数で10進数を16進文字列に
変換pack関数で16進文字列をバイナリーにパックunpack関数で2進文字列に
変換例えば、文字列の先頭...
Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。
- sprintf関数で10進数を16進文字列に変換
- pack関数で16進文字列をバイナリーにパック
- unpack関数で2進文字列に変換
例えば、文字列の先頭文字のASCIIコード値(10進数)を取得し、それを2進文字列に変換に変換する場合は、
次のようなコードになります。
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = _bitstr($asciicode, 8);
print "str = $str\n"; # for debug
exit;
# 10進数を2進文字列に変換する関数
sub _bitstr {
my ($code, $len) = @_;
my $hexcode = sprintf("%X", $code); # 16進に変換
my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}
10進数を単に2進文字列に変換するだけならこれでも構わないのですが、ビット演算子を使ってビットのオン・オフを判定して、
2進文字列を作成していく方法もあります。以下のコードはその実装例です。
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = _bitstrR($asciicode, 8);
print "str = $str\n"; # for debug
exit;
# ビット演算で10進数を2進文字列に変換する関数
sub _bitstrR {
my ($code, $len) = @_;
my $bitstr = '';
for my $i (1 .. $len) {
$bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
$code <<= 1;
}
return $bitstr;
}
ここで問題になるのはどちらの方法が処理速度が優れているかということですが、以下のコードのプロファイルを取ると・・・
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = '';
for my $j (1 .. 10000) {
$str = _bitstr($asciicode, 8);
$str = _bitstrR($asciicode, 8);
}
print "str = $str\n"; # for debug
exit;
sub _bitstr {
my ($code, $len) = @_;
my $hexcode = sprintf("%X", $code); # 16進に変換
my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}
sub _bitstrR {
my ($code, $len) = @_;
my $bitstr = '';
for my $i (1 .. $len) {
$bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
$code <<= 1;
}
return $bitstr;
}
C:\xampp\htdocs\sample>perl -d:Dprof bitstr3.pl
str = 01000001
C:\xampp\htdocs\sample>dprofpp
Total Elapsed Time = 0.018988 Seconds
User+System Time = 0.016988 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
223. 0.038 0.038 10000 0.0000 0.0000 main::_bitstr
47.0 0.008 0.008 10000 0.0000 0.0000 main::_bitstrR
0.00 - -0.000 1 - - strict::import
0.00 - -0.000 1 - - warnings::import
0.00 - -0.000 1 - - strict::bits
0.00 - -0.000 2 - - main::BEGIN
やはり、ビット演算で2進文字列を作成するほうが早いようです。
プログラミングPerl〈VOLUME1〉
オライリー・ジャパン 著者:ラリー ウォール,ジョン オーワント,トム クリスチャンセン
amazon.co.jpのカスタマーレビューを見る
powered by amalink
オープンソースのシンプルな
掲示板CGI「ThreadPlus」の最新版「ThreadPlus 1.1」をリリースしました。ThreadPlus 1.1では、以下の機能が追加されています。ホームページ機能(index.
CGI)RSS出力機能(rss.
CGI)サイトマ...
オープンソースのシンプルな掲示板CGI「ThreadPlus」の最新版「ThreadPlus 1.1」をリリースしました。
ThreadPlus 1.1では、以下の機能が追加されています。
- ホームページ機能(index.cgi)
- RSS出力機能(rss.cgi)
- サイトマッププロトコル対応機能(sitemap.cgi)
- ブックマークレット投稿機能(bbs.cgi)
ホームページ機能(index.cgi)
最新スレッド情報が掲載されたホームページを表示する機能です。
PC向けのページはテンプレートファイルのindex.tmpl、携帯向けindex_m.tmplをテキストエディターなどで編集することで内容を変更できます。
RSS出力機能(rss.cgi)
最新スレッド情報の情報をRSS 2.0形式で出力する機能です。RSSリーダーで最新スレッドの情報を購読することができます。
サイトマッププロトコル対応機能(sitemap.cgi)
Google ウェブマスターツールなどにコンテンツの情報を登録するための機能です。サイトマッププロトコルに対応しています。
ブックマークレット投稿機能(bbs.cgi)
ブックマークレットをブラウザに登録することで、ブラウザに表示中のウェブページを簡単に新しいスレッドとして投稿することができます。
ウェブページ内の任意のテキストを選択することで、その部分を引用して投稿することができます。
ThreadPlus 1.1のダウンロード
最速攻略 CGI/Perl サンプル大全集
技術評論社 著者:KENT
amazon.co.jpのカスタマーレビューを見る
powered by amalink
オープンソースのシンプルな
掲示板CGI「ThreadPlus 1.0」をリリースしました。プログラミング言語はperl、ライセンスはGPLv2です。ThreadPlusは、以前公開していた
掲示板CGI(bbs
CGI.
CGI)の機能を見直し、若干の機能...
オープンソースのシンプルな掲示板CGI「ThreadPlus 1.0」をリリースしました。プログラミング言語はperl、ライセンスはGPLv2です。
ThreadPlusは、以前公開していた掲示板CGI(bbscgi.cgi)の機能を見直し、若干の機能追加、不要な機能の削除、不具合の修正などを行ったもので、携帯電話からも利用できるようになっています。
ThreadPlusの特徴
- 誰にでもわかりやすいシンプルなスレッド形式
- テンプレートエンジン(HTML::Template)によりデザインと処理が分離されておりカスタマイズが容易
- スレッドやコメントの本文に含まれるURLのリンク変換(画像の場合はimgタグも追加)
- 携帯電話に対応(但し、携帯電話向けに最適化されているわけではなく基本的に機能はPCと同じ)
ThreadPlusのデモページ
ThreadPlusのダウンロード
CGIプログラミング
オライリー・ジャパン 著者:スコット グーリッジ,ガンザー バージニックス,シシャ ガンダヴァラム 価格:4,200円 評価:★★★★★
powered by
amalink
さくらのレンタルサーバとは「さくらのレンタルサーバ」は、
さくらインターネットが提供している個人向けの格安
共用レンタルサーバーサービスで、最も料金の安い「ライト」は月額129円(1年契約の場合)から利用でき...
さくらのレンタルサーバとは
「さくらのレンタルサーバ」は、さくらインターネットが提供している個人向けの格安共用レンタルサーバーサービスで、最も料金の安い「ライト」は月額129円(1年契約の場合)から利用できる。
ライトプラン
月額129円の「ライト」では、MySQLの利用はできないものの、PHP、SQLiteが利用できる。また、Perl、Ruby、Pythonで作成した独自のCGIを動かすこともできる。SSLにも対応。
また、インストール作業なしにレンタルサーバのコントロールパネルから設定するだけでブログを作成することできる「さくらのブログ」という機能があり、さくらインターネットでドメインを取得すると独自ドメインでの運用も可能。利用料金は月額129円で10Gなので、有料のブログサービスを利用するより安く独自ドメインのブログを作成することができる。
スタンダードプラン
さらに、月額515円の「スタンダード」プランではMySQLの利用も可能で、オープンソースのブログソフトのWordPressやMTOS(Movable Type Open Source)のインストールも簡単にできるようになっている。
さくらのレンタルサーバ
さくらインターネット
さくらインターネットは、国内最大級の大容量・高速バックボーンを持つ自社運営データセンターを活かして、年額1,543円(月額換算129円)の格安レンタルサーバー(ホスティング)から、専用サーバ、ドメイン、データセンター(コロケーション)、インターネット接続サービスなど、幅広いインターネットインフラサービスを提供している。
ホームページでよく利用される、掲示板、Q&A、共有ブックマーク(リンク集)、連絡フォーム といった機能を、まとめて簡単にホームページに導入(一部機能だけの導入も可能)できる比較的簡単なPerlプログラム「
CGI ...
ホームページでよく利用される、掲示板、Q&A、共有ブックマーク(リンク集)、連絡フォーム といった機能を、まとめて簡単にホームページに導入(一部機能だけの導入も可能)できる比較的簡単なPerlプログラム「CGI APPS 1.0」をリリースしました。ライセンスはMITライセンスですので、無料で自由にカスタマイズして利用できますが、動作については無保証です。
「CGI APPS」は、「掲示板やリンク集は欲しいけどCMSを導入するのは大げさすぎる」「Q&Aだけでいいのでもっと安くして」などとというような個人や中小企業のホームページでの利用を想定しています。
CGI APPS の特徴
- CGIの開発言語として世界中で広く利用されているPerlによる実装
- テンプレートエンジン(HTML::Template)による処理とデザインの分離
- テキストファイルベースのデータ管理
- 管理者向けユーザー認証機能
CGI APPS
「CGI APPS 1.0」のリリースにともない、そのベースとなった
「メールフォームCGI」
「Q&A CGI」
「ブックマークCGI」
「掲示板CGI」は、
ファイルそのまま残しますが更新しません。
レンタルサーバーで運営するホームページ等に設置するお問い合わせフォームや会員登録フォーム、注文フォームなど、確認画面、確認メール送信機能を搭載した各種
メールフォーム(
CGI)を
格安料金にて
作成いたします。プ...
レンタルサーバーで運営するホームページ等に設置するお問い合わせフォームや会員登録フォーム、注文フォームなど、確認画面、確認メール送信機能を搭載した各種メールフォーム(CGI)を格安料金にて作成いたします。
プログラミング言語は、PerlまたはPHPのどちらでも対応可能です。また、オプションでのログ機能の追加やMySQLやSQLiteで構築したデータべースとの連携も可能です。
作成料金はメールフォームの仕様にもよりますが、新規作成の場合はお問い合わせフォームが3,000円~、会員登録フォームが5,000円、注文フォームが20,000円~、既存フォームをカスタマイズする場合は10,000円~となります。お見積りいたしますので、まずはお気軽にお問い合わせください。
見積りのご依頼や不明点についてのお問い合わせには、お問い合わせフォームをご利用ください。
基本機能
- 入力フォーム表示
- 入力チェック機能
- 入力確認画面表示機能
- 管理者宛メール送信機能
- 送信者宛確認メール送信機能
オプション機能
ユーザーローカルが提供しているWikipediaの記述の一部を取得できる
Web APIを、
Perlから呼び出すためのサンプルコード。コードの文字エンコードはUTF-8。標準出力へもUTF-8のまま出力。#!/usr/bin/
Perluse strict;us...
ユーザーローカルが提供しているWikipediaの記述の一部を取得できるWeb APIを、Perlから呼び出す
ためのサンプルコード。コードの文字エンコードはUTF-8。標準出力へもUTF-8のまま出力。
#!/usr/bin/perl
use strict;
use warnings;
# for warning "Wide character in print at ..."
binmode(STDOUT, ":utf8");
use URI::Escape;
use LWP::Simple;
use XML::Simple;
my $item = '2ちゃんねる';
$item = uri_escape($item);
my $url = "http://wikipedia.simpleapi.net/api?keyword=$item";
my $content = get($url);
my $xml = XML::Simple->new();
my $response = $xml->XMLin($content);
print "language: $response->{result}->{language}\n";
print "datetime: $response->{result}->{datetime}\n";
print "body : $response->{result}->{body}\n";
print "strict : $response->{result}->{strict}\n";
print "length : $response->{result}->{length}\n";
print "redirect: $response->{result}->{redirect}\n";
print "url : $response->{result}->{url}\n";
print "id : $response->{result}->{id}\n";
print "title : $response->{result}->{title}\n";
Rakudo.orgとPerl 6開発チームが、アーリーアダプター向けのPerl 6ディストリビューション「
Rakudo Star July 2010 Release」を公開した。
Rakudo Starは、Perl 6の文法や正規表現、イントロスペクション、オブジェク...
Rakudo.orgとPerl 6開発チームが、アーリーアダプター向けのPerl 6ディストリビューション「Rakudo Star July 2010 Release」を公開した。
Rakudo Starは、Perl 6の文法や正規表現、イントロスペクション、オブジェクトモデル、ジャンクションとオートスレッドなど多くの機能が搭載されたPerl 6の実装で、仮想マシン「Parrot Virtual Machine 2.6」やRakudo Perl 6コンパイラ、Perl 6の各種ドキュメントを含んでいる。
Perl 6実装「Rakudo Star」リリース
Rakudo.org
Perlのプログラムから
DBI経由で
MySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。あらかじめphpMyAdminを使用して
MySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「user...
PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPerlプログラムでは、テーブル「users」からステータスが1のレコードを全て取得、一旦配列に格納してから標準出力に出力しています。
検索条件の設定にはプレースホルダを使用し、DB処理でエラーが発生した場合は、例外処理に飛んでエラーの内容が出力されるように、RaiseErrorに1を設定しています。
--- mysql_select.pl ---
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $data_source = "DBI:mysql:testdb"; # 接続先はtestdb
my $username = "test"; # データベースへのアクセス権限を持つユーザーを指定
my $password = "abcd"; # そのパスワード
my $status = 1;
my @recs = ();
eval {
my $dbh = DBI->connect($data_source, $username, $password,
{RaiseError => 1, PrintError => 0});
my $sql = "select * from users where status = ?";
my $sth = $dbh->prepare($sql);
$sth->execute($status);
while (my @rec = $sth->fetchrow_array) {
push @recs, [@rec];
}
$sth->finish;
$dbh->disconnect;
};
if ($@) {
print "Error : $@\n";
}
foreach my $rec (@recs) {
print join(",", @{$rec}), "\n";
}
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配...
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配列リファレンス)を渡すと、リスト分の出力が繰り返されます。
以下は、<TMPL_LOOP>タグの使い方を示すサンプルプログラムです。サンプルプログラムでは、コンマで区切られたデータファイルを読み込んでリストを作成し、それをパラメータに渡してテーブルを表示しています。また、<TMPL_IF>タグ、<TMPL_ELSE>タグを使用してデータがない場合は、テーブルが出力されないようにしています。
--- データファイル(userdata.txt)
kagahiro,kitaakita,kagahiro3@59log.com,011678901
admin,tokyo,webmaster10@59log.com,011778901
buzei,kawasaki,support2@59bbs.org,041758901
--- テンプレートファイル(tmplloop.tmpl)
<html>
<head>
<title>HTML::Templateのサンプルプログラム LOOP</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム LOOP</h1>
<TMPL_IF NAME=DATA_NUM>
<table>
<tr>
<td>User Name</td>
<td>Address</td>
<td>Email</td>
<td>Tel</td>
</tr>
<TMPL_LOOP NAME=USER_INFO>
<tr>
<td><TMPL_VAR NAME=USERNAME></td>
<td><TMPL_VAR NAME=ADDRESS></td>
<td><TMPL_VAR NAME=EMAIL></td>
<td><TMPL_VAR NAME=TEL></td>
</tr>
</TMPL_LOOP>
</table>
<TMPL_ELSE>
No data
</TMPL_IF>
</body>
</html>
--- CGI(tmplloop.cgi)
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $template = HTML::Template->new(filename => 'tmplloop.tmpl');
my @loop_data = ();
open my $infh, '<', "userdata.txt";
while (my $rec = <$infh>) {
chomp $rec;
if ($rec ne '') {
my %row_data;
my ($username, $address, $email, $tel) = split(/,/, $rec);
$row_data{USERNAME} = $username;
$row_data{ADDRESS} = $address;
$row_data{EMAIL} = $email;
$row_data{TEL} = $tel;
push @loop_data, \%row_data;
}
}
close $infh;
$template->param(USER_INFO => \@loop_data);
$template->param(DATA_NUM => scalar(@loop_data));
print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;
|< 先頭へ < 前へ 1 2 3 4 5 次へ >
アクセスランキング
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (40 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (8 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (5 PV)
- 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (4 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (3 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (3 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (3 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (3 PV)
- [FX]裁量ポジションの管理が簡単にできるMT4向け無料ツール(EA)「PositionKeeper」をバージョンアップ(Ver 1.03) (2 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (2 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3273 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (488 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (91 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (89 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (70 PV)
- Million Dollar Ver 1.09向けの収益性を重視したゴールド(Gold、XAUUSD)ロングセットファイル (64 PV)
- 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (62 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (59 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (51 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (46 PV)
アクセス統計
ディレクトリ
関連サイト