Perlコーディング初心 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
145:nobodyさん 08/03/18 19:50:13 my $sth=$dbh->prepare('INSERT INTO test('.join(',',keys %data).') VALUES('.join(',',map{'?'}(keys %data)).')'); $sth->execute(map{$data{$_}}(keys %data)); 適当にmapで記述したら、ここまで短くなりましたが、map{'?'}(keys %data)の辺りは、 もうちょっとスマートな方法がありそう…。 146:nobodyさん 08/03/18 20:25:49 >>145 スマートな方法より可読性を選んだら? keys %data を三回も呼ぶんだったらアレイに突っ込むだろ。 ついでに、join ',' も二回あるんだったらサブルーチンかなんかにしちまえ。<= 嘘。 sub foo { return join ',', @_ ;} ; @arr = keys %data ; my $sth=$dbh->prepare('INSERT INTO test('. &foo( @arr ) .') VALUES('. &foo( ('?') x @arr) ).')'); $sth->execute( @data{ @arr } ); てきとーに書いたから、' とか抜けてても勘弁。 147:nobodyさん 08/03/18 21:49:40 >>138 #!/usr/bin/perl -w use strict; use Scalar::Util qw(looks_like_number); test(@ARGV); test(map looks_like_number($_) ? $_ : 0, @ARGV); sub test { my($hoge, $fuga) = @_; print "hoge:[$hoge] fuga:[$fuga] "; $hoge += $fuga; print "result:[$hoge]\n"; } >>144 my $col = join ',', my @col = keys %hash; my $phs = join ',', ('?') x @col; my $sth = $dbh->prepare("INSERT INTO test($col) VALUES($phs)"); $sth->execute(values %hash);
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4955日前に更新/211 KB
担当:undef