はてダラで -t オプションが効かない理由

まず、hw.pl は一件の日記につき、常に 2 回 POST を行います。2 回の POST はそれぞれ create_it, post_it というサブルーチンで微妙に異なる方法で POST しています。

  • create_it: 新規作成。パラメータ date, title, body を空にして POST する。
  • post_it: 普通に更新。

日記がまだない場合、post_it では日記が作成されません。そこでまず最初に create_it します。

本来、作成後の更新については post_it だけで更新できるようです。しかし、日記が削除されているかもしれず、その場合新規作成が必要なため、更新時にも create_it しています。あらかじめ日記が存在するかどうかを確認すれば無条件に create_it しなくてよいのですが、日記の存在/不在を判定する簡単な方法がありません。HTML を解析すれば可能なのですが。。。

create_it は date, title, body が空なので一度クリアされるだけで事実上無害、トラバも飛ばないはず、念のため -t オプション付きの場合は trivial パラメータも付けて POST してるし、ということで常に create_it しているようです。

。。。という解釈で合ってますでしょうか? > id:hyuki さん

しかし、実はこの前提は間違いでした。二度目の create_it では、

  • 日記の内容はそのまま残る
  • トラックバック等の処理は行われる
  • trivial パラメータは効かない

つまり「現状の内容で更新処理を再実行」という動作を行っているようなのです。どうやらこれが更新時に -t オプションが効かない原因のようです。