Top > Programming Language [全て開く]
2011年9月27日

PHPやPerlで変数の記号に「$」が使われる理由

September 27,2011 1:55 AM
Tag:[, ]
Permalink

PHPやPerlで変数を定義するとき、当たり前のように先頭に「$(ドル/ダラー)」をつけていますが、ふと、

「変数の前に付ける記号はなぜ『$』なんだろう?」

と思い立ち、そんなことはものの本に書かれているのかもしれませんが、ネットで調べてみました。

ちなみにPerlで「$」を使うのはスカラ変数だけです。

1.「$」はBASIC言語から使われている

BASIC言語では変数の型で文字列を表すときに、次のように「$」を使っています。ただし変数の前ではなく後につけています。

10 READ A$
20 READ B$
30 C$=A$+B$
40 PRINT C$

また「『$』はBASICの名残で使っているようです」という記事をみつけました(ただしVBの話として)。

2.「$」は「ストリング」?

仮にPHPやPerlなどがBASICの名残で「$」を継承していると仮定しても、なぜBASICでは「$」を使っていたのでしょうか。

調べていると、Wikipediaの「Dollar sign」の解説の中に次のような記述がありました。

$ was used for defining string variables in older versions of the BASIC language ("$" was often pronounced "string" instead of "dollar" in this use).

推測の域を超えませんが、「$」という記号は縦棒がなければ「S」になるので、BASICの時代には「$」は文字列(String)を意味する記号として使われていたのかもしれません。

Perlの場合はスカラー(Scalar)の「S」として使っているのかもしれません(推測で書いてます)。

ということで明確な情報が得られていないので、情報お待ちしています。

2011.10.16追記
オライリー「初めてのPerl第5版」のP53に、「Larryの主張は、$calar,@rrayの意味で定義している」旨の記述がありました。

3.Perlの「@」や「%」の由来は?

話がそれますが、Perlの配列変数を示す「@」は「a」に似ているので「Array」を意味しているのかもしれません(これも推測です)。

また、ハッシュ変数を示す「%」は、簡単なハッシュ関数で割り算を利用した余りを使うので、その演算子を示す「%」からきているのでしょうか(もちろん推測です)。

こちらも情報お待ちしています。

4.参考サイト

Comments [0] | Trackbacks [0]
2009年4月12日

ImageMagick と Image::Magick(PerlMagick) のバージョン対応

April 12,2009 1:23 AM
Tag:[, ]
Permalink

Windows版の ImageMagick は、インストール時に、Perl で ImageMagick を操作するための Perl モジュール Image::Magick(PerlMagick) を、オプション指定でインストールすることができます。

ただし、ImageMagick のバージョンによって、インストールできる Image::Magick のバージョンが異なります。下の図の赤枠は、インストールウィザードの途中で表示される Image::Magick のインストール指定と、そのバージョンです。

インストールウィザード

この場合、ImageMagick 6.3.7 のインストール時に、ActivePerl 5.8.8 build 822 に対応する Image::Magick をインストールすることを示しています。

以下、ImageMagick のバージョン別に、同時にインストールされる Image::Magick のバージョンが対応する ActivePerl バージョンを調べてみました。

ImageMagick と Image::Magick のバージョン対応
ImageMagick バージョン同時にインストールする Image::Magick が
対応する ActivePerl バージョン
ImageMagick-6.3.2-9
    ~
ImageMagick-6.3.4-2
Perl 5.8.8 build 819
ImageMagick-6.3.4-3
    ~
ImageMagick-6.3.5-8
Perl 5.8.8 build 820
ImageMagick-6.3.5-9
    ~
ImageMagick-6.3.8-0
Perl 5.8.8 build 822
ImageMagick-6.3.8-1
    ~
ImageMagick-6.4.1-3
Perl 5.10.0 build 1002
ImageMagick-6.4.1-4
    ~
ImageMagick-6.4.3-6
Perl 5.10.0 build 1003
ImageMagick-6.4.3-7
    ~
ImageMagick-6.5.2-10
Perl 5.10.0 build 1004
ImageMagick-6.5.3-0
    ~
ImageMagick-6.5.5-4
Perl 5.10.0 build 1005
ImageMagick-6.5.5-5
    ~
ImageMagick-6.5.9-1
Perl 5.10.1 build 1006
ImageMagick-6.5.9-2
    ~
Perl 5.10.1 build 1007

上記の各バージョンの ImageMagick については、2009年4月2010年8月現在、下記のURLからダウンロードできることを確認しています。

