プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。
ご教示お願い致します。
下記のソースがあり
ブログの記事を編集、訂正したいのですが、やり方がわからないです・・・

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 の
ファイルを開いてからどのようにして編集していいのかがわからないです・・・

質問者からの補足コメント

  • 編集することにより
    #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をひろうのにほしいのだと思っておりました。
    無意味でしたか・・・?^^;

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/03/21 13:32

A 回答 (1件)

まず


・「ブログの記事」がどのような構造をしているのか
・「編集」することによって, どのような構造がどのように変化すればいいのか
を明確にしてみよう.

ところで表示するところにある
my ($category,$title,$name,$text) = split(/,/, $data), $i;
の最後の $i って何の意味があるんでしょうか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

記事の構造・・
&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/</&lt;/g;
$value =~ s/>/&gt;/g;
$start = $value;
}

お礼日時:2017/03/21 13:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!