いつもお世話になっております。
ご教示お願い致します。
下記のソースがあり
ブログの記事を編集、訂正したいのですが、やり方がわからないです・・・
use CGI;
my $form = new CGI;
open(FILE, "<$FILE") or die("error :$!");
eval{ flock(FILE, 1) };
@DATA = <FILE>;
close FILE;
if($form->param('edit')){
&edit();
}
if($form->param('delete')){
&delete();
}
#記事表示
for ($i=0;$i<5;$i++){
last if ($i > @DATA);
$data = $DATA[$i];
if ($data ne ""){
my ($category,$title,$name,$text) = split(/,/, $data), $i;
print qq(<input type="radio" name="no" value="%02d">$category - $title - $name - $text);
print qq(<form action="perl.pl">);
print qq(<input type="submit" name="edit" value="編集">);
print qq(<input type="submit" name="delete" value="削除">);
print qq(</form>);
}
}
sub delete
{
open(FILE, "<$FILE") or die("error :$!");
eval{ flock(FILE, 1) };
@DATA = <FILE>;
close FILE;
use CGI;
my $form = new CGI;
my $NO = $form->param('no');
splice @DATA, $NO, 1;
open(FILE, ">$FILE") or die("error :$!");
eval{ flock(FILE, 2) };
print FILE @DATA;
close FILE;
}
sub edit
{
#ここがわからない・・・
open(FILE, "<$FILE") or die("error :$!");
eval{ flock(FILE, 1) };
@DATA = <FILE>;
close FILE;
use CGI;
my $form = new CGI;
my $NO = $form->param('no');
#どのような処理が入るのでしょうか?
open(FILE, ">$FILE") or die("error :$!");
eval{ flock(FILE, 2) };
print FILE @DATA;
close FILE;
}
最後のサブルーチンにあるsub edit の
ファイルを開いてからどのようにして編集していいのかがわからないです・・・
No.1ベストアンサー
- 回答日時:
まず
・「ブログの記事」がどのような構造をしているのか
・「編集」することによって, どのような構造がどのように変化すればいいのか
を明確にしてみよう.
ところで表示するところにある
my ($category,$title,$name,$text) = split(/,/, $data), $i;
の最後の $i って何の意味があるんでしょうか?
ご回答ありがとうございます
記事の構造・・
&buffer();
for ($i=$start;$i<$next;$i++){
last if ($i > @DATA);
$data = $DATA[$i];
if ($data ne ""){
my ($CATEGORY,$tm,$TITLE,$TEXT) = split(/,/, $data);
my ($sec, $min, $hour, $date, $mon, $year, $day) = localtime($tm);
print qq(<form action=$ENV{'SCRIPT_NAME'} method="post">);
print qq(<table>);
print qq(<tr><th width="500" align="center">);
printf qq(<h2><hr>$TITLE<hr></h2>), $i;
print qq(</th></tr><tr><th width="200" align="right">);
printf qq([%02d/%02d %02d:%02d]<hr>), ++$mon, $date, $hour, $min;
print qq(</th></tr>);
print qq(<tr><th width="500" height="100" colspan="2" align="left">);
print qq(<br><div id="kiji">$TEXT</div>);
print qq(</th></tr>);
print qq(</table></form>);
sub buffer
{
$buffer = $ENV{'QUERY_STRING'};
($name, $value) = split(/=/, $buffer);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$start = $value;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
close()で例外が投げられる理由
-
PICでFatFsでオープンした内容...
-
Perl で syntax error
-
perlのflock関数でロックをかけ...
-
VBAコードを張り付け後のエクセ...
-
バッチファイルの作り方(CSV→...
-
batファイルでrenameができませ...
-
vba dir の相対パス
-
MATLABのm-fileについて
-
文字列をカウントする方法
-
至急お願いします。C言語で.img...
-
一定時間が経過したフォルダの削除
-
JavaでCSVファイルを高速に読む...
-
画像アップロード機能を追加し...
-
csvファイルの横方向への改行に...
-
Perlで特定行から特定行までを...
-
【エクセル】改行無しテキスト...
-
perlのエディタでおすすめを教...
-
フォルダ内のファイルを全て開...
-
VBAでCSVファイルの特定行を書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
close()で例外が投げられる理由
-
perlのflock関数でロックをかけ...
-
改行コードが勝手に
-
巨大ファイルの行をを逆順に並...
-
オープンしたファイルで行の連結
-
Perl で syntax error
-
where can I buy snowbord in t...
-
open中のファイルをrename
-
perlを用いた特定文字列間の抽...
-
Perlで他サイトの情報を取得し...
-
die関数のエラー出力先について
-
ハッシュにファイルハンドル
-
サブスクリプトとのファイルハ...
-
テキストファイルの本文中に行...
-
perlで大容量CSVのsort方法につ...
-
フォルダが開かなくなりました。
-
AutoCADのスクリプト
-
ジョブショップスケジューリング
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
おすすめ情報
編集することにより
#log.txt
1,test1,name1,text1
2,test2,name2,text2
3,test3,name3,text3
4,test4,name4,text4
5,test5,name5,text5
↓
3,test3,name3,text3を抜き出し
↓
3,hen3,kou3,henkou3
↓
1,test1,name1,text1
2,test2,name2,text2
3,hen3,kou3,henkou3
4,test4,name4,text4
5,test5,name5,text5
というふうにしたいです
$iに関しては、いろんなサイトを参考にしているときに$iが入っているsampleがあり、
radioタイプのNoをひろうのにほしいのだと思っておりました。
無意味でしたか・・・?^^;