トップページphp
1001コメント296KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/08/06(水) 22:54:32ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1203935151/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0320nobodyさん2008/10/08(水) 05:57:55ID:vsHGNNNA
>>294です。グローバル変数はそんなに悪いものなのですか。
スクリプトが大きくなれば大きくなるほどスクリプト自体見づらくなるだろうし、
他人からすると見づらいかもしれませんが、無駄に変数作って無駄にメモリへの書き込み
増やすぐらいならグローバル変数使うほうがいいと思ってました。
変数の中身が同じ内容なら新しく書き込まず同じメモリを参照するということはないですよね?
皆さんが教えてくれた方法をいくつか試してやってみようと思います。
質問に答えてくださった方々ありがとうございました。
0321nobodyさん2008/10/08(水) 06:58:31ID:???
>>320
>>296のように、リファレンスで渡せばコピーは発生しないよ。
直接中身を弄れるから、returnで返す事も要らない。
0322nobodyさん2008/10/08(水) 10:04:27ID:???
>無駄に変数作って無駄にメモリへの書き込み

この考え方のが無駄
0323nobodyさん2008/10/08(水) 10:25:26ID:???
メモリのread/write負荷までちまちま気にして作らにゃならん「掲示板」って
どんなんだろうとは思う。
0324nobodyさん2008/10/08(水) 10:40:29ID:???
Cならもっとメモリ気にしてアロケートしていかないといけないからまだまし
0325nobodyさん2008/10/08(水) 16:11:59ID:KrA4Ywcm
>>321
そうなんですか。自分はパッケージ?(Data::Dumper)というのは触ったことないので
これを機会に触ってみようと思います。
>>322 >333
仮に完成しても人が来るかもわかりませんが仮に来てくれて書き込みがあった場合
1回の書き込みでテキストから100行ほどの文を3つの配列によみこんでまた書き込みしなければ
いけないので変数受け渡しでやるとすごい負荷になるんですよね。
しっかりした知識があれば1つの配列で収まるかもしれないし
それ以前に配列だけグローバル変数にすれば済む話ですが。
とりあえずできる限りローカル変数にしてみようと思います。
03262962008/10/08(水) 17:23:24ID:???
……Data::Dumper は単にデータをダンプする物です。
掲示板の機能とかには関係ありません。
>>296を全部コピペして、「コマンドラインから実行」してみてください。
%hash の内容が書き換っている事が分ります。
0327nobodyさん2008/10/08(水) 18:07:19ID:???
ある変数の値がおかしくなるバグが発生したとき、その変数を使ってる部分見直すことになる。
変数が一部分でしか使われていないなら、その使われている辺りを調べればいいけど、
グローバル変数の場合、最悪、全てのソースコードとにらめっこすることになる。

サブルーチンのテストするにしても、グローバル変数がどこで使われてるのか
分からないから、全ての変数を設定しないといけない。

そんな理由で、グローバル変数は定数ぐらいにして、捨てたほうが楽になるよ。
同じ理由で、一つのハッシュに詰め込みすぎるのにも注意してね。
0328nobodyさん2008/10/08(水) 18:20:31ID:???
>>319
掲示板と画像ドラッグを同列に扱うという感覚がよくわからない。
あるページに複数がアクセスしてるとき、誰が画像の主導権を握るの?
リアルタイムで動かすなら、Perlではどうにもならんから、AjaxとかASP.NETスレで訊いてみれば?
0329nobodyさん2008/10/08(水) 19:13:15ID:Ayb4NO8c
変数とかいうより、もっと大きな構造を考えた方がいい
いくら変数をローカルにしたところで、無駄な処理やループが大毛りゃ話になりません
0330nobodyさん2008/10/09(木) 00:02:38ID:???
>>328
書き込みボタンを押した時点で、ロックをかけようと思ってます
同時に何人かが動かし続けるような状態にはならないと思う
A 画像A
B 画像B
書き込みボタン

Aさんが画像を動かして書き込みボタンを押して変更したとき
Bさんは動かす前の画面のままで、画像を動かし書き込みボタンを押したら、Aさんは無視してBさんが動かした状態に更新されていいです

それか
A 画像A OK Clear
B 画像B OK Clear

