画像でカウンタを表示するプログラム

たまには行動分解するところからはじめましょう。

目的は画像でカウンタを表示する」ことです。これをもう少し細かなレベルまで考えてみましょう。

画像で表示するには、「0〜9までの数字の書いた画像ファイル(例えば0.gif 〜 9.gif)を用意して、カウンタの各桁ごとに数値にあった画像ファイルを表示する」ことになります。

画像ファイルを表示する」部分は、「<IMG SRC="画像ファイル名">」を出力すればよいので、この画像ファイル名を数値に合わせて変えることになります。

カウンタが「123」ならば「<IMG SRC="1.gif"><IMG SRC="2.gif"><IMG SRC="3.gif">」を出力

文字列の置換を使ってできそうですね。数値をタグに変換する部分だけプログラムして実行してみましょう。

数値をタグに変換するプログラム

#!/usr/local/bin/perl

$counter = 12345;  # カウンタの値。例として設定。何でも良い。

$counter =~ s/0/<IMG SRC="0.gif">/g; # 文字列「0」を全て文字列「<IMG SRC="0.gif">」に置換
 
$counter =~ s/1/<IMG SRC="1.gif">/g; # 文字列「1」を全て文字列「<IMG SRC="1.gif">」に置換

$counter =~ s/2/<IMG SRC="2.gif">/g; # 文字列「2」を全て文字列「<IMG SRC="2.gif">」に置換

$counter =~ s/3/<IMG SRC="3.gif">/g; # 文字列「3」を全て文字列「<IMG SRC="3.gif">」に置換

$counter =~ s/4/<IMG SRC="4.gif">/g; # 文字列「4」を全て文字列「<IMG SRC="4.gif">」に置換

$counter =~ s/5/<IMG SRC="5.gif">/g; # 文字列「5」を全て文字列「<IMG SRC="5.gif">」に置換

$counter =~ s/6/<IMG SRC="6.gif">/g; # 文字列「6」を全て文字列「<IMG SRC="6.gif">」に置換

$counter =~ s/7/<IMG SRC="7.gif">/g; # 文字列「7」を全て文字列「<IMG SRC="7.gif">」に置換

$counter =~ s/8/<IMG SRC="8.gif">/g; # 文字列「8」を全て文字列「<IMG SRC="8.gif">」に置換

$counter =~ s/9/<IMG SRC="9.gif">/g; # 文字列「9」を全て文字列「<IMG SRC="9.gif">」に置換

print $counter;

画像ファイルをまとめてフォルダに入れておく場合

ファイル名の前にフォルダ名をつければよいのですが、注意が必要です。フォルダを区切る「/」の文字が置換の「/」として認識されてしまうので、ファイル名の「/」は「\/」として記述します。

例 フォルダgifに入れておく場合

$counter =~ s/0/<IMG SRC="gif\/0.gif">/g;

また、フォルダ名に数字を使ってしまうと置換されてしまうのでフォルダ名には数字を使わないようにしてください。

実行結果

<IMG SRC="1.gif"><IMG SRC="2.gif"><IMG SRC="3.gif"><IMG SRC="4.gif"><IMG SRC="5.gif">

練習問題

上記プログラムを応用して、画像によるアクセスカウンタを作成せよ。