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


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

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



1 名前:nobodyさん mailto:sage [2008/02/25(月) 19:25:51 ID:???]
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

前スレ pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/


480 名前:nobodyさん mailto:sage [2008/05/12(月) 21:36:53 ID:???]
>>479
ヒント:Jcode

481 名前:nobodyさん mailto:sage [2008/05/13(火) 01:04:45 ID:???]
perl 文字化け でググれカス

482 名前:479 mailto:sage [2008/05/13(火) 03:44:42 ID:???]
エスジス保存しておいたソースファイルをEUCに変更保存してみたけど
何も変わんないですよ

483 名前:nobodyさん mailto:sage [2008/05/13(火) 06:45:22 ID:???]
>>482
「ソースファイル」ってのが上の us-ascii で足りそうなコードのことだったら
SJIS → EUC しても何も変わんないですよ。

環境その他も書かれてないし、変換に興味なさそうなので
perl hoge.pl > test.html
して「まともなエディタで見れば文字化けしない」でいいのかも。

484 名前:nobodyさん mailto:sage [2008/05/13(火) 13:57:38 ID:???]
>>464
Location:を表示する前にwaitをいれればおk

485 名前:nobodyさん mailto:sage [2008/05/17(土) 19:31:00 ID:???]
$obj = new Class;
$obj = Class->new();

この二つの違いは何ですか?

486 名前:nobodyさん mailto:sage [2008/05/17(土) 20:03:56 ID:???]
おんなじ。どっちのClassクラスのコンストラクタを呼んでるだけ。
Classってサブルーチンが定義されてるときに問題がおきることがあるので、
$obj = Class->new;
の形式のほうが推奨されるけど。

487 名前:nobodyさん mailto:sage [2008/05/17(土) 23:09:13 ID:???]
>486
ありがとんです

488 名前:nobodyさん mailto:sage [2008/05/18(日) 11:25:25 ID:???]
俺はコンストラクタを呼び出すときだけはnew Classってしてあとはぜんぶ$obj->sub()ってするかな。



489 名前:nobodyさん mailto:sage [2008/05/19(月) 06:36:14 ID:???]
なんだか、急にCPANでエラーで全く動かなくなったので、いろいろ調べてみたら、
ERRNO.pmが、MSWin32-x86-multi-thread-5.00(Windows Updateでいつの間にか変わってた)を弾いてた。

とりあえず、ERRNO.pmを書き換える(!)ことで対処したんだけど、
他に同じトラブルあってる人いません?

490 名前:がんちゃん mailto:sage [2008/05/19(月) 10:02:27 ID:???]
perlでImage::MagickのAnnotateを使って画像と文字を合成できたのですが
出来上がった画像を右クリックして保存しましたが
そのファイルが開けません。
何が原因でしょうか。宜しくお願いします。

491 名前:nobodyさん mailto:sage [2008/05/19(月) 11:27:27 ID:???]
>>490
開けないとは具体的にどういうこと?
単に、変なファイル名(拡張子)で保存してしまって、ダブルクリックしても関連づけの問題で開けないってことではなくて?


492 名前:がんちゃん mailto:sage [2008/05/19(月) 12:15:34 ID:???]
うっせーよ!それぐらい分かるっての!腐った回答してんじゃねぇよwww

493 名前:がんちゃん mailto:sage [2008/05/19(月) 12:29:05 ID:???]
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

494 名前:がんちゃん mailto:sage [2008/05/19(月) 12:32:08 ID:???]
なんだここの人たちはこれぐらいの質問も答えられないの?
回答者が初心者のスレだったのか・・・

495 名前:がんちゃん mailto:sage [2008/05/19(月) 12:35:01 ID:???]
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

496 名前:nobodyさん mailto:sage [2008/05/19(月) 14:06:12 ID:???]
print "Content-type: image/jpeg\n\n";
binmode STDOUT;
$image->Write('jpeg:-');

ソース晒せや。

497 名前:nobodyさん mailto:sage [2008/05/19(月) 14:11:40 ID:???]
なにこの流れ・・・