Main Site » Mirror » image_magick

なお、ActivePerl 5.8.9 を利用している場合は、多分、ActivePerl 5.8.8 build 822 対応のバージョンの ImageMagick(ImageMagick-6.4.1-3 等)で良いと思います。

上記に掲載した表の元データは、下記の各インストールウィザードでの表記にもとづいています。

Perl 5.8.8 build 819
ImageMagick-6.3.2-9-Q8-windows-dll.exe
ImageMagick-6.3.3-10-Q8-windows-dll.exe
ImageMagick-6.3.4-0-Q8-windows-dll.exe
ImageMagick-6.3.4-1-Q8-windows-dll.exe
ImageMagick-6.3.4-2-Q8-windows-dll.exe
Perl 5.8.8 build 820
ImageMagick-6.3.4-3-Q8-windows-dll.exe(表記は920だが多分820の誤り)
ImageMagick-6.3.4-6-Q8-windows-dll.exe
ImageMagick-6.3.4-10-Q8-windows-dll.exe
ImageMagick-6.3.5-0-Q8-windows-dll.exe
ImageMagick-6.3.5-3-Q8-windows-dll.exe
ImageMagick-6.3.5-6-Q8-windows-dll.exe
ImageMagick-6.3.5-8-Q8-windows-dll.exe
Perl 5.8.8 build 822
ImageMagick-6.3.5-9-Q8-windows-dll.exe
ImageMagick-6.3.5-10-Q8-windows-dll.exe
ImageMagick-6.3.6-10-Q8-windows-dll.exe
ImageMagick-6.3.7-10-Q8-windows-dll.exe
ImageMagick-6.3.8-0-Q8-windows-dll.exe
Perl 5.10.0 build 1002
ImageMagick-6.3.8-1-Q8-windows-dll.exe
ImageMagick-6.3.8-2-Q8-windows-dll.exe
ImageMagick-6.3.8-3-Q8-windows-dll.exe
ImageMagick-6.3.8-5-Q8-windows-dll.exe
ImageMagick-6.3.8-11-Q8-windows-dll.exe
ImageMagick-6.3.9-10-Q8-windows-dll.exe
ImageMagick-6.4.0-1-Q8-windows-dll.exe
ImageMagick-6.4.0-11-Q8-windows-dll.exe
ImageMagick-6.4.1-1-Q8-windows-dll.exe
ImageMagick-6.4.1-2-Q8-windows-dll.exe
ImageMagick-6.4.1-3-Q8-windows-dll.exe
Perl 5.10.0 build 1003
ImageMagick-6.4.1-4-Q8-windows-dll.exe
ImageMagick-6.4.1-10-Q8-windows-dll.exe
ImageMagick-6.4.2-10-Q8-windows-dll.exe
ImageMagick-6.4.3-1-Q8-windows-dll.exe
ImageMagick-6.4.3-3-Q8-windows-dll.exe
ImageMagick-6.4.3-5-Q8-windows-dll.exe
ImageMagick-6.4.3-6-Q8-windows-dll.exe
Perl 5.10.0 build 1004
ImageMagick-6.4.3-7-Q8-windows-dll.exe
ImageMagick-6.4.3-10-Q8-windows-dll.exe
ImageMagick-6.4.4-0-Q8-windows-dll.exe
ImageMagick-6.4.5-0-Q8-windows-dll.exe
ImageMagick-6.4.7-10-Q8-windows-dll.exe
ImageMagick-6.4.8-10-Q8-windows-dll.exe
ImageMagick-6.4.9-6-Q8-windows-dll.exe
ImageMagick-6.5.0-10-Q8-windows-dll.exe
ImageMagick-6.5.1-10-Q8-windows-dll.exe
ImageMagick-6.5.2-10-Q8-windows-dll.exe
Perl 5.10.0 build 1005
ImageMagick-6.5.3-0-Q8-windows-dll.exe
ImageMagick-6.5.3-10-Q16-windows-dll.exe
ImageMagick-6.5.4-10-Q8-windows-dll.exe
ImageMagick-6.5.5-0-Q8-windows-dll.exe
ImageMagick-6.5.5-3-Q8-windows-dll.exe
ImageMagick-6.5.5-4-Q8-windows-dll.exe
Perl 5.10.1 build 1006
ImageMagick-6.5.5-5-Q8-windows-dll.exe
ImageMagick-6.5.5-10-Q8-windows-dll.exe
ImageMagick-6.5.6-10-Q8-windows-dll.exe
ImageMagick-6.5.7-10-Q8-windows-dll.exe
ImageMagick-6.5.8-10-Q8-windows-dll.exe
ImageMagick-6.5.9-0-Q8-windows-dll.exe
ImageMagick-6.5.9-1-Q8-windows-dll.exe
Perl 5.10.1 build 1007
ImageMagick-6.5.9-2-Q8-windows-dll.exe
ImageMagick-6.5.9-5-Q8-windows-dll.exe
ImageMagick-6.5.9-10-Q8-windows-dll.exe