こんな風に数行に渡ってかかれたものをOKボタンで座標と名前上書きでもいい
一人の人が一つのボタン、一つの画像と名前用テキストボックスを所有
Aが動かしたとき、Bがアクセスし動かしてても、ページはAが動かす前の状態
Aが動かし終わってAの画像座標を保存したとき、Bが見てるのはまだAが動かす前の状態
Bが動かしてOK押したとき、やっとBが見れるのはAもBも動いた後の状態
こんな風にできたらいいなと思ってます

Javaよりも、ジャバスクリプトとParlでできそうと思って・・・
ジャバスクリプト部分は完成してます
後はOKボタンでどう座標を保存するか・・

説明いまいちですか?
0331nobodyさん2008/10/09(木) 02:03:13ID:???
>>330
A,Bはそれぞれ自分専用の画像を動かすってこと?
ま、いいやw

座標をクエリ文字列にしてURLにして送信ってとこまではおk?
JSONにして送信してもいい。
基本的にJavascriptの質問な気がする。。。
0332nobodyさん2008/10/09(木) 02:40:00ID:???
>>331
レスありがとうございます
調べて、やってみます;
スレ違いかもしれなかったのに、どうもありがとう
0333nobodyさん2008/10/13(月) 00:56:20ID:Zn63xY/1
WordDecoderのunmimeメソッド文字化けについての質問です。
以下のようにデフォルトキャラセットをUTF8とし、メールを解析しているのですが、
MIME::WordDecoder->default(MIME::WordDecoder->new(['*' => sub {jcode(shift)->utf8},]));
my $body = unmime($entity->bodyhandle->as_string);

文字列「結構色々」の「構色」で文字化けが発生し、以降の文がおそらくアスキー文字の出現まで文字化けが続きます。
結=?'!9FI$・・・・・・・・というような文字列に文字化けしています。

もとの文字列(メールの原文ISO-2022-JP)をJcodeで直接UTF8にコンバートするとこのような文字化けは発生しません。
これは何が原因かわかる方はいらっしゃいますか?

unmimeはbase64エンコードされたメールなども処理するので、できれば使いたいのですが。
0334nobodyさん2008/10/14(火) 02:12:34ID:7R/mK8k7
ID晒して質問させていただきます。

PerlでApacheのnoteを取りに行くにはどうすればいいでしょうか?

test.cgi

#!/usr/bin/perl
print "Content-type: application/x-httpd-cgi\n\n";
my $r = Apache->request()->main();
my $name = $r->notes('name');
print $name;
exit(0);

参考元:http://jp.php.net/manual/ja/function.apache-note.php

取りに行くのに必要な条件、足りない記述などを教えていただきたいのです。
ファイル内の記述以外に、mod_perlが必要だとかはありませんか?

ご教授、よろしくお願いします。
0335nobodyさん2008/10/14(火) 10:26:02ID:???
そもそも use Apache::Request; が無いが・・・
0336nobodyさん2008/10/15(水) 13:00:34ID:???
perlでyyyy/mm/dd hh:mm:ssみたいな文字列から、timeで得られるような値を取得する方法ってありましたよね?
たしかモジュールで提供されてたと思いますが・・・
0337nobodyさん2008/10/15(水) 18:02:46ID:???
>>336
use Time::Local;

$time_str = "2008/10/15 17:54:32";

$time = timelocal sub{@_[5,4,3,2],$_[1]-1,$_[0]}->($time_str=~m!^(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+)$!);
0338nobodyさん2008/10/15(水) 18:03:45ID:???
モジュールならDate::Parserとかで探してみたらいい。
0339nobodyさん2008/10/15(水) 19:04:48ID:???
>>336
HTTP::Date
0340nobodyさん2008/10/15(水) 19:24:03ID:???
>>337-339
ありがとうございます。
助かりました m(_ _)m
0341nobodyさん2008/10/17(金) 17:00:00ID:M5nni1qD
プレースホルダを使用して、executeからバインド変数で値を送ると、
変数内の末尾のスペースが全て削られて、
実行されてしまうのですが、同様の事象を経験した人いませんか?
0342nobodyさん2008/10/18(土) 18:37:34ID:???
掲示板程度なら書けるようになったので、次の一歩として下記の本を読もうと思っているのですが、
8年前なので内容が古いのではないかと少し心配です。