498 名前:nobodyさん mailto:sage [2008/05/19(月) 15:48:41 ID:???]
質問の仕方も知らないというか、質問の文章すら正しく書けない馬鹿が多すぎ
Perl云々の前に日本語学校行け



499 名前:nobodyさん mailto:sage [2008/05/19(月) 15:59:52 ID:???]
\E

500 名前:nobodyさん mailto:sage [2008/05/19(月) 16:39:50 ID:???]
はい、次

501 名前:nobodyさん mailto:sage [2008/05/19(月) 16:41:56 ID:???]
>>498
お前の文章が一番変だわ

502 名前:nobodyさん [2008/05/19(月) 18:36:38 ID:82E4EJS9]
すみません。ド素人です。
質問です。
Can't locate GD/Image.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .)
というソフトウェアエラーが出て、CGIを実行できません。
どうかどうか、教えてください。

503 名前:nobodyさん mailto:sage [2008/05/19(月) 18:38:59 ID:???]
GD を入れてください

はい次

504 名前:nobodyさん [2008/05/19(月) 18:39:34 ID:82E4EJS9]
GDは入れてるんですけど、image.pmってのがなにか、わかんないんです。。。

505 名前:nobodyさん mailto:sage [2008/05/19(月) 18:44:49 ID:???]
GD-Image-Thumbnail でも居れておきゃえぇんとちゃうのん?

506 名前:nobodyさん [2008/05/19(月) 18:45:58 ID:82E4EJS9]
505さん ありがとうございますぅやってみます。

507 名前:nobodyさん mailto:sage [2008/05/19(月) 18:47:44 ID:???]
search.cpan.org/~lds/GD-2.39/GD/Image.pm.PLS

508 名前:nobodyさん [2008/05/19(月) 18:54:23 ID:82E4EJS9]
507さん。。ありがとうです。
けど、このページの、なにをどうすればいいのか。
わかりません
どうしようもない素人なので。。



509 名前:nobodyさん mailto:sage [2008/05/19(月) 19:12:16 ID:???]
*.pmってのはPerlモジュール
エラーの内容は「このモジュールがみつからないよパパ」
→インスコor場所確認
とりあえずモジュールが入ってるか確認する
→ぐぐる
入っていない場合、モジュールをインスコする
→ぐぐる
入っている場合、パスを確認する
→ぐぐる

510 名前:nobodyさん mailto:sage [2008/05/19(月) 19:26:15 ID:???]
GDのバージョンを2.39に上げれば解決。

511 名前:nobodyさん mailto:sage [2008/05/19(月) 19:58:48 ID:???]
「初心者」「素人」は分からないからフルサポートしてもらえる理由になりません。

512 名前:nobodyさん [2008/05/19(月) 20:03:39 ID:82E4EJS9]
GD2.39の中のGD.pmとGDフォルダを /perl/libの中にドラック&ドロップしてるんです。
これは、どこかのサイトに書いてあったので。しました。
そしたら、エラーがでて。GD/Image.pmがどうのこうのとなってまして。
505さん507さん509さん510さんの言葉も、正直、理解しきれてない状況です。
まず、インスコというのが、コマンドプロンプトでするらしいとどこかに書いてて、
してみたんですけど。まず、「ppm」とすると、perlpackagemanagerが起動して、
その中に、GDがなくて。どやってインストールしていいのかも、わかんない感じです。
すみません長々と。どうかお助け願います。。

513 名前:nobodyさん mailto:sage [2008/05/19(月) 20:03:43 ID:???]
ローカルで試そうとしてるやつが、
どうしようもない素人を名乗るなよ。
向上心ねぇのか

514 名前:nobodyさん mailto:sage [2008/05/19(月) 20:16:06 ID:???]
>>512
www.bribes.org/perl/ppmdir.html
ここへいってら。

それができたら、こっちも回っておくように。
theoryx5.uwinnipeg.ca/ppms/


515 名前:nobodyさん [2008/05/19(月) 20:18:47 ID:82E4EJS9]
514さんありがとうございます。
読んでます。

