[Perl]の検索結果


Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。

  1. sprintf関数で10進数を16進文字列に変換
  2. pack関数で16進文字列をバイナリーにパック
  3. 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

[2239] Posted by kagahiro at 2012/12/09 20:36:29
0 point | Link (4) | Trackback (0) | Comment (0)

オープンソースのシンプルな掲示板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

[2183] Posted by kagahiro at 2012/05/15 18:06:40
0 point | Link (4) | Trackback (0) | Comment (0)

オープンソースのシンプルな掲示板CGI「ThreadPlus 1.0」をリリースしました。プログラミング言語はperl、ライセンスはGPLv2です。

ThreadPlusは、以前公開していた掲示板CGI(bbscgi.cgi)の機能を見直し、若干の機能追加、不要な機能の削除、不具合の修正などを行ったもので、携帯電話からも利用できるようになっています。

ThreadPlusの特徴

  • 誰にでもわかりやすいシンプルなスレッド形式
  • テンプレートエンジン(HTML::Template)によりデザインと処理が分離されておりカスタマイズが容易
  • スレッドやコメントの本文に含まれるURLのリンク変換(画像の場合はimgタグも追加)
  • 携帯電話に対応(但し、携帯電話向けに最適化されているわけではなく基本的に機能はPCと同じ)

ThreadPlusのデモページ
ThreadPlusのダウンロード

CGIプログラミング
オライリー・ジャパン 著者:スコット グーリッジ,ガンザー バージニックス,シシャ ガンダヴァラム 価格:4,200円 評価:★★★★★


powered by amalink

[2140] Posted by kagahiro at 2012/01/17 23:17:11
1 point | Link (2) | Trackback (0) | Comment (1)

さくらのレンタルサーバとは「さくらのレンタルサーバ」は、さくらインターネットが提供している個人向けの格安共用レンタルサーバーサービスで、最も料金の安い「ライト」は月額129円(1年契約の場合)から利用でき...
[2135] Posted by kagahiro at 2011/12/07 17:51:23
0 point | Link (13) | Trackback (0) | Comment (0)

ホームページでよく利用される、掲示板、Q&A、共有ブックマーク(リンク集)、連絡フォーム といった機能を、まとめて簡単にホームページに導入(一部機能だけの導入も可能)できる比較的簡単なPerlプログラム「CGI ...
[2075] Posted by kagahiro at 2010/11/14 23:38:58
0 point | Link (3) | Trackback (0) | Comment (0)

レンタルサーバーで運営するホームページ等に設置するお問い合わせフォームや会員登録フォーム、注文フォームなど、確認画面、確認メール送信機能を搭載した各種メールフォーム(CGI)を格安料金にて作成いたします。プ...
[2041] Posted by kagahiro at 2010/10/01 16:52:07
0 point | Link (9) | Trackback (0) | Comment (0)

ユーザーローカルが提供しているWikipediaの記述の一部を取得できるWeb APIを、Perlから呼び出すためのサンプルコード。コードの文字エンコードはUTF-8。標準出力へもUTF-8のまま出力。#!/usr/bin/Perluse strict;us...
[2032] Posted by kagahiro at 2010/09/24 20:05:21
0 point | Link (1) | Trackback (0) | Comment (0)

Rakudo.orgとPerl 6開発チームが、アーリーアダプター向けのPerl 6ディストリビューション「Rakudo Star July 2010 Release」を公開した。Rakudo Starは、Perl 6の文法や正規表現、イントロスペクション、オブジェク...
[1984] Posted by kagahiro at 2010/07/31 00:18:27
0 point | Link (0) | Trackback (0) | Comment (0)

PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「user...
[1981] Posted by kagahiro at 2010/07/26 00:12:18
0 point | Link (6) | Trackback (0) | Comment (0)

<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配...
[1975] Posted by kagahiro at 2010/07/22 17:36:36
0 point | Link (4) | Trackback (0) | Comment (0)

|< 先頭へ  < 前へ  1 2 3 4 5  次へ >


アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (81 PV)
  2. [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (17 PV)
  3. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (14 PV)
  4. 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」をバージョンアップ(Ver 2.04) (8 PV)
  5. 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(EA)「PositionKeeper MT5」 #FX (6 PV)
  6. 将棋ウォーズに嬉野流、トマホーク、青野流、羽生式袖飛車などの新エフェクト (5 PV)
  7. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (5 PV)
  8. Google News (グーグルニュース)日本版 (5 PV)
  9. 2chまとめサイト - 痛いニュース(ノ∀`) (4 PV)
  10. SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (4 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2023 PV)
  2. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (360 PV)
  3. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (345 PV)
  4. [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (303 PV)
  5. 選んではいけないEA #間違いだらけのEA選び (219 PV)
  6. Google News (グーグルニュース)日本版 (193 PV)
  7. YouTube(ユーチューブ)日本版 - 動画共有、ライブ配信 (173 PV)
  8. MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (164 PV)
  9. 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (155 PV)
  10. SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (109 PV)

アクセス統計

ディレクトリ

関連サイト