この本は、今でも十分実用に耐えうる本でしょうか?

CGIプログラミング 第2版
http://www.oreilly.co.jp/books/4873110440/
0343nobodyさん2008/10/18(土) 20:18:21ID:???
>>342
Windows95の入門書のようなもんだと思います。
0344nobodyさん2008/10/18(土) 20:18:42ID:???
Perl自体がそろそろ古さが否めないような気がするけど、そうは思わないなら問題ないでしょ。
0345nobodyさん2008/10/19(日) 01:16:41ID:???
CGIを介してファイルをダウンロードするプログラムを作っています。
それで以下のソースのように、「test.mp3」というファイルを「2008.01.01.mp3」という風にリネームしてダウンロードしたいのですが…

#!/usr/local/bin/perl

$fname = "2008.01.01.mp3";
$mime = "Content-type: audio/mpeg\n\n";

print "Content-disposition: attachment; filename=\"$fname\"\n";
open(FILE,"test.mp3");
print $mime;
binmode(FILE);
binmode(STDOUT);
print <FILE>;
close(FILE);


この方法だと、何故か「2008[1].01.01.mp3」という風に、間に[1]という文字が挿入されてしまいます。
ドットが2回続くとこうなるみたいですが…
ちなみにIEだけでこうなるみたいで、OperaやFireFoxでは問題なくダウンロード出来ました。

もしIEで正常にダウンロードする方法があれば、どなたか教えて頂いてもよろしいでしょうか?
よろしくお願い致します。
0346nobodyさん2008/10/19(日) 02:12:01ID:???
ファイル名変えたほうがいい。変えて損はないと思うが?
0347nobodyさん2008/10/19(日) 02:14:25ID:???
最後の.以降しか拡張子みないのに
キャッシュは最初の.までしかファイル名としてみてないのか・・・
やっぱりあほだな>IE
0348nobodyさん2008/10/19(日) 06:32:58ID:???
ファイル名にドットとかスペースとかカンマとか演算子とか気持ち悪い

A-Za-z0-9_

な範囲でいこーぜ
03493452008/10/19(日) 22:03:33ID:???
>>346-348

どうもありがとうございます。
やはりIE特有のバグみたいですね・・・

Content-dispositionを使うと強制的にShift-JISになったりと、IE何か微妙すぎるよorz
今までの書式が2000.01.01のような形だったので、出来ればそのままが良かったのですが・・・
せっかくなんでファイル名を変えるようにしてみます。

皆様、どうもありがとうございました。
0350nobodyさん2008/10/24(金) 17:38:04ID:gaOQS66Z
perl5.6.1 での utf8 の扱いについて質問です。(OSはlinux)
テンプレ >3 に[Perl5.8Unicodeメモ]がありますが、perl5.6.1ではどうすればよいのでしょうか?
(>3 [Perl5.8Unicodeメモ]の一番上はリンク切れのようです)

やりたいこと:データベース(euc)からデータを読んでutf8に変換してHTMLを出力する
やってみたこと:↓
---------------------
use strict;
use utf8;
use Unicode::Japanese;
use DBI;

(@list にDBからデータ取得)

print "Content-Type: text/html\n\n";
print <<HTML;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>UTF-8 表示テスト</title>
</head>
<body>
<h1>UTF-8 表示テスト</h1>
<table border="1">
<tr><th>ID</th><th>データ1</th><th>データ2</th><th>データ3</th></tr>
HTML

(つづく)
03513502008/10/24(金) 17:48:16ID:gaOQS66Z
(つづき)

my $jcode = Unicode::Japanese->new();
my($id, $data1, $data2, $data3);

for (0..$#list-1) {
$id = $list[$_]->{id};
$data1 = $jcode->set($list[$_]->{data1}, 'euc')->utf8;
$data2 = $jcode->set($list[$_]->{data2}, 'euc')->utf8;
$data3 = $jcode->set($list[$_]->{data3}, 'euc')->utf8;
print qq|<tr><td>$id</td><td>$data1</td><td>$data2</td><td>$data3</td></tr>\n|;
}