516 名前:nobodyさん [2008/05/19(月) 21:08:55 ID:82E4EJS9]
やっぱりエラーになります(涙

517 名前:nobodyさん mailto:sage [2008/05/19(月) 21:35:03 ID:???]
リポジトリを増やしたのだからインストールできるはずだが。

掲示板なんだから、レスに主語と述語をはっきり書いてくれ。
とりあえず、頭にエラーが出たのか?

518 名前:nobodyさん mailto:sage [2008/05/19(月) 22:17:16 ID:???]
良く読んでないけど、
スタート→すべてのプログラム→ActivePerl→Perl Package Managerで
必要なものをクリック、クリック!した方が楽で簡単だよ。



519 名前:nobodyさん [2008/05/19(月) 23:01:51 ID:82E4EJS9]
perl package managerの中に GDが見当たらないんです。
コマンドプロンプトで CPANから install GDってしても
できないんです。
GD/image.pmが@INCに無いっていうエラーが出るんです。517さん。

520 名前:nobodyさん mailto:sage [2008/05/19(月) 23:13:22 ID:???]
>>519
>>514サイトをよく読んでppmにリポジトリを追加すると、GD 2.39がインストールできるようになる。
ちゃんとリポジトリを追加したか?
それでも出ないというのなら、ppmに問題があることになる。

521 名前:nobodyさん mailto:sage [2008/05/19(月) 23:23:58 ID:???]
ttp://mikiho.jp/memo/?log=20070111_141552

serach のとろを

s GD

としてくださいな

これでも出来なければ諦めてください
サポートしきれないです

522 名前:nobodyさん mailto:sage [2008/05/20(火) 01:25:53 ID:???]
pub.ne.jp/wakapon/?entry_id=82091
Perl 5.8ならなんか面倒そうなんだけどこれかな?

523 名前:nobodyさん [2008/05/20(火) 03:52:12 ID:U/T3y6km]
ここ見て、Win用のGD-2.39来てるのかと思い、threory58に行くも2.35しかないじゃないか!?ぷんぷん。
ふと、PPM-Repositoriesを0.14に上げて見るとbribesなるレポがあるので、これを見に行くと、
おおー、結構新しいの来てるじゃないか〜と、調子にのってperl areaのmoduleもUpしまくる。
しかし、Compress-ZlibをUpすると、Bandleされてたversionを上書きしてしまい、
それ以降ppmがtar.gzファイルを展開できなくなってしまった。(今まで見たことないエラーでPPMが落ちる)

とゆうことで、今やっと再インストールと、(自分のよく使う)各種モジュールのインストール、最新版へのUpデートが終わった。
なんとか、Compress-Zlibも2.010に上げる事ができた。
ふう、疲れたぜ・・・・。

524 名前:nobodyさん mailto:sage [2008/05/20(火) 04:15:25 ID:???]
そうなんだお疲れちゃん

525 名前:nobodyさん [2008/05/20(火) 14:16:09 ID:XrCi5l42]
519です。
いろいろサポートいただいて、できました。
ほんとに感謝してます。ありがとうです。

526 名前:nobodyさん mailto:sage [2008/05/21(水) 00:33:37 ID:???]
phpのexplodeみたいに、
正規表現を使わずに高速に動作するsplitの代わりはないでしょうか?

527 名前:nobodyさん mailto:sage [2008/05/21(水) 01:39:24 ID:???]
substrでループさせる自前の関数でも作れば?

528 名前:nobodyさん mailto:sage [2008/05/21(水) 01:41:57 ID:???]
それって速いのかな。。
indexとsubstrを併用してちょっと試してみるか。



529 名前:nobodyさん [2008/05/21(水) 11:18:20 ID:crauFAgn]
モジュールが一切入っていないレンタルサーバで、xmlを読み込もうとしています。
ググってみると、どこもXMLとLWPというモジュールを読み込む事が前提になっているようなのですが、
何も無い状態でXML

530 名前:529 mailto:sage [2008/05/21(水) 11:19:42 ID:???]
すみません途中で送信してしまいました…orz

モジュールが何も無い状態でXMLを読み込むために
参考になるようなサイトがありましたら、ご教示下さい。

宜しくお願いします。

531 名前:nobodyさん mailto:sage [2008/05/21(水) 12:00:10 ID:???]
ソケット使ってゴリゴリ書くしか無いんじゃないかな

532 名前:nobodyさん mailto:sage [2008/05/21(水) 12:06:34 ID:???]
モジュールが一切入っていないレンタルサーバでソケットが使えるようにインストールされてる
とはとても思えないが・・

533 名前:nobodyさん mailto:sage [2008/05/21(水) 12:14:45 ID:???]
xmlそのものについても調べてる状態なんですが、
どうも事実上無理っぽいということですかね…orz
お騒がせしました、ありがとうございました。

534 名前:nobodyさん mailto:sage [2008/05/21(水) 13:46:16 ID:???]
php が動くなら php 普通にネットワーク経由でファイル開けるので php も考慮してみれば?

535 名前:nobodyさん mailto:sage [2008/05/21(水) 23:33:50 ID:???]
>>529,530
XMLを読み込むだけなら、XML::TreePPでXMLが読める。
別サイト上にあるXMLを読むならLWP等が必要。


536 名前:nobodyさん mailto:sage [2008/05/22(木) 08:42:14 ID:???]
質問です。Snアップローダー(sugachan.dip.jp/obsolete/snup/)の
ファイル個別HTMLを作成する部分で

$buff = "<html><head><title>$filename</title></head><body>";
$buff .= qq|Download <a href="./$filename">$filename</a>|;
$buff .= '</body></html>';
(ソースの760行目付近です)

特定の拡張子のみ別のHTMLコードを書き出したいのですが
if文で$filename等試してみましたが上手く行きませんでした

どなたか分かる方宜しくお願いします

537 名前:nobodyさん mailto:sage [2008/05/22(木) 10:13:46 ID:???]
改造スレいけ

538 名前:nobodyさん mailto:sage [2008/05/22(木) 12:40:41 ID:???]
$buff .= qq|Download <a href="./$filename">$filename</a>|;

こういう書き方もあるんだ。勉強になったw



539 名前:nobodyさん mailto:sage [2008/05/22(木) 13:18:50 ID:???]
毎行クォート変えるくらいならヒアドキュメント使えよ

540 名前:nobodyさん mailto:sage [2008/05/22(木) 13:25:55 ID:???]
ヒアドキュメントもコーディングの桁揃えと、HTMLの桁揃えでタブを使うと、すっきりする方法
がなかなか見つからない。

541 名前:nobodyさん mailto:sage [2008/05/22(木) 13:40:38 ID:???]
>if文で$filename等試してみましたが上手く行きませんでした
どう試して、どういう結果になったのか書かないと。
基本だと思うが。

542 名前:nobodyさん mailto:sage [2008/05/22(木) 17:17:18 ID:???]
>>540
普通に cookbook にある解ではダメなのか?
ttp://www.unix.com.ua/orelly/perl/cookbook/ch01_12.htm


543 名前:nobodyさん [2008/05/24(土) 13:22:00 ID:CztaXqIN]
セッション変数の受け渡しについての質問です。

print <<EOT
<form action="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');
などとすればセッション変数として受け取れる事は分かったのですが、
フォームからの受け渡し方が分かりません…。

よろしくお願いします。

544 名前:nobodyさん mailto:sage [2008/05/24(土) 13:38:27 ID:???]
hiddenで投げれ

545 名前:nobodyさん mailto:sage [2008/05/24(土) 13:41:36 ID:???]
>>543
どれがセッション変数なの?

546 名前:543 [2008/05/24(土) 13:47:45 ID:CztaXqIN]
>>544
hiddenフィールドを利用すればセッション変数として受け渡されるのでしょうか?

>>545
「お名前」や「メール」フォームに入力された文字列をセッション変数として
session.cgiで受け取りたいと考えています。

547 名前:nobodyさん mailto:sage [2008/05/24(土) 13:47:48 ID:???]
CGI.pmでデータを受け取るところから勉強を始めるべき。
セッションはその後。

548 名前:nobodyさん mailto:sage [2008/05/24(土) 13:49:52 ID:???]
・hidden
・GET
・cookie

わざわざCGI::session使うくらいなんだから、普通はcookie使うんじゃね?



549 名前:543 [2008/05/24(土) 13:53:40 ID:CztaXqIN]
>>547
すいません。>>543の書き込み微妙に間違っています。
$hoge=$cgi->$session->param('namae'); のところ

通常データの受け取りは
$hoge=$cgi->param('namae');
セッションでの受け取りは
$hoge=$session->param('namae');
の間違いです。


550 名前:nobodyさん mailto:sage [2008/05/24(土) 14:04:47 ID:???]
>>549
受け渡しの情報が知りたいって言ってるのに、
受け取りのソース書いてるから、それを指摘されてるんだよ。

>基本的にはセッション系モジュールの役割は、特定のキー=セッションIDに紐付けて、
>データを保存したり、読み込んだりといったことです。
>セッションIDの受渡しはCGI側でする必要があります。

ヒント: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

551 名前:543 [2008/05/24(土) 14:05:03 ID:CztaXqIN]
cookieにセッションIDやもっておきたいデータ(今回の場合、お名前やメール)を記述しておき、
サーバ側から要求があった時点でクライアントはそのcookieのデータを受け渡す

といったイメージで良いのでしょうか。

うぅ、難しい。。。

552 名前:543 [2008/05/24(土) 14:13:48 ID:CztaXqIN]
>>550
>受け渡しの情報が知りたいって言ってるのに、
>受け取りのソース書いてるから、それを指摘されてるんだよ。

データを受け渡す側のソースが>>543で、受け取るソースがsession.cgiだと
認識してるのですが…。間違っているでしょうか。

もしかしたら私が勘違い?をしているのかも?



553 名前:nobodyさん mailto:sage [2008/05/24(土) 14:14:00 ID:???]
>>551
正直、目的に対して技術が足りなすぎる。イヤミじゃなくてね。
トラブル起こす前に、オライリーのCGIプログラミング読破オススメ。

554 名前:nobodyさん mailto:sage [2008/05/24(土) 14:18:21 ID:???]
>>552
>受け取るソースがsession.cgiだと認識してるのですが…。
少なくてもこのソース中でセッションIDはどこにも発行してないでしょ?
後は調べなさい。

555 名前:554 mailto:sage [2008/05/24(土) 14:19:15 ID:???]
ごめんミスった。

 × >受け取るソースがsession.cgiだと認識してるのですが…
 ○ >データを受け渡す側のソースが>>543

556 名前:543 [2008/05/24(土) 14:19:38 ID:CztaXqIN]
すいません。もう少し勉強しなおしてきます。
みなさん、有難うございましたー・・・

557 名前:543 [2008/05/24(土) 14:23:19 ID:CztaXqIN]
>>554
あ、ソースの一部分しか乗せてなかったためです!

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/>',




558 名前:543 [2008/05/24(土) 14:24:17 ID:CztaXqIN]
続き

print <<EOT
<form action="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

すいません…!



559 名前:nobodyさん mailto:sage [2008/05/24(土) 14:27:18 ID:???]
めんどくさいし、合ってる保証ないけど、適当にフォローしてみる

追記 use CGI;
追記 my $cgi = new CGI;

× my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
○ my $session=CGI::Session->new(undef, $cgi, {Directory=>'./session'});

560 名前:nobodyさん mailto:sage [2008/05/25(日) 02:16:54 ID:???]
htmlのフォームデータをセッション変数に格納して利用するには

htmlのフォームデータをpost→受け取ったデータをセッション変数を格納するCGI
→それらのセッション変数にアクセス(利用する)CGI

の流れがいるのでは?




自信ないけど

561 名前:nobodyさん [2008/05/25(日) 19:58:56 ID:sAYmYKjS]
perlのセッション管理はphpに比べるとかなりめんどい
もちろん細かく制御するには向いてるんだが始めとっつきにくいかもなー

562 名前:nobodyさん mailto:sage [2008/05/26(月) 13:29:09 ID:???]
>>561
>>543の質問を分かりやすくPHPで説明すると、
$_REQUESTの内容を$_SESSIONで受け取るにはどうしたらいいんですか?
ということ。

563 名前:nobodyさん [2008/05/26(月) 19:00:45 ID:BXwqNwjP]
すみません。質問です。
Global symbol "%in" requires explicit package name at C:/ApacheGroup/〜〜.cgi line 375, <DATA> line 855.
というソフトウェアエラーが出続けてるんですが。
どうすればいいでしょう。
どなたか教えてください〜。

564 名前:nobodyさん [2008/05/26(月) 19:09:34 ID:fmVA2Qe8]
先生方! 質問よろしいでしょうか!

open(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での保存が可能になるんでしょうか!

565 名前:nobodyさん mailto:sage [2008/05/26(月) 19:18:18 ID:???]
>>563
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
xn--lckja1b6r.jp/%70%65%72%6C%20%67%7A%69%70

566 名前:nobodyさん mailto:sage [2008/05/26(月) 19:32:47 ID:???]
Archive perl でググればでてくるじゃないの

567 名前:nobodyさん mailto:sage [2008/05/26(月) 23:41:19 ID:???]
>>563
英語が読めないなら駱駝本を買うべきだ。

568 名前:nobodyさん mailto:sage [2008/05/27(火) 11:06:43 ID:???]
ラクダを漢字で書かれると困ります (><;)



569 名前:nobodyさん mailto:sage [2008/05/27(火) 19:27:42 ID:???]
{
$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;
}
をコンパクトにまとめたいが、バグが混入しそうでいやん。

570 名前:nobodyさん mailto:sage [2008/05/27(火) 19:44:24 ID:???]
{
my $global_foo = $foo;
my $global_bar = $bar;
$foo = shift || $global_foo;
$bar = shift || $global_bar;
}

571 名前:nobodyさん mailto:sage [2008/05/27(火) 19:55:45 ID:???]
>>569-570
$foo eq undef もたいがいだが
shift || $global_foo だと $_[0] が '0' の時に挙動変わるな。

572 名前:nobodyさん mailto:sage [2008/05/27(火) 20:06:24 ID:???]
{
my $global_foo = $foo;
my $global_bar = $bar;
$foo = defined( $_[0] ) ? $_[0] : $global_foo;
$bar = defined( $_[1] ) ? $_[1] : $global_bar;
}

こうか?

573 名前:nobodyさん mailto:sage [2008/05/27(火) 20:06:58 ID:???]
あ、三項演算子逆だ。すまん。

574 名前:nobodyさん mailto:sage [2008/05/27(火) 20:33:00 ID:???]
defined関数の存在が頭から抜けてたorz
$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サンクス、参考になります。

575 名前:nobodyさん mailto:sage [2008/05/27(火) 20:38:51 ID:???]
つーか、>>569だとまともに動かんよ。

初期化するためにmy使っちゃってるように見えるけど、
この場合、ブロックスコープになるから、
ブロック内の$foo, $barと、グローバル変数$foo, $barは別物になる。

576 名前:nobodyさん mailto:sage [2008/05/27(火) 20:54:18 ID:???]
myの仕様間違えて覚えてたか…
$global_foo = $foo;
$global_bar = $bar;
{
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo unless defined $foo;
$bar = $global_foo unless defined $bar;
}
欲しい動作はこうかな…

577 名前:nobodyさん mailto:sage [2008/05/27(火) 20:56:48 ID:???]
いやいやいやいやw
「perl スコープ 変数」でググっみ。

578 名前:nobodyさん mailto:sage [2008/05/27(火) 21:53:15 ID:???]
全然わかってないわかってないwww



579 名前:nobodyさん mailto:sage [2008/05/27(火) 22:34:53 ID:???]
my $foo = 1;

sub func {
my $temp = $_[0];
return defined( $_[1] ) ? $_[1] : $temp;
}


ex :
$foo = func( $foo, 10 ); # $foo = 10
$foo = func( $foo ); $foo = 1

580 名前:nobodyさん mailto:sage [2008/05/28(水) 00:31:36 ID:???]
早くdefined-or演算子実装されないかな…







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

前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