質問というか、お直しして貼っていただきたいのですが、以前友達に、教わってカウンターを作ったのですが、上手く動かなくなってしまいました。
プログラム言語とか全然わからないので、直したものを貼っていただけると幸いです。ソースはこれ↓です。
#!/usr/local/bin/perl
$file = "./data.txt"; #変数file=./datta.txtの中身
$gif_file = "./image/"; #GIFファイルまでのアドレス(GIFファイルの入ったフォルダ)
#ファイル読み込み
open (FP,"$file"); #$file=data.txtを開く
$data = <FP>; #変数$dataに<FP>を格納
close(FP); #ファイルを閉じる
#カウント
$data = $data + 1; #$dataに1プラスする処理
#ファイル書き込み
open (FP,">$file"); #変数$fileに$data=<FP>を格納
print FP $data; #$dataの表示
close(FP); #FPを閉じる
どうかよろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
画像表示部分としてgifcat.pl の中身を示されてもね。
それをちゃんと用法に乗っ取って使っているのかどうかの方が問題です。
あなたが編集しているスクリプトの方で
gifcat'gifcat()
という関数を呼び出している手前で、
画像用ファイルの配列を作って、それを引数として渡していますか??
ファイル名の作り方にも問題がありそうな気がしますけど。
http://www.kent-web.com/
などで配布されているgifcat.pl を使ったカウンターを
参考にされることをおすすめします。
No.5
- 回答日時:
#1です。
補足していただいたスクリプトは誰が修正した物ですか?
少しオリジナルを改編しているようですね。
オリジナルの「gifcat」を一度使ってみたらどうでしょう?
オリジナルはここの一番下です。
http://www.tohoho-web.com/wwwsoft.htm
参考URL:http://www.tohoho-web.com/wwwsoft.htm
No.4
- 回答日時:
#1です。
補足で貼っていただいた部分は、コメントであってスクリプト本体ではありません。
画面に表示させようとしている部分が有るはずなので、そこを載せていただきたいのですが・・・
この回答への補足
これでしょうか?文字数の関係で全部張り切れませんでした。
package gifcat;
$pflag = 0;
$LeftPos = 0;
$logicalScreenWidth = 0;
$logicalScreenHeight = 0;
;# =====================================================
;# gifcat'gifprint() - print out GIF diagnostics.
;# =====================================================
sub gifprint {
$pflag = 1;
&gifcat(@_);
}
;# =====================================================
;# gifcat'gifcat() - get a concatenated GIF image.
;# =====================================================
sub gifcat {
@files = @_;
$Gif = 0;
$useLocalColorTable = 0;
for $file (@files) {
$size = -s $file;
open(IN, "$file");
binmode(IN);
sysread(IN, $buf, $size);
close(IN);
$cnt = 0;
&GifHeader();
while (1) {
$x1 = ord(substr($buf, $cnt, 1));
if ($x1 == 0x2c) {
&ImageBlock();
} elsif ($x1 == 0x21) {
$x2 = ord(substr($buf, $cnt + 1, 1));
if ($x2 == 0xf9) {
&GraphicControlExtension();
} elsif ($x2 == 0xfe) {
&CommentExtension();
} elsif ($x2 == 0x01) {
&PlainTextExtension();
} elsif ($x2 == 0xff) {
&ApplicationExtension();
} else {
return("ERROR");
}
} elsif ($x1 == 0x3b) {
&Trailer();
last;
} elsif ($cnt == $size) {
last;
} else {
return("ERROR");
}
}
undef($buf);
$Gif++;
}
if ($pflag == 1) {
return;
}
$GifImage = "GIF89a";
$GifImage .= pack("C", $logicalScreenWidth & 0x00ff);
$GifImage .= pack("C", ($logicalScreenWidth & 0xff00) >> 8);
$GifImage .= pack("C", $logicalScreenHeight & 0x00ff);
$GifImage .= pack("C", ($logicalScreenHeight & 0xff00) >> 8);
if ($useLocalColorTable) {
$PackedFields18[0] &= ~0x80;
}
$GifImage .= pack("C", $PackedFields18[0]);
$GifImage .= pack("C", $BackgroundColorIndex);
$GifImage .= pack("C", $PixelAspectRatio);
if ($useLocalColorTable == 0) {
$GifImage .= $globalColorTable[0];
}
for ($i = 0; $i < $Gif; $i++) {
$GifImage .= pack("CCC", 0x21, 0xf9, 0x04);
$GifImage .= pack("C", $PackedFields23 | $TransparentColorFlag[$i]);
$GifImage .= pack("CC", 0x00, 0x00);
$GifImage .= pack("C", $TransparentColorIndex[$i]);
$GifImage .= pack("C", 0x00);
$GifImage .= pack("C", 0x2c);
$n = $LeftPos;
$LeftPos += $ImageWidth[$i];
$GifImage .= pack("C", $n & 0x00ff);
$GifImage .= pack("C", ($n & 0xff00) >> 8);
$GifImage .= pack("CC", 0x00, 0x00);
$GifImage .= pack("C", $ImageWidth[$i] & 0x00ff);
$GifImage .= pack("C", ($ImageWidth[$i] & 0xff00) >> 8);
$GifImage .= pack("C", $ImageHeight & 0x00ff);
$GifImage .= pack("C", ($ImageHeight & 0xff00) >> 8);
if ($useLocalColorTable) {
$PackedFields20[$i] |= 0x80;
$PackedFields20[$i] &= ~0x07;
$PackedFields20[$i] |= ($PackedFields18[$i] & 0x07);
$GifImage .= pack("C", $PackedFields20[$i]);
$GifImage .= $globalColorTable[$i];
} else {
$GifImage .= pack("C", $PackedFields20[$i]);
}
$GifImage .= pack("C", $LzwMinimumCodeSize[$i]);
$GifImage .= $ImageData[$i];
}
$GifImage .= pack("C", 0x3b);
}
No.3
- 回答日時:
「カウンターの数字の画像が一の位しか表示されなくなりました。
」ということは、質問のスクリプトは全部ではありませんよね。
(質問のスクリプトには表示させる部分が有りませんからね。)
その、表示させているところが問題なので、そこを掲載しないと全く質問に答えられません。補足お願いします。
この回答への補足
レスありがとうございますm(_ _)m
スクリプトとはこれのことでしょうか?
;# ====================================================================
;#
;# gifcat.pl: GIFファイル連結ライブラリ Ver1.57a
;#
;# Copyright (c) 1997,2001 http://tohoho.wakusei.ne.jp/
;#
;# 著作権は放棄しませんが、自由に使用・改造・再配布可能です。
;#
;# 基本的な使い方
;# require "gifcat.pl";
;# open(OUT, "> out.gif");
;# binmode(OUT); # MS-DOS や Windows の場合に必要です。
;# print OUT &gifcat'gifcat("xx.gif", "yy.gif", "zz.gif");
;# close(OUT);
;#
;# デバッグ用(GIFの解析出力)
;# require "gifcat.pl";
;# &gifcat'gifprint("xx.gif", "yy.gif", "zz.gif");
;#
;# 制限事項
;# アニメGIF同士を連結することはできません。
;# アニメGIF対応のブラウザでなければ、最初の画像しか表示されません。
;# 高さの異なるGIFファイルは連結できません。
;#
;# 最新版入手先
;# http://tohoho.wakusei.ne.jp/
;#
;# ====================================================================
続き↓
No.2
- 回答日時:
直すところはありません。
正しいPerlスクリプトです。ただし、Webアクセスカウンタとしては、
・排他制御がなされてない。
・カウンタを出力(HTMLもしくはイメージで。)する記述がない。
――と使い物にならないので、これは捨ててしまって、出来合いのカウンタスクリプトをどっかから拾ってきた方が、簡単かつ確実だと。
目的が、Perlプログラミングの学習にあるのなら、問題点を明確にしてから質問した方が回答がつきやすいと思います。
ご回答ありがとうございます。
排他制御とカウンタ出力はどうしたらできるのでしょうか?このプログラムに付け足すことはできないでしょうか?カウンターはおかしくなりましたが、カウントはずっとしているようで、それを引き継ぐ形で乗り換えるなら他のに乗り換えたいと思うのですが、数字の一桁目しか表示されないので、今どれくらいカウントされているのかわかりません。
問題は、カウンターの数字が1桁しか表示されないことです。
どうにかならないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
C言語の勉強しています。すみま...
-
c言語での wavファイルの編集(...
-
C言語の勉強しています。すみま...
-
【Excel VBA】10進数を2進数に...
-
平滑化フィルタ
-
結城未来さんの年齢
-
excelマクロを用いてのファイル...
-
c言語の多次元配列で1から100ま...
-
stable diffusionのエラー
-
データの値の近いものをグルー...
-
matlabでのRRI検出
-
H8/36064のAD変換データの文字...
-
ハッシュで重複キーを認める方...
-
基本クラスのポインタから、特...
-
C言語 ファイル内のデータと入...
-
CGIで行き詰まってしまいました。
-
メモリ領域の確保の仕方
-
Perl ファイル一気読み後の正...
-
00月00日00時00分→0000年00月00...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
pythonでDBのカラム名で取得し...
-
エクセルVBA:日付データの変換...
-
C#でのswitch文
-
linuxのシェルでファイル名に先...
-
C言語の構造体にてバブルソート...
-
c言語での wavファイルの編集(...
-
'dataType' 引数を Null にする...
-
H8/36064を使ったシリアル通信...
-
オセロゲーム 2次元配列で困...
-
10個の実数に対する降順ソート...
-
c言語の多次元配列で1から100ま...
-
c言語 配列から数字だけをint型...
-
matlabのソースコードをpython...
-
Cのプログラムがどうしても動き...
-
テキストファイルの結合について
おすすめ情報