Perlコーディング初心者質問スレ Part 57
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/25(月) 19:25:51ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >2 以降
前スレ http://pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0475nobodyさん
2008/05/12(月) 16:03:50ID:???クリップボードにあるテキストに処理を加えて
クリップボードに戻すプログラムを作ろうとしています。
Win32::Clipboardを使用しているのですが、Unicodeだと化けてしまいます。
Unicodeでも化けないで処理できる方法はあるでしょうか?
0476nobodyさん
2008/05/12(月) 16:08:19ID:CYOIx0A2思い出した!
print qq{ ${ \(1+1)} };
でしたね。
なるほどなるほど。${}これでデリファレンスができるというわけだ。
0477nobodyさん
2008/05/12(月) 17:20:30ID:???Encode でShift_JIS にして渡してみたらどうりますか?
0478nobodyさん
2008/05/12(月) 18:00:21ID:???回答ありがとうございます。
Shift_JISにない文字も処理したかったので
Win32::Clipboardでは無理と言うことですね。
Win32::Clipboard以外でクリップボードを利用できるものはありますか?
0479nobodyさん
2008/05/12(月) 20:22:51ID:???use LWP::Simple;
my $page = get('http://hogehogehoge.jp/');
getprint('http://hogehogehoge.jp/');
print $page
0481nobodyさん
2008/05/13(火) 01:04:45ID:???0482479
2008/05/13(火) 03:44:42ID:???何も変わんないですよ
0483nobodyさん
2008/05/13(火) 06:45:22ID:???「ソースファイル」ってのが上の us-ascii で足りそうなコードのことだったら
SJIS → EUC しても何も変わんないですよ。
環境その他も書かれてないし、変換に興味なさそうなので
perl hoge.pl > test.html
して「まともなエディタで見れば文字化けしない」でいいのかも。
0485nobodyさん
2008/05/17(土) 19:31:00ID:???$obj = Class->new();
この二つの違いは何ですか?
0486nobodyさん
2008/05/17(土) 20:03:56ID:???Classってサブルーチンが定義されてるときに問題がおきることがあるので、
$obj = Class->new;
の形式のほうが推奨されるけど。
0487nobodyさん
2008/05/17(土) 23:09:13ID:???ありがとんです
0488nobodyさん
2008/05/18(日) 11:25:25ID:???0489nobodyさん
2008/05/19(月) 06:36:14ID:???ERRNO.pmが、MSWin32-x86-multi-thread-5.00(Windows Updateでいつの間にか変わってた)を弾いてた。
とりあえず、ERRNO.pmを書き換える(!)ことで対処したんだけど、
他に同じトラブルあってる人いません?
0490がんちゃん
2008/05/19(月) 10:02:27ID:???出来上がった画像を右クリックして保存しましたが
そのファイルが開けません。
何が原因でしょうか。宜しくお願いします。
0491nobodyさん
2008/05/19(月) 11:27:27ID:???開けないとは具体的にどういうこと?
単に、変なファイル名(拡張子)で保存してしまって、ダブルクリックしても関連づけの問題で開けないってことではなくて?
0492がんちゃん
2008/05/19(月) 12:15:34ID:???0493がんちゃん
2008/05/19(月) 12:29:05ID:???* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0494がんちゃん
2008/05/19(月) 12:32:08ID:???回答者が初心者のスレだったのか・・・
0495がんちゃん
2008/05/19(月) 12:35:01ID:???* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0496nobodyさん
2008/05/19(月) 14:06:12ID:???binmode STDOUT;
$image->Write('jpeg:-');
ソース晒せや。
0497nobodyさん
2008/05/19(月) 14:11:40ID:???0498nobodyさん
2008/05/19(月) 15:48:41ID:???Perl云々の前に日本語学校行け
0499nobodyさん
2008/05/19(月) 15:59:52ID:???0500nobodyさん
2008/05/19(月) 16:39:50ID:???0502nobodyさん
2008/05/19(月) 18:36:38ID:82E4EJS9質問です。
Can't locate GD/Image.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .)
というソフトウェアエラーが出て、CGIを実行できません。
どうかどうか、教えてください。
0503nobodyさん
2008/05/19(月) 18:38:59ID:???はい次
0504nobodyさん
2008/05/19(月) 18:39:34ID:82E4EJS90505nobodyさん
2008/05/19(月) 18:44:49ID:???0506nobodyさん
2008/05/19(月) 18:45:58ID:82E4EJS90507nobodyさん
2008/05/19(月) 18:47:44ID:???0508nobodyさん
2008/05/19(月) 18:54:23ID:82E4EJS9けど、このページの、なにをどうすればいいのか。
わかりません
どうしようもない素人なので。。
0509nobodyさん
2008/05/19(月) 19:12:16ID:???エラーの内容は「このモジュールがみつからないよパパ」
→インスコor場所確認
とりあえずモジュールが入ってるか確認する
→ぐぐる
入っていない場合、モジュールをインスコする
→ぐぐる
入っている場合、パスを確認する
→ぐぐる
0510nobodyさん
2008/05/19(月) 19:26:15ID:???0511nobodyさん
2008/05/19(月) 19:58:48ID:???0512nobodyさん
2008/05/19(月) 20:03:39ID:82E4EJS9これは、どこかのサイトに書いてあったので。しました。
そしたら、エラーがでて。GD/Image.pmがどうのこうのとなってまして。
505さん507さん509さん510さんの言葉も、正直、理解しきれてない状況です。
まず、インスコというのが、コマンドプロンプトでするらしいとどこかに書いてて、
してみたんですけど。まず、「ppm」とすると、perlpackagemanagerが起動して、
その中に、GDがなくて。どやってインストールしていいのかも、わかんない感じです。
すみません長々と。どうかお助け願います。。
0513nobodyさん
2008/05/19(月) 20:03:43ID:???どうしようもない素人を名乗るなよ。
向上心ねぇのか
0514nobodyさん
2008/05/19(月) 20:16:06ID:???http://www.bribes.org/perl/ppmdir.html
ここへいってら。
それができたら、こっちも回っておくように。
http://theoryx5.uwinnipeg.ca/ppms/
0515nobodyさん
2008/05/19(月) 20:18:47ID:82E4EJS9読んでます。
0516nobodyさん
2008/05/19(月) 21:08:55ID:82E4EJS90517nobodyさん
2008/05/19(月) 21:35:03ID:???掲示板なんだから、レスに主語と述語をはっきり書いてくれ。
とりあえず、頭にエラーが出たのか?
0518nobodyさん
2008/05/19(月) 22:17:16ID:???スタート→すべてのプログラム→ActivePerl→Perl Package Managerで
必要なものをクリック、クリック!した方が楽で簡単だよ。
0519nobodyさん
2008/05/19(月) 23:01:51ID:82E4EJS9コマンドプロンプトで CPANから install GDってしても
できないんです。
GD/image.pmが@INCに無いっていうエラーが出るんです。517さん。
0520nobodyさん
2008/05/19(月) 23:13:22ID:???>>514サイトをよく読んでppmにリポジトリを追加すると、GD 2.39がインストールできるようになる。
ちゃんとリポジトリを追加したか?
それでも出ないというのなら、ppmに問題があることになる。
0521nobodyさん
2008/05/19(月) 23:23:58ID:???serach のとろを
s GD
としてくださいな
これでも出来なければ諦めてください
サポートしきれないです
0522nobodyさん
2008/05/20(火) 01:25:53ID:???Perl 5.8ならなんか面倒そうなんだけどこれかな?
0523nobodyさん
2008/05/20(火) 03:52:12ID:U/T3y6kmふと、PPM-Repositoriesを0.14に上げて見るとbribesなるレポがあるので、これを見に行くと、
おおー、結構新しいの来てるじゃないか〜と、調子にのってperl areaのmoduleもUpしまくる。
しかし、Compress-ZlibをUpすると、Bandleされてたversionを上書きしてしまい、
それ以降ppmがtar.gzファイルを展開できなくなってしまった。(今まで見たことないエラーでPPMが落ちる)
とゆうことで、今やっと再インストールと、(自分のよく使う)各種モジュールのインストール、最新版へのUpデートが終わった。
なんとか、Compress-Zlibも2.010に上げる事ができた。
ふう、疲れたぜ・・・・。
0524nobodyさん
2008/05/20(火) 04:15:25ID:???0525nobodyさん
2008/05/20(火) 14:16:09ID:XrCi5l42いろいろサポートいただいて、できました。
ほんとに感謝してます。ありがとうです。
0526nobodyさん
2008/05/21(水) 00:33:37ID:???正規表現を使わずに高速に動作するsplitの代わりはないでしょうか?
0527nobodyさん
2008/05/21(水) 01:39:24ID:???0528nobodyさん
2008/05/21(水) 01:41:57ID:???indexとsubstrを併用してちょっと試してみるか。
0529nobodyさん
2008/05/21(水) 11:18:20ID:crauFAgnググってみると、どこもXMLとLWPというモジュールを読み込む事が前提になっているようなのですが、
何も無い状態でXML
0530529
2008/05/21(水) 11:19:42ID:???モジュールが何も無い状態でXMLを読み込むために
参考になるようなサイトがありましたら、ご教示下さい。
宜しくお願いします。
0531nobodyさん
2008/05/21(水) 12:00:10ID:???0532nobodyさん
2008/05/21(水) 12:06:34ID:???とはとても思えないが・・
0533nobodyさん
2008/05/21(水) 12:14:45ID:???どうも事実上無理っぽいということですかね…orz
お騒がせしました、ありがとうございました。
0534nobodyさん
2008/05/21(水) 13:46:16ID:???0535nobodyさん
2008/05/21(水) 23:33:50ID:???XMLを読み込むだけなら、XML::TreePPでXMLが読める。
別サイト上にあるXMLを読むならLWP等が必要。
0536nobodyさん
2008/05/22(木) 08:42:14ID:???ファイル個別HTMLを作成する部分で
$buff = "<html><head><title>$filename</title></head><body>";
$buff .= qq|Download <a href="./$filename">$filename</a>|;
$buff .= '</body></html>';
(ソースの760行目付近です)
特定の拡張子のみ別のHTMLコードを書き出したいのですが
if文で$filename等試してみましたが上手く行きませんでした
どなたか分かる方宜しくお願いします
0537nobodyさん
2008/05/22(木) 10:13:46ID:???0538nobodyさん
2008/05/22(木) 12:40:41ID:???こういう書き方もあるんだ。勉強になったw
0539nobodyさん
2008/05/22(木) 13:18:50ID:???0540nobodyさん
2008/05/22(木) 13:25:55ID:???がなかなか見つからない。
0541nobodyさん
2008/05/22(木) 13:40:38ID:???どう試して、どういう結果になったのか書かないと。
基本だと思うが。
0542nobodyさん
2008/05/22(木) 17:17:18ID:???普通に cookbook にある解ではダメなのか?
ttp://www.unix.com.ua/orelly/perl/cookbook/ch01_12.htm
0543nobodyさん
2008/05/24(土) 13:22:00ID:CztaXqINprint <<EOT
<form action="http://localhost/cgi-bin/session.cgi" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;
これらのフォームデータをセッション変数としてsession.cgiに受け渡したい
のですが、どのようにすればよいでしょうか?
CGI::sessionモジュールを利用して、session.cgi側で
$hoge=$cgi->$session->param('namae');
などとすればセッション変数として受け取れる事は分かったのですが、
フォームからの受け渡し方が分かりません…。
よろしくお願いします。
0544nobodyさん
2008/05/24(土) 13:38:27ID:???0546543
2008/05/24(土) 13:47:45ID:CztaXqINhiddenフィールドを利用すればセッション変数として受け渡されるのでしょうか?
>>545
「お名前」や「メール」フォームに入力された文字列をセッション変数として
session.cgiで受け取りたいと考えています。
0547nobodyさん
2008/05/24(土) 13:47:48ID:???セッションはその後。
0548nobodyさん
2008/05/24(土) 13:49:52ID:???・GET
・cookie
わざわざCGI::session使うくらいなんだから、普通はcookie使うんじゃね?
0549543
2008/05/24(土) 13:53:40ID:CztaXqINすいません。>>543の書き込み微妙に間違っています。
$hoge=$cgi->$session->param('namae'); のところ
通常データの受け取りは
$hoge=$cgi->param('namae');
セッションでの受け取りは
$hoge=$session->param('namae');
の間違いです。
0550nobodyさん
2008/05/24(土) 14:04:47ID:???受け渡しの情報が知りたいって言ってるのに、
受け取りのソース書いてるから、それを指摘されてるんだよ。
>基本的にはセッション系モジュールの役割は、特定のキー=セッションIDに紐付けて、
>データを保存したり、読み込んだりといったことです。
>セッションIDの受渡しはCGI側でする必要があります。
ヒント:http://digit.que.ne.jp/work/wiki.cgi?Perl%e3%83%a1%e3%83%a2%2fCGI%3a%3aApplication%3a%3aPlugin%3a%3aSession%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab
0551543
2008/05/24(土) 14:05:03ID:CztaXqINサーバ側から要求があった時点でクライアントはそのcookieのデータを受け渡す
といったイメージで良いのでしょうか。
うぅ、難しい。。。
0552543
2008/05/24(土) 14:13:48ID:CztaXqIN>受け渡しの情報が知りたいって言ってるのに、
>受け取りのソース書いてるから、それを指摘されてるんだよ。
データを受け渡す側のソースが>>543で、受け取るソースがsession.cgiだと
認識してるのですが…。間違っているでしょうか。
もしかしたら私が勘違い?をしているのかも?
0553nobodyさん
2008/05/24(土) 14:14:00ID:???正直、目的に対して技術が足りなすぎる。イヤミじゃなくてね。
トラブル起こす前に、オライリーのCGIプログラミング読破オススメ。
0554nobodyさん
2008/05/24(土) 14:18:21ID:???>受け取るソースがsession.cgiだと認識してるのですが…。
少なくてもこのソース中でセッションIDはどこにも発行してないでしょ?
後は調べなさい。
0555554
2008/05/24(土) 14:19:15ID:???× >受け取るソースがsession.cgiだと認識してるのですが…
○ >データを受け渡す側のソースが>>543で
0556543
2008/05/24(土) 14:19:38ID:CztaXqINみなさん、有難うございましたー・・・
0557543
2008/05/24(土) 14:23:19ID:CztaXqINあ、ソースの一部分しか乗せてなかったためです!
use CGI::Session qw/-ip_match/;
my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
$session->expire('+1m'); #有効期限は1分間
$session->param('name','john'); #セッション経由で引き渡す項目と値
my $cgi=CGI->new;
print $cgi->header(-charset=>'UTF-8',
-cookie=>$cgi->cookie(-name=>'CGISESSID',
-value=>$session->id,
-expires => '+3M')),
#cookieにセッションidを保管
$cgi->start_html(-lang=>'ja',
-encoding=>'UTF-8',
-title=>'CGI.pm使用/cookie'),
$cgi->p('session id: '.$session->id.'<br/>',
'name: '.$session->param('name').'<br/>',
0558543
2008/05/24(土) 14:24:17ID:CztaXqINprint <<EOT
<form action="http://localhost/cgi-bin/session.cgi" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;
$cgi->end_html;
#end
すいません…!
0559nobodyさん
2008/05/24(土) 14:27:18ID:???追記 use CGI;
追記 my $cgi = new CGI;
× my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
○ my $session=CGI::Session->new(undef, $cgi, {Directory=>'./session'});
0560nobodyさん
2008/05/25(日) 02:16:54ID:???htmlのフォームデータをpost→受け取ったデータをセッション変数を格納するCGI
→それらのセッション変数にアクセス(利用する)CGI
の流れがいるのでは?
自信ないけど
0561nobodyさん
2008/05/25(日) 19:58:56ID:sAYmYKjSもちろん細かく制御するには向いてるんだが始めとっつきにくいかもなー
0562nobodyさん
2008/05/26(月) 13:29:09ID:???>>543の質問を分かりやすくPHPで説明すると、
$_REQUESTの内容を$_SESSIONで受け取るにはどうしたらいいんですか?
ということ。
0563nobodyさん
2008/05/26(月) 19:00:45ID:BXwqNwjPGlobal symbol "%in" requires explicit package name at C:/ApacheGroup/〜〜.cgi line 375, <DATA> line 855.
というソフトウェアエラーが出続けてるんですが。
どうすればいいでしょう。
どなたか教えてください〜。
0564nobodyさん
2008/05/26(月) 19:09:34ID:fmVA2Qe8open(OUT,"+< log.txt");
eval{flock(OUT, 2);};
eval{truncate(OUT, 0);};
seek(OUT, 0, 0);
print OUT @log;
eval{flock(OUT, 8);};
close(OUT);
今はこのように通常のテキストでログの上書き保存をしているのですが、
私はgzipで圧縮して上書き保存をしたいのです!
しかしどれだけGoogle先生に訊いてもgzipでの保存方法を教えてもらえません! あの先生はケチです!
もう先生方だけが頼りなんです! 一体どうすればgzipでの保存が可能になるんでしょうか!
0565nobodyさん
2008/05/26(月) 19:18:18ID:???http://xn--lckja1b6r.jp/%47%6C%6F%62%61%6C%20%73%79%6D%62%6F%6C%20%20%72%65%71%75%69%72%65%73%20%65%78%70%6C%69%63%69%74%20%70%61%63%6B%61%67%65%20%6E%61%6D%65
>>564
http://xn--lckja1b6r.jp/%70%65%72%6C%20%67%7A%69%70
0566nobodyさん
2008/05/26(月) 19:32:47ID:???0568nobodyさん
2008/05/27(火) 11:06:43ID:???0569nobodyさん
2008/05/27(火) 19:27:42ID:???$global_foo = $foo;
$global_bar = $bar;
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo if $foo eq undef;
$bar = $global_bar if $bar eq undef;
}
をコンパクトにまとめたいが、バグが混入しそうでいやん。
0570nobodyさん
2008/05/27(火) 19:44:24ID:???my $global_foo = $foo;
my $global_bar = $bar;
$foo = shift || $global_foo;
$bar = shift || $global_bar;
}
0571nobodyさん
2008/05/27(火) 19:55:45ID:???$foo eq undef もたいがいだが
shift || $global_foo だと $_[0] が '0' の時に挙動変わるな。
0572nobodyさん
2008/05/27(火) 20:06:24ID:???my $global_foo = $foo;
my $global_bar = $bar;
$foo = defined( $_[0] ) ? $_[0] : $global_foo;
$bar = defined( $_[1] ) ? $_[1] : $global_bar;
}
こうか?
0573nobodyさん
2008/05/27(火) 20:06:58ID:???0574nobodyさん
2008/05/27(火) 20:33:00ID:???$foo = $global_foo if $foo eq undef;
$bar = $global_foo if $bar eq undef;
ではなく
$foo = $global_foo unless defined $foo;
$bar = $global_foo unless defined $bar;
でお願いします。あと>>570-573サンクス、参考になります。
■ このスレッドは過去ログ倉庫に格納されています