2010.08.13
確認バージョンを追加しました。

Comments [8] | Trackbacks [0]
2005年8月16日

Active Perl でワイルドカードを利用する

August 16,2005 11:58 PM
Tag:[, , ]
Permalink

UNIX やLinux ではコマンドラインから Perl を実行する時、入力するファイル名に「*(ワイルドカード)」を使用することができます。

IT用語辞典ワイルドカード

例えばあるディレクトリに10のHTMLファイルがあり、それを全て順番に読み込みたい場合、「*.html」と指定するだけで、ファイル名をひとつずつ記述しなくても全てのHTMLファイルを対象とすることができます。

ところが ActivePerl でワイルドカード指定をしたところ、ワイルドカード「*」がそのままファイル名になるだけで全く読み込まれませんでした。googleで検索してみたところ、ActivePerl の仕様でMS-DOSのワイルドカードに対応していない、つまりファイル名として展開されないようです。

ですが利用できる方法も同時にみつかりましたので、ActivePerl でワイルドカードが利用する方法をご紹介します(備忘録)。

1.Wildcard.pm をダウンロード
下記のサイトより Wildcard.pm をダウンロードします。

KippMy Scripts

2.Wildcard.pm の配置
ダウンロードしたファイルをPerlライブラリディレクトリに配置します。Perl のパスが /usr/bin/perl であれば、配置ディレクトリは、

C:\usr\lib

になります(Cドライブにインストールされている場合)。

3.スクリプトに use 関数を追加
実行するPerlスクリプトの先頭に

use Wildcard;

を追加します。

以上です。これでワイルドカードを指定するとファイル名として展開されるようになります。
参考サイトは下記です。ありがとうございました。

リネームのスクリプトでPerlと正規表現の基本を学ぶ (4)

ちなみにこのページの最後に書いてある文章には軽く斬られました(笑)。

?(略)?もっと上手な「Perl使い」の人たちは、ワイルドカード自体あまり使いません。Perl内に用意された別の方法を使ってもっと柔軟に複数ファイルを扱うことが多いので、この仕様はそれほど問題にはならないのです。?(略)?
Comments [0] | Trackbacks [2]
2004年7月28日

PHP5のインストール

July 28,2004 1:20 AM
Tag:[]
Permalink

以前よりカテゴリー別アーカイブを分割表示にしたかったのですが、そのためには自宅サーバにPHPをインストールしなければなりません。そもそもPHP自体が何者か良く分かってなかった(笑)私にとってはやや高いハードルでした。が、リンクしてる方が使い始めているのを見ていると焦りが(笑)。
#予めサービスとして用意されているレンタルサーバはいいですね…。

ということで一念発起。調査に時間がかかりましたが無事インストールできました。以下にその方法を紹介しておきます。
その前に「PHPは何か?」ということですが、「Hypertext Preprocesser の略で、eコマースサイトやその他のWebアプリケーションのための動的Webページを作るための、オープンソースで提供されているサーバーサイドスクリプト言語です」ということらしいです。これではよく分からないので簡単なサンプルを紹介します。

HelloWorld.php というファイルを作り、下記のHTMLを記述します。

<html>
  <body>
    <?php echo "Hello World!!"; ?>
  </body>
</html>

ファイルをどこに配置する等の細かい説明は省略して、IE等のブラウザにこの helloWorld.php で終わる URL(例:http://localhost/HelloWorld.php) を指定し、このファイルにアクセスします。PHPがインストールされていれば、表示されたHTMLソースは

<html>
  <body>
    Hello World!!
  </body>
</html>

となります。
要するに青色で表示した <?php ? ?> の部分(PHPスクリプト)をPHPが解釈して実行してくれるわけです。上記はPHPスクリプトにする必要はありませんがPHPで扱われるタグの例として示しました。実用的なスクリプト例としては以下のようなものがあります。

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
    echo 'あなたはInternet Explorerを使用しています<br/>';
}
?>

