[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/02 01:51 / Filesize : 211 KB / Number-of Response : 664
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlコーディング初心者質問スレ Part 63



1 名前:nobodyさん mailto:sage [2011/09/09(金) 18:11:49.71 ID:???]
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >>2 以降

前スレ hibari.2ch.net/test/read.cgi/php/1295170172/

151 名前:nobodyさん mailto:sage [2011/09/29(木) 16:36:26.36 ID:???]
まずすべきことは、エラーログを見てみる。

152 名前:nobodyさん mailto:sage [2011/09/29(木) 16:41:31.46 ID:???]
>>149
メールがサーバに届いているなら、/var/log/maillogかなんかに出ているログを確認するというのが基本です。
気になったのは、ファイルパス。シェル上ではログイン時にそのユーザー派のホームディレクトリにカレントパスがセット
されますが、sendmailで受けた場合はそのパスにならないのだから、絶対パスで指定する必要があります。

153 名前:nobodyさん mailto:sage [2011/09/29(木) 16:41:44.87 ID:???]
> open(OUT, ">> datafile.txt");
この datafile.txt はどのディレクトリに書き込まれるの?
パーミッションエラーで書き出せないとかじゃないの?

154 名前:149 mailto:sage [2011/09/29(木) 16:59:53.15 ID:???]
>>152,153
盲点でした絶対パスで書いたら問題無く書き込めてました。
ありがとうございました!

155 名前:nobodyさん mailto:sage [2011/09/29(木) 17:44:48.07 ID:???]
結局Perlは関係なかったね。

156 名前:nobodyさん mailto:sage [2011/09/29(木) 17:51:14.58 ID:???]
せやろか?

157 名前:nobodyさん mailto:sage [2011/09/29(木) 21:10:32.23 ID:???]
せのつくあれをやるなんていやらしい

158 名前:nobodyさん mailto:sage [2011/09/29(木) 21:45:52.72 ID:???]
最近じゃ、小学生どうしでもするんですってね、






せいくらべ。

159 名前:nobodyさん mailto:sage [2011/09/30(金) 03:01:50.06 ID:???]
投稿の表示の上にページ数を載せたい場合
最大ページ数=投稿数/1ページあたりの表示数の少数切り上げだから
投稿数がわからないと最大ページ数がわからないわけだから
whileだと最初にwile(<IN>){$toukousuu++;}で投稿数出してそのあとwile(<IN>){表示}の
2回ループしなきゃならないけど@lines一括読み込みなら$toukousuu=@linesのforeach(@lines){表示}の1回ループですむ



160 名前:nobodyさん mailto:sage [2011/09/30(金) 03:40:56.53 ID:???]

   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |       >>159
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /


161 名前:nobodyさん mailto:sage [2011/09/30(金) 09:23:13.25 ID:???]
hibari.2ch.net/test/read.cgi/affiliate/1317192380/
akiyan降臨中w

162 名前:nobodyさん mailto:sage [2011/09/30(金) 12:34:30.65 ID:???]
>>160
何で釣り扱いされているのかわからんw
じゃあ例えばファイルの下から10番目までの行であるならばフラグを立てるという場合
while(<IN>){

$aaa = $toukousuu-10;

if($count>=$aaa){
$flg = 1;
}
else{
$flg = 0;
}
$count++;
}
としなければならないが$toukousuuを求めるのはこれよりまえにwhile(<IN>){$toukousuu++;}とする必要が
あるのはわかるだろ。
つまりwhileだとループを2回しなければならんのだよ

163 名前:nobodyさん mailto:sage [2011/09/30(金) 13:19:30.58 ID:???]
             |
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
   >( c´_ゝ`)  |
            |
>( c´_ゝ`)     J
     >( c´_ゝ`)



             |
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
             |     >( c´,_ゝ`)
             |
             J   >( c´,_ゝ`)
                    >( c´,_ゝ`)

164 名前:nobodyさん mailto:sage [2011/09/30(金) 18:04:53.60 ID:???]
>>162
うん。そうだね。それで?それがどうかしたの?

って感じ。

165 名前:nobodyさん mailto:sage [2011/09/30(金) 18:27:33.76 ID:???]
>>164
だって2回ループするとその分重くなるじゃん

166 名前:nobodyさん mailto:sage [2011/09/30(金) 18:55:57.64 ID:???]
>>165
どのみち全数読み込まなきゃいけないんだったらもちろん一括読み込みすればいいんだけどさ。
しかし重くなるのが嫌だったら投稿数などのインデックス情報の類は別途保存して、
独立して管理するという方法もあるぞ。
そうすれば $count = @array; みたいにいちいち配列の要素数を数えなくても済む。

167 名前:nobodyさん mailto:sage [2011/09/30(金) 19:33:37.65 ID:???]
>>165
slurp の方が早いよって主張ならまだしも、、、
>>130の結果が理解出来てないだろお前さん。
% perl -le '$s = q{x} x 1000000 ; $s =~ s/(.{1,50})/$1\n/g; print $s ' > test.txt
% cat hoge.pl
use Benchmark qw( timethese cmpthese ) ;
cmpthese timethese ( undef, {
arr => sub { open my $fh, q{<}, q{test.txt} ; my @arr = <$fh> ; close $fh ; printf STDERR "%d\n", scalar @arr ; for ( @arr ){ print STDERR; } },
whi => sub { open my $fh, q{<}, q{test.txt} ; my @arr ; while (<$fh>){ push @arr, $_ } ; close $fh ; printf STDERR "%d\n", $. ; for ( @arr ){ print STDERR; } },
});
% perl hoge.pl 2> /dev/null
Benchmark: running arr, whi for at least 3 CPU seconds...
arr: 4 wallclock secs ( 2.00 usr + 1.23 sys = 3.23 CPU) @ 242.11/s (n=782)
whi: 4 wallclock secs ( 1.95 usr + 1.29 sys = 3.24 CPU) @ 254.94/s (n=826)
Rate arr whi
arr 242/s -- -5%
whi 255/s 5% --


168 名前:nobodyさん mailto:sage [2011/09/30(金) 20:14:25.09 ID:???]
>>166
全部読み込むにしても一括読み込みだとメモリ食うよ
一行ずつ回す方がいい

>>167
読んだけど意味が分からない

169 名前:nobodyさん mailto:sage [2011/09/30(金) 20:49:46.04 ID:???]
165の「重い」ってメモリの重さの話か?
速度の話だと誤読したわ。

速度だと既に結論が出てて、>>130理解してれば、
while(<$fh>){ push @arr, $_ ; } が、@arr=<$fh>;
より早いんだから、後の処理が同じなら何回ループ回そうが、
無関係。カウンタを自分で付けようが、 $. 利用しようが同じ。

メモリ?
んなもん、同じファイルなら、
@arr =<$fh> ;だろうが、一行づつ回そうが誤差範囲だろ。
それを何回回そうが無関係。
@arr = do{ local $/ ; $buf = <$fh> ; split /^/ms, $buf ;
なんかするんだったら多くかかるのは当然だけど。

sub myps { print `ps ux $$`};
myps;
# お好きなコード
myps;
でもして差分取れば?



170 名前:nobodyさん mailto:sage [2011/09/30(金) 20:50:40.41 ID:???]
×@arr = do{ local $/ ; $buf = <$fh> ; split /^/ms, $buf ;
◯@arr = do{ local $/ ; $buf = <$fh> ; split /^/ms, $buf ; } ;


171 名前:nobodyさん mailto:sage [2011/09/30(金) 21:29:34.48 ID:???]
釣りにマジレス
>>159
open my $fh, '<', 'hoge.pl' ;
while ( <$fh> ){ }
print "$.\n" ;
while ( <$fh> ){ print }
close $fh ;
このコードを hoge.pl として保存して実行してみろ。

と言うことで、
>>167
165 の言う「2回ループ」は上のコード、好意的に判断しても
「ファイルハンドル開き直してのファイル読み込み2回」って意味だ。
あなたの突っ込みは通じない。

172 名前:nobodyさん mailto:sage [2011/09/30(金) 23:04:33.02 ID:???]
あれ?まだやってるの?

ほんとうの意味でファイルを一括で読むこっちが
一番速いって答えは出たと思うんだけど。
all => sub { open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')); close $fh ; return split("\n", $buf);},



173 名前:nobodyさん mailto:sage [2011/09/30(金) 23:07:07.88 ID:???]
foreach ( split/\n/, $buf ) {}
はい

174 名前:nobodyさん mailto:sage [2011/09/30(金) 23:11:26.42 ID:???]
もうその話しじゃなくなってんだが、まあ突っ込んでやる。
同等の条件にすると話しにならんくらいarrの方が早い。
cmpthese timethese ( undef, {
arr => sub { open my $fh, q{<}, q{test.txt} ; <$fh> },
all => sub { open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')) ; split(/^/ms, $buf);},
});
結果↓
Benchmark: running all, arr for at least 3 CPU seconds...
all: 3 wallclock secs ( 2.72 usr + 0.36 sys = 3.08 CPU) @ 1366.56/s (n=4209)
arr: 4 wallclock secs ( 1.51 usr + 1.66 sys = 3.17 CPU) @ 30816.72/s (n=97689)
Rate all arr
all 1367/s -- -96%
arr 30817/s 2155% --



175 名前:nobodyさん mailto:sage [2011/09/30(金) 23:13:06.26 ID:???]
174はまちがい
スカラーコンテキストで評価されるわw


176 名前:nobodyさん mailto:sage [2011/09/30(金) 23:21:35.32 ID:???]
まちがい。arrは遅かったw

177 名前:nobodyさん mailto:sage [2011/09/30(金) 23:22:41.29 ID:???]
@arr =<$fh>がファイル一括読み込みよりも
遅いのは当たり前の話で、内部的に一行づつ読み込んでいるから。

178 名前:nobodyさん mailto:sage [2011/09/30(金) 23:23:54.55 ID:???]
同等の条件
arr => sub { my @arr = sub{ open my $fh, q{<}, q{test.txt} ; <$fh> }->() },
all => sub { my @arr = sub{ open my $fh, '<', 'test.txt'; my $buf; read($fh, $buf, (-s 'test.txt')) ; split(/^/ms, $buf); }->() },
まあ、 all の方が早いわな。

179 名前:nobodyさん mailto:sage [2011/09/30(金) 23:56:34.45 ID:???]
                    亠ァ厂|        `':,;..:..:.';.     ;'..:..:.,:'
                       ‐个 兀          `:;:.::.':.,   ,':.::.:,:'
`.:`.:''''..:.‐ :.:-:.:...,,,, __   、‐-、        __   ,.‐z_,-、   '':;;:::':, ,...;'::..:,;'  ,,.:':
..:..:...:..:..:...:...:...:.:..:...:...:..:.`_,,ノ └¬、'''.:.:‐:..,,ヾ、__)∠,ィク /,、   ';:''..:.:..:..:.:..:.'':;'':.:.,;.
.:..:...:..:..:...:...:...:.:..:...:...:..:.ヾ、_   <^'".:..:..:.:..: <`ヾ´~_  _~´ 〉'''':.::.;':.::...:.:..:..:..:...:.:.';' ,,
..:..:...:..:..:...:...: ,,;,;,;,,;:..:..:.:.:..: / /\ `ヽ、..:..:.:..:..:_ブ∧ ‐ ‐ /.:.:..:,;,::';..:..:..:.:..:..:..:...:.:.:''´:.:
:..:.:..:..,.:-〜' , 、m_)°.:.:.'ー-'..:..:..:`ー--',,;,;::.:.:ヽ、_i (_,/しヘヘ_) ´  '::;.:.::.:..:..:..:..:.:..,;'` ''
,;,,;,;/  <て_;:、。.:° ‐ '''' " ´ ´               ,;:''.:.:,:'' :;,._.:,;.,、:.'':.,,_
  / r'7ァッーヘ、_) ゚                      ,,:''.:.:,:'' , -〜''ヽ‐-‐、.:.:.''
-く  レ'/〈 °   。     ,ヘVフヽ、          ,,:''.:.:.:,:''  (_,ヘ、     ⌒
  V巛〈 ヽ  , 〜''ヽ    / e ヽノ\ヘ.      ,,:.''..::.:,:'' 。     と_刀Tゥー
_/ ヾ ヽ、 Y ァ个〜'。゚  ,少ー- 代ヽ、 ヾゝ   ,,.: '':.:/ヽ、' 。 ゚ (⌒⌒ー-く ノノ,!j
 {.   \ Y巛〈       ) lfgレ゙く  \''.:.::.:.:.:/ / 入 ゚ 。 `〜<ヾヾ、,`⌒ 〜
_, ヘ、  ヾ{ ヾト、      'ヾゝャgメl`   ヾヨ /〃/ _,,>    〉〉ノ `厂丁`
   \  \  ヽ、    `ゞへmfi_  ゞdf‐ '' ´      ////  ノ
─〜 ⌒ヽ、  \   ヽ、    ´`'‐ニ世三r<k´       _,,ノ,〆   /
    __,, へ、 \   ` ー- 、__      _,, --‐‐ ''´     _ - ´  /
 ̄ ̄      \  ` ー- 、 _     ̄ ̄ ̄       _, -〜< -一 ブ
          ヽ、、       ̄` ー─----── ´ ̄    _ -一 ´



180 名前:nobodyさん mailto:sage [2011/10/01(土) 01:21:20.72 ID:???]
>>179
話の流れを追う気はまったくないが
このAAはおめでたさ満点でよかった

181 名前:nobodyさん mailto:sage [2011/10/01(土) 20:11:38.10 ID:???]
画像を送信するときなんかはフォームと画像のデータが1つになった
変数で送られるからwileで1行ずつ回すというのは無理だな
こういう場合は画像が大きければ大きいほど、どうしてもメモリは食う

182 名前:nobodyさん mailto:sage [2011/10/04(火) 02:02:20.47 ID:???]
>>182
まあそうだろうなmalti-partの場合も
read(STDIN,$buff,$ENV{'CONTENT_LENGTH'});
で$buffに全部の送信データが格納されるから
画像が大きいほどメモリは食う

183 名前:nobodyさん mailto:sage [2011/10/04(火) 04:12:16.99 ID:???]
>>182
再帰アンカー/ひとり循環リスト乙

184 名前:nobodyさん mailto:sage [2011/10/06(木) 12:31:19.56 ID:???]
すいません
read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
print $data;
だけのスクリプトを書いたんですが
Use of uninitialized value in read at 〜と出ます
これなんでですかね?

185 名前:nobodyさん mailto:sage [2011/10/06(木) 12:50:34.41 ID:???]
>>184
perldoc.jp/docs/perl/5.10.0/perldiag.pod

本当にその2行だけなのなら、
-w オプションが効いている下で $ENV{'CONTENT_LENGTH'} を未定義のまま実行したからだろう。

186 名前:nobodyさん mailto:sage [2011/10/06(木) 13:13:47.41 ID:???]
>>185
ありがとうございます。他のところがおかしいんじゃなくてよかったです。
これは入力がなければ出るものなんですね。

187 名前:nobodyさん mailto:sage [2011/10/06(木) 14:16:31.01 ID:???]
>>186
> これは入力がなければ出るものなんですね。
違う。$ENV{'CONTENT_LENGTH'} が未定義 (undef) だから出ている。
STDIN からの入力が無くとも $ENV{'CONTENT_LENGTH'} に 0 が入っていれば出ない。

> Use of uninitialized value%s
> (W uninitialized) 未定義値を、あたかも既に定義されているかのように使用しました。
> これは、"" か 0 と解釈されますが、間違いの可能性があります。
> この警告を止めるには、変数に定義された値を代入してください。

188 名前:nobodyさん mailto:sage [2011/10/06(木) 15:00:33.35 ID:???]
>>184
この「だけのスクリプト」ってのは嘘だな。
CGIとしてだったらこの2行だけでは動かない。

189 名前:nobodyさん mailto:sage [2011/10/07(金) 00:00:35.18 ID:???]
SSI使わずにHTML上にCGI呼び出す方法って<script>タグ以外にありますか?



190 名前:nobodyさん mailto:sage [2011/10/07(金) 01:23:00.44 ID:???]
>>189
<script>タグ勘違いしてる。それはクライアント側での処理だから。
ttかHTML::Templateなどのテンプレートエンジンを考えてみたら。

191 名前:nobodyさん mailto:sage [2011/10/07(金) 03:51:57.20 ID:???]
>>189
img、iframe、cssのimport

192 名前:nobodyさん mailto:sage [2011/10/08(土) 14:37:18.51 ID:???]
https://github.com/motemen/WWW-BBS-2ch
の make test は Result: PASS になり、
SYNOPSIS にあるコードを動かしてみたところ、

Can't call method "add_handler" on an undefined value at /usr/lib/perl5/site_perl/5.10/WWW/BBS/2ch.pm line 39.

と出ました。なので 2ch.pm:39 を見ると、

https://github.com/motemen/WWW-BBS-2ch/blob/master/lib/WWW/BBS/2ch.pm
my $class = shift;
my $self = bless {
ua => LWP::UserAgent->new(agent => "Monazilla/1.00 WWW::BBS::2ch/$VERSION"),
encoding => 'shift_jis',
@_,
}, $class;

$self->ua->add_handler(

という感じです。

Dumper $self->ua; すると undef です。

エディタを開いて試しに自分で
$ua = LWP::UserAgent->new(agent => "Monazilla/1.00 WWW::BBS::2ch/$VERSION");
$ua->add_handler(
とか書くと $ua は取得できて add_handler も動くので CPAN モジュールは問題なく入っているようです。

my $self = bless {} が怪しいのですが、どうすれば WWW::BBS::2ch の SYNOPSIS を動かせるでしょうか。


193 名前:nobodyさん mailto:sage [2011/10/08(土) 17:51:50.13 ID:???]
>>192
$self->{ua} で許して

194 名前:nobodyさん mailto:sage [2011/10/08(土) 18:24:39.39 ID:???]
$self->ua;

sub ua{ }


は定義されてるの?

195 名前:nobodyさん mailto:sage [2011/10/08(土) 23:56:07.90 ID:???]
>>192
どうも https://github.com/motemen/WWW-BBS-2ch の例が間違っているみたい。
| my $bbs = WWW::BBS::2ch->new(cache => $cache, ua => $ua);
ここで $cache, $ua なんて存在しないから。
その通りに入力したら $self->ua は undef になるだろう。ためしに引数無しで
| my $bbs = WWW::BBS::2ch->new;
としたらどうだ。

196 名前:nobodyさん mailto:sage [2011/10/09(日) 16:35:15.15 ID:???]
いまどきCGI.pmって見かけたけど、フレームワーク使えって意味だろうか。
わざわざフレームワーク通すまでもないときはどうするのがモダンなの?


197 名前:nobodyさん mailto:sage [2011/10/09(日) 17:53:18.28 ID:???]
cgi-lib.berkeley.edu/ ん?いや、何でもない…

198 名前:192 mailto:sage [2011/10/09(日) 18:49:28.44 ID:???]
>>195
うわああ、ありがとうございます!
動きましたぁばばばば。

199 名前:nobodyさん [2011/10/11(火) 23:38:30.50 ID:Xx0lESYm]
間違えて「プログラム技術板」に質問を書いてしまいましたが
此方で改めて質問させて下さい。

その1------------
DBIからのSqlサーバへの接続方法をご教示下さい。
質問場所がここじゃなかったら誘導お願いします。

以下の環境を作成し、
コマンドプロンプトからtest.plをCALLしたのですが
SQLサーバがないとのエラーが表示され、接続出来ませんでした。
値を色々変えてみたりしたのですがどうやっても接続できず…
何が悪いのかお手上げ状態です。

接続文字列が悪いのでしょうか…?

ODBCでの接続は行えており、CSEからのDB参照や
コマンドプロンプトからのsqlcmdコマンドでなら正常にアクセスできます。
[sqlcmd /E /S PC-Name\SQLEXPRESS]

環境
・Windows7
・Microsoft SQL Server 2008
・Perl5.0


Server:PC-Name\SQLEXPRESS
DB:sampleDB
User:user
Password:pass





200 名前:nobodyさん [2011/10/11(火) 23:39:50.63 ID:Xx0lESYm]
-----------------------
test.pl
-----------------------
$dataSource = "dbi:ODBC:".
"driver={SQL Server};".
"Server=(local);database=sampleDB;".
"Trusted_Connection=yes;".
"AutoTranslate=No;";
#データベースに接続
$user="user"; #ユーザ名
$pwd="pass"; #パスワード
$dbh = DBI->connect($dataSource,$user,$pwd)
or die $DBI::errstr;
# データアクセス(今は処理無し)
$dbh->disconnect;
-----------------------
エラー内容
-----------------------
DBI connect('driver={SQL Server};Server=(local);database=sampleDB;Trusted_Connec
tion=yes;AutoTranslate=No;','user',...) failed: [Microsoft][ODBC SQL Server Driver
][Shared Memory]SQL Server が存在しないか、アクセスが拒否されました。 (SQL-08001
) [state was 08001 now 01000]
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()). (S
QL-01000) at dbtst.pl line 28
[Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server が存在しないか、ア
クセスが拒否されました。 (SQL-08001) [state was 08001 now 01000]
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()). (S
QL-01000) at dbtst.pl line 28.
-----------------------


201 名前:nobodyさん mailto:sage [2011/10/11(火) 23:40:28.76 ID:???]
馬鹿には見えないtest.plが張ってあるらしいな

202 名前:nobodyさん [2011/10/11(火) 23:48:58.55 ID:Xx0lESYm]
その3------------
「その2」を付け忘れてしまいましたが
199-200でワンセットです。

Linux + MySql5.0 + DBIで動作しているシステムを
改造する為のローカルサーバを作成したいので、
どうしてもDBIを使用したいと考えています。

よろしくお願いいたします。


203 名前:nobodyさん mailto:sage [2011/10/12(水) 01:55:18.70 ID:???]
> Server=(local);
この表記はアリなのか?


204 名前:nobodyさん mailto:sage [2011/10/12(水) 04:13:51.23 ID:???]
>>201
そうみたいだね。

205 名前:nobodyさん mailto:sage [2011/10/12(水) 08:22:59.76 ID:???]
よくわからないから外れてるかもしれないけど
sampleDBが文字列じゃなくて変数になってないか?

206 名前:nobodyさん mailto:sage [2011/10/12(水) 12:30:39.86 ID:???]
'' で囲ってみ

207 名前:199 [2011/10/12(水) 18:44:51.34 ID:QKPkC9MD]
アドバイス有難うございます。

>>203
Server=(local);
の表記は、ネット上で拾ったやり方をそのまま使っているので
使える…とは思うのですが…。ちなみに、
Server='PC-Name\SQLEXPRESS';
にしても状況変化なしです。

205 206>>
"database='sampleDB';"
に変更してみましたが、変化なしです。


エラーメッセージで
「SQL Server が存在しないか、アクセスが拒否されました」
とあるので、DBではなくServerへの接続が
失敗しているのではないかと思うのですが

Windows7の場合カーネルの違いから挙動が異なる
といった事はありませんでしょうか?


208 名前:nobodyさん mailto:sage [2011/10/12(水) 19:15:26.58 ID:???]
>>207
いっそのこと、ODBC データソース アドミニストレータ で定義してしまいば?

209 名前:199 [2011/10/12(水) 20:45:40.79 ID:QKPkC9MD]
>>208
有難うございます!

ODBC経由でDBに接続する事でアクセする事が出来ました(>_<。
ユーザDSNに「dbgSQLServer」の名前でDBを登録し、
$dataSource= "dbi:ODBC:dbgSQLServer";
としたら無事SQLの実行まで確認できました。

直接接続する事にこだわる必要は無かったんですね。
何日も悩んでいた事だったので本当に助かりました。

有難うございました。



210 名前:nobodyさん mailto:sage [2011/10/12(水) 22:01:53.09 ID:???]
>>209
よかったよかった!
Windows+PostgreSQLでDBD::Pgが使えなくて困ったときにそうしたんだ。
その時PgPPどころかCPANもわからなかったあのころ。
車輪何個も作っちゃったけど、キニシナイ

211 名前:199 mailto:sage [2011/10/13(木) 18:35:59.97 ID:???]
>>210
本当有難うございました。

PostgreSQLは使ってみようとインストールする時点で
挫折した記憶が…(^^;

プログラムををゴリゴリ書くのは楽しいんですが
何時も環境構築が一番のネックになります。

これでやっとコーディングに入れます♪

212 名前:nobodyさん mailto:sage [2011/10/17(月) 23:46:25.75 ID:???]
ファイルロックについて質問です。

自分は今は rename とか mkdir とか使ってロック機構を実装してますが、
お仕事とかで perl を使ってる人はファイルロックする際には rename とか
mkdir とかでロックかけてるのでしょうか?
それとも flock を使用しているねでしょうか?

「DB 使えや」 ってゆう回答は求めておらず、ファイル読み書き時に於けるロックは、
仕事などではどう対応されているのか気になったもので、質問させていただきました。


213 名前:nobodyさん mailto:sage [2011/10/18(火) 01:32:44.53 ID:???]
確かに「DB使えや」ではあるなw

以前、自分が入社する前に書かれたソースを見たことがあるんだけど、その時はflockを使ってたっぽい。
ただflockすれば良いというものでもなく、きちんとした方法で使わないと全くの無意味だけど。

あと、今ならその辺を上手くやってくれるモジュールがるような気がする。

214 名前:nobodyさん mailto:sage [2011/10/18(火) 06:58:20.05 ID:???]
flockは使えない場合があるので(具体的には自分で調べてくれ)
その場合はmkdirなり使うとかの、別の方法で対処すると思う。
プロとかアマとかはあんまし関係ないんじゃないだろうか。

215 名前:nobodyさん mailto:sage [2011/10/18(火) 12:47:22.63 ID:???]
今のご時世でもflockが使えないとかあるの?

216 名前:nobodyさん mailto:sage [2011/10/18(火) 16:58:19.77 ID:???]
ご時世関係ない

217 名前: 忍法帖【Lv=16,xxxPT】 mailto:sage [2011/10/18(火) 17:43:19.26 ID:???]
>>212
イントラでperl使ってるけど…
ごめん、DB(PostgreSQL)つかってる。
月並みだけど、
DB>flock>その他の手段
だよね。

218 名前:nobodyさん mailto:sage [2011/10/18(火) 17:48:49.73 ID:???]
横槍失礼。
デッドロックに対する対応だけど、
プロセスがkillされるような事態に備えて $SIG でトラップすべきか、
次実行されたときにデッドロックされたファイル情報から指定時間経過してればデッドロックと判断。
どっちがいいんでしょうね。
トラップした方がスムーズにいけるっぽいけど、他の部分で別のトラップがされると実行されない可能性もあったりするんだよね。
迷うわぁ・・・

219 名前:nobodyさん mailto:sage [2011/10/18(火) 22:08:36.70 ID:???]
デッドロックはバグだ。
デッドロックしないようにつくれや



220 名前:nobodyさん mailto:sage [2011/10/18(火) 22:33:11.15 ID:???]
DB使う。

221 名前:nobodyさん mailto:sage [2011/10/18(火) 22:58:12.17 ID:???]
>>219さんは$SIGを適切に設定してる感じですか?

222 名前:nobodyさん mailto:sage [2011/10/18(火) 23:25:30.92 ID:???]
$SIGなの? %SIGじゃないの?

223 名前:nobodyさん mailto:sage [2011/10/19(水) 00:20:24.38 ID:???]
$SIG{} って書いてから {} だけ消したので修正ミスです ^-^;

224 名前:nobodyさん [2011/10/19(水) 00:46:29.74 ID:LOxxA4S5]
GDで文字列を画像に変換するとき
widthを入力しないといけませんよね
全角文字だけなら計算できるのですが、半角英数カナなどが含まれるので余白が発生してしまいます。
あらかじめ文字列の長さをpixelで計算する方法はありませんか?

225 名前:nobodyさん mailto:sage [2011/10/19(水) 09:54:29.71 ID:???]
何も調べずに書くが
cp932に変換してバイト数を調べるのはどうか

226 名前:nobodyさん mailto:sage [2011/10/19(水) 10:42:15.21 ID:???]
>>224
@bounds = GD::Image->stringFT($fgcolor,$fontname,$ptsize,$angle,$x,$y,$string)

227 名前:nobodyさん mailto:sage [2011/10/19(水) 14:19:45.05 ID:???]
>>226
完璧です。ありがとうございました。

228 名前:nobodyさん mailto:sage [2011/10/21(金) 17:01:48.08 ID:???]
GD で機種依存文字を使えるようにするための方法はありますでしょうか

229 名前:nobodyさん mailto:sage [2011/10/22(土) 05:11:26.88 ID:???]
time_%2F_1319178123_%2F_name_%2F_%82r%82%81%81%99%82k%82%85%82%85_%2F_title_%2F_%82%BD%82%A2%82%C6%82%E9.txt

現在ファイルがopenできなくなると言う罠に陥りました。
windows7でこうゆうファイル名なんですが、コレ問題ありますか?
運用はunix系で考えているんでそっちでも問題あれば教えてください。



230 名前:nobodyさん mailto:sage [2011/10/22(土) 05:13:47.30 ID:???]
すみませんなんでもないですopenでしました。

231 名前:nobodyさん mailto:sage [2011/10/22(土) 09:48:47.25 ID:???]
>>230
「き」と「し」を打ち間違えるとは珍しい。

232 名前:nobodyさん mailto:sage [2011/10/22(土) 20:17:03.51 ID:???]
>>229をデコードしたヤシは挙手ノ

233 名前:nobodyさん mailto:sage [2011/10/22(土) 21:14:46.30 ID:???]
Sa☆Lee って何だ?

234 名前:nobodyさん mailto:sage [2011/10/22(土) 21:57:21.39 ID:???]
Sa☆Leeでぐぐったヤシは挙手ノ

235 名前:nobodyさん mailto:sage [2011/10/22(土) 22:19:39.38 ID:???]
なんかの罠かと思ってスルーしてた

236 名前:nobodyさん mailto:sage [2011/10/24(月) 13:03:32.39 ID:???]
ハッシュの中の配列に、値を追加したいときはどうすればできますか?

こうすると
push($h{$i}->[0], "aaa"));

このようなエラーになります。
Type of arg 1 to push must be array (not array element)

237 名前:nobodyさん mailto:sage [2011/10/24(月) 13:36:02.75 ID:???]
push @{$h{$i}}, "aaa";

238 名前:nobodyさん mailto:sage [2011/10/24(月) 13:50:46.81 ID:???]
>>237
上手くいきました。ありがとうございます。
こんな書き方理解できない。もうPerlやりたくない。

239 名前:nobodyさん mailto:sage [2011/10/24(月) 13:58:00.35 ID:???]
同じプログラムをRubyとPHPとPythonでは書き直せるんですけど、
Perlだけ作法が全然違うからわかわからないんですけど、どうすればいいですか?????????



240 名前:nobodyさん mailto:sage [2011/10/24(月) 15:33:37.66 ID:???]
Perl5.14でその配列が既に存在していれば、

use v5.14;
push $h{$i}, "aaa";

でいけるかな?

241 名前:nobodyさん mailto:sage [2011/10/24(月) 17:29:05.68 ID:???]
>>239
全然違うってほどのもんじゃないとは思うけど。
例えばどんなところが書き直せないの?

242 名前:nobodyさん mailto:sage [2011/10/24(月) 19:39:40.90 ID:???]
むしろその中だと、PHP←→Perlが一番簡単な気がするんだw

243 名前:nobodyさん mailto:sage [2011/10/24(月) 23:41:27.27 ID:???]
>>241
ハッシュとか配列とかの操作でカッコとか記号とかが覚えられない。
代入するときも表示するときもアクセスの仕方が違ったりして覚えられない。ダンプするのも一苦労。
クラスのnewのblessとか未だに何なのかわからない。祝福とは???
リファレンスとかスカラーとかレキシカルとか聞き慣れない用語ばかり出てくる。
スコープとかクロージャとかJavaScriptの悪夢がよみがえる。
とにかく記号ばっかりで暗号いじってるみたいな意味不明さが怖い。

$hoge; $hoge{0}; $hoge->{0}; @hoge; @hoge{0}; @hoge->{0}; %hoge; %hoge{0}; %hoge->{0};
${$hoge}; @{hoge}; @{$hoge}; {@{$hoge{0}}} @{$hoge->[0]}; %{$hoge->[0]}; %{$hoge->{0}}

どれだよ!!!!!!!!111111111

244 名前:nobodyさん mailto:sage [2011/10/24(月) 23:51:16.92 ID:???]
独特の表記とか用語に拒否反応ってのはわからんでもないけど、
スコープとかクロージャ駄目ってんじゃ他の言語もまともに使えてないだろ……

245 名前:nobodyさん mailto:sage [2011/10/24(月) 23:54:49.09 ID:???]
>>243
意味不明って、単にPerlを知らないだけでは。
慣れればおいしいよ。

246 名前:nobodyさん mailto:sage [2011/10/25(火) 00:14:38.50 ID:???]
$hoge; スカラ
$hoge{0}; ハッシュ
$hoge->{0}; ハッシュへのリファレンス
@hoge; 配列
@hoge{0}; エラー 配列へのアクセスは $hoge[0] でアクセス
@hoge->{0}; エラー 配列へのリファレンスは $hoge->[0] でアクセス
%hoge; 連想配列
%hoge{0}; 記述エラー 連想配列内の要素は $hoge{0} でアクセス
%hoge->{0}; 記述エラ 連想配列へのリファレンスは $hoge->{0} でアクセス

${$hoge}; スカラのデリファレンス
@{hoge}; エラー
@{$hoge}; 配列のデリファレンス
{@{$hoge{0}}} 連想配列内の配列をデリファレンス ($hoge{0} の中に配列が入っている) ただし外の {} は括る必要なし。 この場合 {} はブロックになる。
@{$hoge->[0]}; 配列へのリファレンスの中の配列
%{$hoge->[0]}; 配列へのリファレンスの中の連想配列
%{$hoge->{0}} 連想配列へのリファレンスの中の連想配列

こんな感じのも良く使うので覚えた方がいいかも。
$hoge = {
  'array' => [], 連想配列へのリファレンスの中に配列を作る
  'hash' => { 連想配列へのリファレンスの中に連想配列へのリファレンスを作る
    'key1' => 'val',
    'key2' => 'val',
  }
};
それぞれへのアクセスは
$hoge->{'array'}->[1];
$hoge->{'hash'}->{'key1'};
となる。

247 名前:nobodyさん mailto:sage [2011/10/25(火) 00:41:32.32 ID:???]
> @hoge{0}; エラー 配列へのアクセスは $hoge[0] でアクセス

エラーではない
が、スライスを理解して使っているわけではなく、たまたま動いているだけ、の初心者が多いと思う

248 名前:247 mailto:sage [2011/10/25(火) 00:42:17.13 ID:???]
{} と [] を見まちがえた。ごめん。

249 名前:nobodyさん mailto:sage [2011/10/25(火) 01:04:32.90 ID:???]
@hoge{0} なら %hoge に対するハッシュスライスでしょ
warnings 有効なら @hoge{0} は警告出るだろうが、
@hoge{0..2} とか、 my @keys = (0); @hoge{@keys} なら問題ないはず



250 名前:nobodyさん mailto:sage [2011/10/25(火) 01:31:51.65 ID:???]
指摘のある通り、%hoge; と宣言されてるなら @hoge{0} は動作する。

けどね。
質問者がくじけてる部分を考えたらスライスは考えないほうがいいのでは?
という意味からエラーっていうことにした。

まぁ、言葉が足りなかったってのもあるけど ^-^;

251 名前:nobodyさん mailto:sage [2011/10/25(火) 01:51:36.00 ID:???]
>>246
> @{hoge}; エラー
エラーではない。

全ての変数や関数へのアクセス方法で一番冗長な書き方は sigil { (何か) } ([添え字]|{キー})
の形で、何かが裸の語なら変数名、リファレンスならデリファレンス、
それ以外なら何かの値を名前としたシンボリックリファレンスと解釈される。
通常の変数へのアクセスは、裸の語をデリファレンスすると捉えてもいい。

${ foo } … 通常の変数。{} は*省略可能*。 ${foo} = "foo${foo}foo$foo"; # ok
${ "foo" } … シンボリックリファレンス
${ $foo } … スカラーリファレンス $foo をデリファレンス
${ 'f' . 'oo' } … 式の値を名前としたシンボリックリファレンス
${ \ foo('bar') } … foo('bar') の戻り値のリファレンスのデリファレンス

perldoc.jp/docs/perl/5.10.0/perldata.pod#Slices
> (引用注: 添え字/キーの) かっこの種類(大かっこか中かっこか)は、見ているものが配列か
> ハッシュかをつかさどっています。一方、配列やハッシュの先頭の記号 ('$' か '@') は、
> 返ってくるものが単一の値(スカラ)か、複数の値(リスト)かを示しています。

use warnings; my @{foo} = ('a'..'f'); my %{bar} = ('g'..'j');
print ${foo}[3]; # 'd' へのアクセスで "d" を表示
print @{foo}[3]; # 警告有り。('d') へのアクセスで "d" を表示
print @{foo}[3,4]; # ('d','e') へのアクセスで "de" を表示
print ${foo}[3,4]; # 警告有り。リストをスカラーとして評価すると最後の値が返されるので "e" を表示
print ${bar}{'g'}; # 'h' へのアクセスで "h" を表示
print @{bar}{'g'}; # 警告有り。('h') へのアクセスで "h" を表示
print @{bar}{'g','i'}; # ('h','j') へのアクセスで "hj" を表示
print ${bar}{'g','i'}; # キー "g$;i" へのアクセスになるので undef






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef