tsucchi@dev[1017]$ perl test.pl Can't return outside a subroutine at test.pl line 9. こんな感じでエラーになる。hoge の前に print などを入れると表示されることなどから、これはコンパイルエラーではなく、実行時エラーだと分かる。 では、この hoge()を呼んでいる部分を eval で囲むとどうなるだろうか? ソース的には下記のような感じである。
タイトルはちょっと釣りっぽいかも。 たとえば配列に id が10万件位入っていて、コレを使って SQL の DELETE 文を発行してデータをパージしたい、とします。(仮にDELETEとしたけど、SELECT でも UPDATE でも一緒の話。DBの処理じゃなくても多分こういうのある)。 こういうとき、10万件一気に IN で指定すると、多分SQLが長過ぎてエラーになるし、もしエラーにならなくても遅いし、かといって 1件ずつ処理してもやっぱり遅いので、ふつうは何件かまとめて処理します。 仮に1000件毎に処理するとしましょう。 こういうとき、どうするか、というのが今日のお話。どうします? やり方はいくつかあると思うのですが、この場合僕は splice を使います。 my @ids = ... #10万件のidの配列 while ( my @sub_ids = splice(@ids, 0,
やりたいこと 'Asia/Tokyo' のようなタイムゾーンを表す文字列を、「+0900」や「32400」(秒=9h)に変換する。 やり方 DateTime を使って変換する(?) use strict; use warnings; use DateTime; my $dt = DateTime->now(); $dt->set_time_zone('Asia/Tokyo'); warn $dt->offset; # => 32400 warn $dt->strftime("%z"); # => +0900
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く