これは下記のような結果を表示します。

あなたはInternet Explorerを使用しています<br/>

では本題に入ります。今回、2004/07/13に公開された PHP5.0.0 をインストールしました(巷では 4.x.x が多いみたいですが)。なおOSは Windows2000、HTTPサーバは Apache2.0 で予めインストールされていることが前提で書いてます。

1.PHPのダウンロード

PHPは無償でダウンロードできます。PHPのサイトから上部の download をクリックし、 Windows Binaries と書かれた下の PHP 5.0.0 zip package をクリック。

2.PHPのインストール

ここではCドライブ直下に"php"というフォルダを配置する例で記述します。まずダウンロードしたアーカイブを解凍します。解凍して出来上がった上位のフォルダを"php"に変更してCドライブに移動するか、Cドライブ直下にphpフォルダを作って解凍したファイルをごっそりコピーします。phpフォルダ配下に php.exe やdllファイル等がずらっと並んでいる状態になればOKです。

3.ファイルのコピー

phpフォルダ配下にある、拡張子が".dll"のファイルを C:\WINNT(XPならWINDOWS/system32) 配下にコピーします。また php.ini_recommended を php.ini にリネームして C:\WINNT(XPならWINDOWS)にコピーします。多くのサイトでは php.ini_dist をリネームするように書かれていますが、日本語マニュアルのページWindowsシステムへのインストールでは、

配布されるzipファイルには php.ini-dist と php.ini-recommended の二つのiniファイルが 含まれています。パフォーマンスとセキュリティの観点から 最適化されたデフォルト設定がなされている php.ini-recommended のほうを使うことが推奨されます。

と書かれていますのでこちらを使用することにしました。

4.php.ini のカスタマイズ

先の日本語マニュアルでは「PHPはこのiniファイルのデフォルト設定できちんと動作します。」と書かれてまして、とりあえず私は何も設定していません。日本語化対応で下記の部分は修正が必要かも知れません。

拡張モジュールの設定
extension_dir = C:/php/ext/
 
マルチバイト対応のためのコメント記号(;)削除
;extension=php_mbstring.dll
 
マルチバイト出力変換の有効化
output_handler = mb_output_handler
 
マルチバイト対応のためのコメント記号(;)を適宜削除
;mbstring.xxx = xxx

5.Apacheの設定変更

ApacheにPHPを関連付ける設定です。httpd.conf に下記を追加します。
なおApche上でPHPを動作させるには ApacheモジュールDLLを使用する方法とCGIバイナリを使用する方法があるようです。両者の違いが分からなかったのですが私はDLLを使用する方を選んでみました(もしかしたら機能や性能面で違いがあるのかも知れません)。詳細は日本語マニュアルのApache2.0サーバに載ってます。

ApacheモジュールDLLを使用する場合

173行目辺り:ApcheでのPHP有効化
LoadModule php5_module C:/php/php5apache.dll

CGIバイナリを使用する場合

530行目辺り:エイリアスの設定("/php/"を"C:/php/"と解釈)
ScriptAlias /php/ "C:/php/"
 
840行目辺り:PHP実行ファイルの実体を指定
Action application/x-httpd-php /php/php.exe

いずれの場合も必須の設定

325行目辺り:ファイル名を省略した時に index.php を検索
DirectoryIndex index.html index.html.var index.php
 
830行目辺り:PHPが動作するファイル拡張子の指定
AddType application/x-httpd-php .php

6.Apacheの再起動

7.テスト

以下のPHPスクリプトを作成、index.php 等のファイル名で保存しURLアクセス。

<? phpinfo(); ?>

下記の画面が表示されればインストールOKです。
テスト画面

以上です。なおインストールに際して参考にさせて頂いたサイトは下記の通りです(なぜかblogサイトなし)。どうもありがとうございました。

Comments [0] | Trackbacks [0]
2004年6月30日

J2SE 5.0 発表

June 30,2004 5:13 PM
Tag:[]
Permalink

J2SE(Java 2 Standard Edition)がバージョンアップするという記事がYahooのニュースに載ってました。現在のバージョンは 1.4 なので本来なら 1.5 なのですが、これまでのマイナーバージョンだった小数点以下をメジャーバージョンとして振り直すようです。

Comments [0] | Trackbacks [0]
Now loading...
Introduction
List of "Programming Language"
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site
loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.12