Perlコーディング初心者質問スレ Part 44
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2005/10/17(月) 00:47:17ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0951分かりません!
2005/12/08(木) 00:23:26ID:zq2aWK4E調べたけどよくわからなかったんで質問させてください。
やりたいことはperlとDBを使用したアプリ作成です。DBはmysql、mdb
どちらかで考えています。
現在の環境
os:windowsXp
webサーバ:Apache
1:DBの配置場所が分かりません。どこのディレクトリに配置して
どのような呼び出し方をするのでしょうか。(DBIでデータソース
を指定するところ)
2:実際インターネットにのっけたとき、サーバはunixになると思うんですが
そのときのDBの配置場所を教えてください。また、webサーバによって
dbの配置場所、接続方法は変わるんでしょうか?
0953nobodyさん
2005/12/08(木) 00:54:51ID:???メモリ上、又はファイル
0954nobodyさん
2005/12/08(木) 01:00:14ID:/QVLECMb主な流れは下記の通りです。
push(@dump, "あ,123,,,,,,,,,,,,\n");
push(@dump, "い,456,,,,,,,,,,,,\n");
push(@dump, "う,789,,,,,,,,,,,,\n");
:
:
print "Content-Disposition: attachment; filename=abc.csv\n";
my($sizeTmp);
foreach(@dump){
$sizeTmp .= $_;
}
my($size) = length($sizeTmp);
print "Content-Length: $size\n\n";
print "$downloadCsv";
ダウンロードはできるのですが、
lengthでファイルサイズが正しく取れていない??(おそらく)
それにより、ダウンロードしたCSVファイルを開くと
最後の方が欠けています。
よりよい方法や参考サイト等はございますでしょうか?
ご教授頂けたら幸いです。
0955nobodyさん
2005/12/08(木) 01:06:06ID:???0956954
2005/12/08(木) 01:10:27ID:/QVLECMb申し訳ありません。一部訂正です。
$downloadCsvは下記の様になります。
my($downloadCsv);
foreach(@dump){
$sizeTmp .= $_;
}
my($downloadCsv) = length($sizeTmp);
print "Content-Length: $size\n\n";
print "$downloadCsv";
0957nobodyさん
2005/12/08(木) 01:12:13ID:???数値だけの変なファイルがダウンロードされる気がするんだけど
0958954
2005/12/08(木) 01:14:09ID:/QVLECMb再修正してみましたが、やはりDLしたCSVファイルが欠けてしまいます。
my($downloadCsv);
foreach(@dump){
$downloadCsv .= $_;
}
my($size) = length($downloadCsv);
print "Content-Length: $size\n\n";
print "$downloadCsv";
0959nobodyさん
2005/12/08(木) 01:17:22ID:???全体のソースとか無理かな
0960954
2005/12/08(木) 01:27:44ID:/QVLECMb内容は繰り返し部分を省いた以外はほぼそのままです。
<IN>:$in{data} = abc;(DLファイル名)
my(@dump);
push(@dump, "更新,$y/$m/$d,,,,,\n");
push(@dump, "記録,$hashDay{$in{'data'}}日分,,,,,\n");
push(@dump, ",,,,,,\n");
push(@dump, "更新,$y/$m/$d,,,,,\n");
:
以下繰り返し
:
print "Content-Type: application/octet-stream\n";
print "Content-Disposition: attachment; filename=$in{data}.csv\n";
my($downloadCsv);
foreach(@dump){
$downloadCsv .= $_;
}
my($size) = length($downloadCsv);
print "Content-Length: $size\n\n";
print "$downloadCsv";
exit;
0961nobodyさん
2005/12/08(木) 01:41:13ID:VQhX6rujprintしたときは\x0D\x0Aの2になるとかじゃない?
ちゃんと調べてないけど
何バイト分足りないのか比べて見たら?
0962nobodyさん
2005/12/08(木) 01:44:30ID:???進行状況のバーが無くなるぐらいだし
0963954
2005/12/08(木) 02:00:29ID:/QVLECMbとりあえず、Content-Lengthが無いとローカルでDLできない様なので
付ける方向で行こうと考えています。
DLするCSVのデータ中の改行に\x0D\x0Aを用いる事ができなかったので
下記の様にする事で問題を回避できました。
my($downloadSize);
my($downloadCsv);
foreach(@dump){
my($downloadSizeTmp) = $_;
$downloadSizeTmp=~ s/\n/\x0D\x0A/g;
$downloadSize .= $downloadSizeTmp;
$downloadCsv .= $_;
}
my($size) = length($downloadSize);
print "Content-Length: $size\n\n";
print "$downloadCsv";
0964nobodyさん
2005/12/08(木) 02:05:27ID:???0965954
2005/12/08(木) 02:18:27ID:/QVLECMb\r\nはウィンドウズの改行コードだと思うのですが、
改行コード\nをウィンドウズのローカルにDLすると\r\nに変換されるのでしょうか?
現状では\nでDLしてもContent-Lengthが正しければ正常にDLできています。
0966nobodyさん
2005/12/08(木) 02:20:59ID:???どんなブラウザ使ってるんだ?
0967954
2005/12/08(木) 02:23:59ID:???やはり何度やってもContent-Lengthがないと
Internal Server Errorになります。
0968nobodyさん
2005/12/08(木) 02:25:27ID:???0969nobodyさん
2005/12/08(木) 02:27:15ID:???それ、
>print "Content-Length: $size\n\n";
この行をそのまま消したからだろ
>print "Content-Length: $size\n\n";
を
>print "\n";
に置き換えてみろ
0970954
2005/12/08(木) 02:29:20ID:???ご指摘の通り、現環境ではprint "\n";で問題ありませんでした。
0971954
2005/12/08(木) 02:38:44ID:/QVLECMb\nで処理しているデータは\r\nや\rなどDLする環境向けに
変換する必要があるのでしょうか?
現ローカル環境のWinでDLした際には問題なかったのですが、
その他の環境やMac環境むけにDLさせる場合は
\r等に置換しないと問題となったりする物なのでしょうか?
0972nobodyさん
2005/12/08(木) 07:21:12ID:qoVbfW3Nこういった文字列が合った場合、2個目の abc にマッチさせたい場合の正規表現がわかりません。
行末にあれば abc$ でマッチできるんですが …
0973nobodyさん
2005/12/08(木) 07:38:25ID:???EXCELやある程度の機能があるエディタなんかは各種改行コードに対応しているので問題ない
メモ帳だと\nのファイルは1行で表示されるので問題あり。
0974nobodyさん
2005/12/08(木) 09:19:32ID:???何でもかんでも鵜呑みにせずウラを取ろうな。
http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
http://www.studyinghttp.net/rfc_ja/rfc2616.ja.xhtml.gz#Sec2.2
http://www.nilab.info/docs/cgi/draft-coar-cgi-v11-03-clean-jp.html#7.2.1
まともな HTTP サーバならヘッダ部の改行コードに関しては気を利かせて
くれるので "\n" で問題無い。ボディ部、今回の件だと CSV ファイルの
改行コードは >>973 の言う通りで、ファイルを読む人のソフトが特定できる
なら改行コードを合わせて吐いた方が無難。
>>972
my $str = "abcdefgabcdef\n";
for ('abc', 'def') {
$str =~ s/(($_).*?)(\2)/ $1 . uc $3 /e;
print $str;
}
0975nobodyさん
2005/12/08(木) 09:23:44ID:qoVbfW3N0976nobodyさん
2005/12/08(木) 11:18:07ID:???OSXからは \n だからね
0977nobodyさん
2005/12/08(木) 13:24:04ID:???改行コードはどのプラットフォームでも\n。
\r→CR
\n→LF
としないと、意味不明。
0978954
2005/12/08(木) 13:51:47ID:/QVLECMb現状ではDLするのは主にWin環境です。
CSVエクセルファイルであるため、開くソフトはエクセルのみであると
想定出来るためソフト側に改行コードの対応は任せようと思います。
おそらくMacで用いる事はないと思うのですが、
支障があるようであれば改行コードをDL時に選択できるものに変更しようと思います。
0979nobodyさん
2005/12/08(木) 14:31:43ID:???0980nobodyさん
2005/12/08(木) 14:55:26ID:???0981nobodyさん
2005/12/08(木) 15:04:53ID:???0982nobodyさん
2005/12/08(木) 17:02:49ID:qoVbfW3N0983nobodyさん
2005/12/08(木) 18:00:29ID:???0984nobodyさん
2005/12/08(木) 18:27:53ID:???クックブック: http://www.oreilly.co.jp/books/4873112028/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
Perldoc.com っていつも全然繋がらないんだけど、死んでる?
0985nobodyさん
2005/12/08(木) 18:30:40ID:???>>984 以外に変更した方がいい URL があったら誰かよろしく。
# 俺は立てれなかった…。
0986nobodyさん
2005/12/08(木) 18:53:17ID:???0987nobodyさん
2005/12/08(木) 19:21:50ID:???http://user.ftth100.com/mirrorhenkan/perl/
0988nobodyさん
2005/12/08(木) 22:16:12ID:7Tka8YnIスレ立てに失敗しました。orz・・・
で、質問です。
perl5.8.0を使っていたのですけど、perl5.8.5をインストールしました。
ところが、
# perl -v と打ちますと
This is perl, v5.8.0 と返ってきます。
英語だからとテキトーに読み飛ばしてインストールしたせいだとは思うのですが、
後から、perl5.8.5をデフォルトで使用するにはどのようにしたらよいですか??
0990nobodyさん
2005/12/08(木) 22:47:35ID:???0991988
2005/12/08(木) 23:04:14ID:???http://pc8.2ch.net/test/read.cgi/php/1134049707/
>>989
どこで質問したらいいですかねぇ。
知ってたら、もうちょっと教えてください・・・。
0992nobodyさん
2005/12/08(木) 23:28:57ID:???乙
OSがLinuxならLinux板のくだ質スレ辺りで、経緯を説明して古いほうの
Perlをアンインストールしたいと聞けば良いんじゃないかな。保証は出来ないが…
0994nobodyさん
2005/12/09(金) 00:04:36ID:???ウェブで調べて、とりあえずuse encoding "euc-jp";と、してみたとです。
そしたら、DBテーブルからもってきた文字列だけ、出力時に
〜does not map to euc-jpと怒られるとです。DBもeuc-jpで作ってあるとです。
スクリプト内の日本語や、openで開くファイルは問題なかです。
どこに原因があるとですか。よろしく、おねげーしますだ。
0995nobodyさん
2005/12/09(金) 11:59:04ID:???0996nobodyさん
2005/12/09(金) 12:14:53ID:???そのDBから持ってきて出力時にエラーになる文字列とやらの
中身とutf8フラグの状態を調べるのが基本だと思うが。
0997nobodyさん
2005/12/09(金) 16:30:40ID:???http://pc8.2ch.net/test/read.cgi/php/1134049707/
0998nobodyさん
2005/12/09(金) 16:35:39ID:???0999nobodyさん
2005/12/09(金) 17:18:03ID:???↓
1000nobodyさん
2005/12/09(金) 17:24:52ID:???http://pc8.2ch.net/test/read.cgi/php/1134049707/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。