print <<HTML;
</table>
</body>
HTML

exit;
--------------------------------------

これで(私が見る限り)問題なく動作しました。
DBのデータには機種依存文字も含まれているのですが、それも出力されました。
これでいいのでしょうか?
03523502008/10/24(金) 17:51:40ID:gaOQS66Z
補足
上のソースはutf8で書きました。
0353y2008/10/26(日) 01:17:05ID:???
大手ECサイトのヨドバシドットコムが、サイトリニューアルから大規模な障害を3日間...
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1220150877

506 :目のつけ所が名無しさん:2008/10/26(日) 00:47:20
大手ECサイトで、ここまで派手なリリース失敗は初めて見た。
エンジニア向けIT情報誌や関連サイトは、ぜひ取材して原因を明かして欲し
いは。
0354nobodyさん2008/10/26(日) 04:20:46ID:???
へぇ、、最近珍しい気がするね。
ちゅか、お金を扱うサイト作るの怖い。
0355nobodyさん2008/10/26(日) 09:49:05ID:???
いや、個人情報扱うだけでも怖いよ・・・
0356nobodyさん2008/10/27(月) 17:52:44ID:???
冷凍みかん(http://ruby.ntn.org/fm/)というアンテナを使いたいのですが
ページによっては情報を取得できないことがあるようです。調べてみたところ
リクエストの成功判定がおかしいらしく、ページによっては代入したリクエス
ト結果の値が変わってしまう(?)みたいです。原因がよくわからないので
アドバイスをいただけたらと思います。よろしくお願いします。

use HTTP::Request;
use LWP::Parallel;
my $pua = new LWP::Parallel::UserAgent;
$pua->max_hosts(1);
$pua->remember_failures(1);
$pua->agent('HTTP Test Program 0.1');
my $site = {
method => GET,
url => 'http://www.w3.org/MarkUp/Drafts/',
# url => 'http://www.w3.org/',
};
my $req = HTTP::Request->new($site->{method}, $site->{url});
$req->{site} = $site;
print $req->as_string();
if (my $res = $pua->register($req)) {
print STDERR $res->request->url, "\n";
print STDERR $res->error_as_HTML;
}
my $entries = $pua->wait(300);
foreach (keys %$entries) {
my $res = $entries->{$_}->response;
print $res->code.":".$res->message."\n";
$res->request->{site}{response} = $res; # 代入
$res ? print "Success\n" : print "Fail\n"; # 代入元
$site->{response} ? print "Success\n" : print "Fail\n"; # 代入先
}
0357nobodyさん2008/10/29(水) 10:01:41ID:???
Tripletailを使用しています。
下記のように前のページからPOSTデータを取得してTemplateに書き出したいのですが、
POSTのデータが受け取れません。
どう修正すればよいでしょうか?

#! /usr/bin/perl

use strict;
use warnings;
use Tripletail qw(/dev/null);
use CGI;

$TL->startCgi(
-main => \&main,
);

sub main {
my $t = $TL->newTemplate('template.html');
my $cgi = CGI::new();

#前ページからPOSTデータの取得
$a = $cgi->param('a');
$b = $cgi->param('b');

$t->expand(
STR => $a,
NUM => $b,
);
$t->flush;
}
0358nobodyさん2008/10/29(水) 17:52:23ID:???
POSTが受け取れないんじゃなくて実行エラーになってないか?
0359nobodyさん2008/10/29(水) 18:33:23ID:???
$a, $bは使うなと(ry
0360nobodyさん2008/10/29(水) 18:43:45ID:???
Tripletailって使ったこと無いけど設定ファイル指定するとこ/dev/nullでいいの?
0361nobodyさん2008/10/30(木) 03:00:37ID:???
activeperl使ってるときは
perlのパスは以下のとおりにするといいよ

#!C:/perl/bin/perl
0362nobodyさん2008/10/30(木) 09:23:45ID:???
>>358
Tripletail::Template::Node#expand: the value for key [NUM] is not defined. (key [NUM] の値が指定されていません)

と表示されます。
0363nobodyさん2008/11/02(日) 21:06:44ID:???
掲示板を作ろうかと思ってるんですが
datに書き込んだログデータを読み込む場合って
配列、変数、連想配列、
どれに読み込むのが読むのも吐き出すのも早いですか?
0364nobodyさん2008/11/02(日) 21:14:51ID:???
スカラーが速いだろうけど差が出るにしても倍も違わないだろうし
一度の実行で何度も繰り返すわけじゃないからどうでもいいレベル

結論を言うと後で見てもわかりやすいようにバグの入り込む余地がないくらい手堅く書くのがいいかと
0365nobodyさん2008/11/02(日) 21:30:21ID:Tjmw1r4y
ごめん、>>363は書き方が悪かったかも。
スカラー、配列、ハッシュ、
どれが掲示板のログデータを読み出し吐き出しすることに向いてますか?
って質問です。

>>364
なら配列の方が手軽でよさそうですね、ありがと
0366nobodyさん2008/11/03(月) 11:36:36ID:???
DBD::SQLiteが楽な気もする
0367nobodyさん2008/11/03(月) 12:00:57ID:???
個別のデータをテキストファイルとして抜き出すのに適さない
小規模掲示板レベルであればテキストファイルにしてインデックスを用意したようが扱いやすい
DB は確かに扱える人からすりゃ便利すぎて他の考慮の余地ないかもしれないが、全ての環境で DB が動いてる、導入されてると思うな。って思うんです。
0368nobodyさん2008/11/03(月) 20:35:21ID:???
いや、SQLiteだからなぁ・・・
0369nobodyさん2008/11/04(火) 01:08:37ID:???
カラムの変更があったとき面倒くさくない? >CSVテキスト
0370nobodyさん2008/11/04(火) 01:53:06ID:???
タブ句切のデータを
data[335]->{'time'}
みたいに扱えるようにしてるからさほど苦労はない


ただ多岐に渡るデータの全文検索とかになると TSV の場合
数千件のデータすらタイムアウトになるから
全データを1つのファイルにまとめた検索用データを作ったりと、ソースがみすぼらしくなるw
0371nobodyさん2008/11/06(木) 02:33:06ID:???
あー、そっか。
一行目をカラム名にして $index{'カラム名'}=左から何列目 といいきかせ、
次の行からは @hoge に split でそーにゅーして、
$hoge[$index{'カラム名'}] でいぢくれば、
表に変更があっても保守楽かなぁ。
0372nobodyさん2008/11/06(木) 07:50:45ID:???
そんなことせずSQLiteにしたらいいのに、、
0373nobodyさん2008/11/06(木) 09:10:15ID:???
>>372
レンタルサーバーの場合は何を使えばいい?
0374nobodyさん2008/11/06(木) 09:59:01ID:???
いやだからSQLiteだってばwww
0375nobodyさん2008/11/06(木) 10:23:52ID:???
SQLiteはサーバーを必要としない組み込みのDBだよ
0376nobodyさん2008/11/06(木) 11:15:22ID:???
そこじゃなくて、モジュールインストールできんのかっつーとこじゃねーの?
0377nobodyさん2008/11/06(木) 12:29:12ID:???
入ってるサーバ使えばいいじゃん。
今時mysqlとSQLiteくらいは使えるとこ結構あるよ
http://atpages.jp/

てかめんどくさいから好きなの使いなよ
http://atbb.jp/
http://atbbs.jp/
http://atchs.jp/
http://atpaint.jp/
http://rentalbbs.livedoor.com/
0378nobodyさん2008/11/07(金) 00:12:30ID:???
>>376
適当な場所に置いてuse libで良くね?
0379nobodyさん2008/11/07(金) 00:27:13ID:???
DBD::SQLiteはSQLiteはいってないとダメじゃ?
0380nobodyさん2008/11/07(金) 00:35:54ID:???
Cのコンパイラだけあればファイル揃ってなかったっけ?
あとDBD::SQLiteよりDBD::SQLite::Amalgamation使ったほうがよくないか
それにしてもパッチあてないといけなかった気がするけど。
0381nobodyさん2008/11/07(金) 00:52:40ID:???
>>379
要りません。ていうかDBD::SQLiteはperl用SQLite込です。
0382nobodyさん2008/11/07(金) 11:15:39ID:???
仕事だと、既にレンタル鯖借りちゃってるんでここで、みたいなクライアントがたまにいる
鯖変更の交渉も含め、金額に見合った仕事をするようにしないとなぁ、と思う。
0383nobodyさん2008/11/07(金) 23:46:31ID:???
ロリぽやさくらでもSQLiteくらい入ってるぜ?
0384nobodyさん2008/11/08(土) 00:04:00ID:???
小さい会社でドメイン取得が流行ったころに借りてるところって、
Perlのverが5.6以下だったりするところけっこうあるんだよなぁ。
どちらにしても会社のサイトがロリポはないよね。名前的にw
0385nobodyさん2008/11/08(土) 00:28:47ID:???
5.6以下って5.6ならいいじゃん。

まーPerl5ならなんとかなる。5未満は死んでくれ・・・
0386nobodyさん2008/11/08(土) 00:48:56ID:???
SQLite の話が出てたので試しに使ってみた。
WindowsXP, ActivePerl 5.6.1

create table で失敗してるようなんだけど、どうやって調べればいいんだろう?

my $sql = <<'_SQL_';
CREATE TABLE test (
id integer primary key,
name
)
_SQL_
my $sth = $dbh->do($sql);

の実行後に

my $sql = sprintf "INSERT INTO %s (%s) VALUES(%s)", $table, keys %{$hashref}, (join ',', '?' x scalar(values %{$hashref}));
my $sth = $dbh->prepare($sql);
$sth->execute(values %{$hashref});

を実行すると、

DBD::SQLite::db prepare failed: no such column: name(1) at dbdimp.c line 268 at sqlite.pl line 41.
Can't call method "execute" on an undefined value at sqlite.pl line 42.

ってエラーがでる。
$hashref = {id => 1, name => "hoge"};
です。
0387nobodyさん2008/11/08(土) 00:56:12ID:???
成形した$sqlを表示してみそ
03883862008/11/08(土) 01:05:43ID:???
ゴメン、 上のはなかったことにしてください。
keys %{$hashref} と (join ',', '?' x scalar(values %{$hashref})) は間違い。
03893862008/11/08(土) 01:22:05ID:???
これで出来た。
my $sql = sprintf "INSERT INTO %s (%s) VALUES(%s)",
$table, join(',', keys %{$hashref}) ,join(',', ('?') x scalar(values %{$hashref}));

ところで、データベースはどこに作成されるのですか?
スクリプトのあるディレクトリに dbname というファイルが作成されますが、サイズは 0 バイトです。
03903872008/11/08(土) 01:28:36ID:???
ハッシュの順番は保証されてないっしょ
03913862008/11/08(土) 01:43:51ID:???
>>387
keys で返ってくるキーの順番は保証されないけど、keys と values が同じ順番で返ってくるのことは保証されているのでは?
0392nobodyさん2008/11/08(土) 01:56:38ID:???
keys, values, eachは同じ順番で返ってくるのが保証されてるから大丈夫
0393nobodyさん2008/11/08(土) 06:41:27ID:???
しかし、>>386 とかみたら疲れるよなぁ。
複雑な演算をしないなら >>371 みたいに原始的なほうが扱いやすい。
03943862008/11/08(土) 16:02:05ID:???
DBはまだ使い慣れていないので、今はテキストファイルを >>371 のやり方か、
↓のやり方で扱ってます。

my @column = qw(id name);
my %data;
@data{@column} = split /\t/;
my $id = $data{id};
0395nobodyさん2008/11/08(土) 23:58:41ID:???
細かいツッコミしちゃうと>>371だとぅまく扱えないんだけどねw
0396nobodyさん2008/11/09(日) 01:11:14ID:tiuPBzgU
すいません。perlと直接関係ないんだと思うのですが、hotmialのアドレス帳のexportする際のcsvファイルを自動で取得したいのですが、
これはどうやったらできるのでしょうか?
mailaddressとパスワードが20セットあり、それのアドレス帳をPGで自動取得したいんです。

同じ事を経験された方いらっしゃいますか?
0397nobodyさん2008/11/09(日) 14:12:58ID:???
>>395
何がうまく扱えないの?
03983862008/11/11(火) 11:21:11ID:???
再度質問なのですが、DBD::SQLite を使って作成したベータベースは、どこに存在するのでしょうか?
よろしくお願いします。
0399nobodyさん2008/11/11(火) 12:05:41ID:???
connect 時のdbnameがファイル名
04003862008/11/11(火) 12:18:50ID:???
そんなん聞いてません
PATHがどこか聞いているのだよ
0401nobodyさん2008/11/11(火) 12:20:57ID:???
だから自分で設定したとこだよ
書かなきゃカレントだろーが
0402nobodyさん2008/11/11(火) 12:21:59ID:???
386はファイル名にはPATHも含まれていることがわからないバカか
0403nobodyさん2008/11/11(火) 13:37:01ID:???
まあ386では処理能力の限界かもしれないw
04043862008/11/11(火) 14:04:05ID:???
カレントってどこから見てのカレントだよバカチン
それぐらいも書けないなら解答すんなチンカス
0405nobodyさん2008/11/11(火) 14:27:24ID:???
もう放置の方向で
ここで答えたら「チンチン言ってたら答えてもらえた」と思ってまたそうするだろう。
0406nobodyさん2008/11/11(火) 14:54:42ID:???
いきなり>>403を読んだのでCPUの話かと思ったw
04073862008/11/11(火) 14:56:38ID:???
簡単に偽者に踊らされるお前らがかわいいw
04084862008/11/11(火) 20:48:30ID:???
本物の386です。
>> 399 レスありがとうございます。

DB接続時のファイル名指定を間違ってました。
my $dbh = DBI->connect("dbi:SQLite:dbname:$mydb","","");

下のように修正したら、スクリプトと同じディレクトリに指定した名称のファイルが作成されました。
my $dbh = DBI->connect("dbi:SQLite:dbname=$mydb","","");
作成されたファイルをバイナリエディタで見るとテーブルの情報やINSERTしたデータも入ってました。
お騒がせしました。

ただ、最初の方法でもデータをINSERTできるし、SELECTするとそれまで入力したデータ(約10件)を取り出せます。
>>389 で書いたように dbname という名称のファイルが作成されているのですが、あいかわらず 0 バイトです。
このファイルはスクリプトを実行してデータをINSERTするたびにタイムスタンプが更新されます。
これは、どうなっているのでしょうか?
0409V302008/11/11(火) 22:03:12ID:???
頭の回転が遅すぎて、何言ってるか理解できないです><
0410nobodyさん2008/11/12(水) 09:47:34ID:???
>>408
環境は?
実体は別のとこにあるのかもね
0411nobodyさん2008/11/12(水) 09:49:46ID:???
ってWindowsXPか。
リンクでもVirtualStoreでもないな。
04122008/11/12(水) 12:10:00ID:DKrfzJ/y
内容をフラッシュして閉じてください
04132008/11/12(水) 12:10:26ID:DKrfzJ/y
そうすればたぶん
04142008/11/12(水) 12:10:49ID:DKrfzJ/y
データが書き込まれると思う
0415nobodyさん2008/11/12(水) 12:41:44ID:???
Winじゃないけど同じようにやったらdbname:mydbみたいなファイルになったぞ
Winだと:はドライブ名の指定にしか使えないんじゃなかったっけ。
Eドライブにもファイルできてるかもな
0416nobodyさん2008/11/12(水) 13:23:26ID:???
ヒント:NTFS ストリーム名
0417nobodyさん2008/11/12(水) 14:31:59ID:???
ああ、確かに副次ストリームなら見えてるファイルの容量は変わらんわw
0418nobodyさん2008/11/12(水) 14:51:00ID:???
そういうことかw
0419Pentium2008/11/12(水) 21:28:24ID:???
386 です。

ストリームって初めて知りました。
lfnutils というのを使って調べてみたら、確かにストリームにデータが記録されていました。
バイナリデータのため、文字化けしている部分がありますが >>408 と同様のデータでした。
http://www.monyo.com/technical/products/lfnutils/

すっごく、スッキリしました。
みなさん、ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています