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


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

Perlについての質問箱 37箱目



1 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:10:40 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 pc11.2ch.net/php/ )

CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2008/08/11 現在の最新版(安定版): 5.10.0
● 2008/08/11 現在の開発版: 5.9.5

▼ 前スレ
Perlについての質問箱 36箱目
pc11.2ch.net/test/read.cgi/tech/1215569470/

リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5-6 あたり

449 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 18:57:27 ]
>442
一番最後の行で答えが出てるじゃないか。

>444
まさにPerlの美学であると同時にデメリットだよなあ。
自分なら適当に区切るか括弧をつける。

>448
でもまあ、付けるけどな、俺。


450 名前:448 mailto:sage [2008/08/31(日) 19:33:07 ]
>>449
>>444 にあるコードは読み手を混乱させるのが目的なので、あえてそのように書いているのはお分かりかと思います。従って可読性を上げては意味がありません。
ただ今回のコードはまったくややこしくない、いわば子供だましの類なので、読めないとちょっとアレなのは確かですが。

>>448
もちろんそれがよいでしょう。理由は…、言うまでもありませんな。

451 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:51:31 ]
>>444
ppencode の出力の一部じゃないのか? ppencode が何者かはぐぐればわかる。

452 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 20:28:16 ]
print q pop

これでoって出るのがすげーわらえる

453 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 20:53:40 ]
はいはいわろすわろす

454 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:45:17 ]
>>444って要するに、"q"の意味がわかれば簡単だよね?

455 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:47:55 ]
>>444
それぞれ一つ一つの意味は分かっても、こうやって並ばれると分からないです><


456 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:54:00 ]
残念ながらそれは、知らないと ハァ? なレベルの知識だ。

457 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:08:19 ]
ハァ?



458 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:02:46 ]
今日からPerlを始めたいと思ってます。 
Active Perlというものは今でも無料で入手できるのでしょうか。。。 
Windowsで使いたいのです。 


459 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:11:26 ]
なぜ実際に自分で試そうとしない?

460 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:11:48 ]
>>458
ActivePerl そのものは現在も無料です。楽しんでね。

461 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:40:46 ]
なるほど、ここで生成されたものか

ppencode - JavaScript demo
namazu.org/~takesako/ppencode/demo.html

462 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:49:55 ]
>>458
ActivePerlは無料です。
でもダウンロードのリンクは
IQ150以上でないと
探せないようになっております。

463 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:51:06 ]
ちなみに最新バージョンは
5.10です。

ごーてんいち、でなくて
ごーてんじゅう、です。

464 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:51:58 ]
ダウンロードしてきたファイルは、
msiファイルを右クリで、インストールを
選べばインストールできます。
ダブクリではインストできないこともあります。

465 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:52:45 ]
ちなみに、VISUALPerlというものは
開発中止になった模様です。

466 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 01:59:27 ]
レンタルサーバのLWPでhttpsなサイトにアクセスしようとしたら、
Protocol scheme 'https' is not supported (Crypt::SSLeay not installed)
と怒られました。
telnetやsshでログインできないサーバなのですが、httpsなサイトにアクセスできるように出来ないでしょうか?


467 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 02:03:33 ]
できません



468 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 02:50:24 ]
鯖缶にモヅル入れろと頼めば突っ込んでくれるとこもある

469 名前:デフォルトの名無しさん [2008/09/01(月) 02:52:58 ]
use Term::ANSIColor qw(:constants);
my @colors = qw(RED GREEN BLUE);

for (@colors) {
  print $_, "$_", "\n";
}

みたいな事をやって、ループ内の動きが以下と等価になるようにしたいです。

print RED, 'RED', "\n";
print GREEN, 'GREEN', "\n";
print BLUE, 'BLUE', "\n";

現状はループ内の print の第一引数に文字列がそのままわたっているだけなので、
希望通りの動作をしませんが、希望通りに動かすにはどうしたら良いのでしょうか?

よろしくお願いします。

470 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 03:18:17 ]
>>469
print eval($_), $_, "\n" for @{$Term::ANSIColor::EXPORT_TAGS{constants}};



471 名前:デフォルトの名無しさん [2008/09/01(月) 03:23:24 ]
>>470
なるほど、evalで文字列を評価してやれば良い訳ですね。
リファレンス当たりをごにょごにょするのかなーと漠然と思っていたのですが、
そういう考え方には至りませんでした。

ありがとうございます。

472 名前:470 mailto:sage [2008/09/01(月) 03:29:30 ]
>>471
eval も一法というだけ。
@colors への代入時に解決してやる手もある。
というかそちらのほうが素直。

my @colors = RED, GREEN, BLUE;

473 名前:デフォルトの名無しさん [2008/09/01(月) 03:41:11 ]
>>472
はじめはそのような方法を考えてみたのですが、
代入時に評価してしまった場合、その後どうやって文字列として取得するかがわからず、
先ほどのようなコードになりました。
もしよろしければ、文字列として取得する方法も教えて頂けますか?


474 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 03:56:10 ]
my @colors = qw(RED GREEN BLUE);
for (@colors) {
    print $Term::ANSIColor::{$_}->($_), "\n";
}

475 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 04:00:33 ]
my @colors = qw(RED GREEN BLUE);
for (@colors) {
    no strict 'refs';
    print $_->(), $_, "\n";
}

476 名前:458 mailto:sage [2008/09/01(月) 08:33:05 ]
>>460 >>462 
 先ほど無事インストールし、[Hello World!!]を表示できました。 
 いろいろありがとうございました。。。 (´・ω・`) 



477 名前:466 mailto:sage [2008/09/01(月) 10:50:02 ]
>>467,468
サーバの管理者へインストールをお願いしてみます。




478 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:26:36 ]
「1.pl」の内容

use feature qw( :5.10 );

sub a {
my $a=1;
return $a;
}

1;

------------------
「2.plの内容」
use feature qw( :5.10 );

require q|1.pl|;

say &a;
----------------------
これで、「2.pl」を実行すると、「1」と表示されるが、
本当にこれでいいのか?
つまり、1.plの変数の内容を、2.plで、requireで呼び出して使うとき、
サブルーチン渡しでいいのか?

それとも、モジュール渡しをするのが普通なのか?

our渡しは、できるけれども、教科書に「やるな」と書いてあるので
排除の方向で。
それとも、ほかの何かがあるのか?

479 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:27:24 ]
1.plで変数があって、
それを
requireで、
2.plからその変数を利用したいときに、
どうやって変数を渡すのか、という
問題です。

480 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:38:24 ]
q| | って書く頭わるいの前からいるけど同一人物だよな。
夏休みいつまでなの?

481 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:43:36 ]
毎日がエブリデイなんじゃないかな。

482 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:56:53 ]
>>476
おめでとさん。Perl の泥沼へようこそ。
泥んこ遊びは楽しいYO!

483 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:22:05 ]
もうPerlなんてみたくもさわりたくもないと思いながら、早2年。
毎日のように#!/usr/bin/perl -wと書いています。

484 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:41:22 ]
>>483
> 毎日のように#!/usr/bin/perl -wと書いています。

これを自分で書く奴は相当のバカ

485 名前:デフォルトの名無しさん [2008/09/02(火) 00:32:56 ]
晒しage

486 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:42:38 ]
ttp://drop.io/travian_pl
jbbs.livedoor.jp/bbs/read.cgi/game/38835/1193931349

これおかしなプログラムとか組み込まれてませんか?

487 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:45:18 ]
板違いです



488 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 01:21:12 ]
ファイルをまたいだ引数の渡し方について
マジでおしえてくんないかなー?
requireでなくてuseを使うの?

489 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 01:44:08 ]
うるせーよだまってろ

490 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 02:07:54 ]
ここはひどいインターネッツですね

491 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 02:34:26 ]
ttp://drop.io/travian_pl
jbbs.livedoor.jp/bbs/read.cgi/game/38835/1193931349

これおかしなPerlとか組み込まれてませんか?
Perlで組まれてるらしいでつ

492 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 02:37:29 ]
板違いです

493 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 03:45:53 ]
なんだ・・・解析できないのか・・・はぁ・・・


494 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 04:13:48 ]
もしかして、パッケージを一致させればいいのか?

495 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 04:18:31 ]
もしかして、モジュールとパッケージとrequireについて
調べればいいのか?

それで、読むべき教科書は
www.rfs.jp/sb/perl/04/01.html
ここであってる?

496 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 05:21:19 ]
>495
結論が出てるのに何が疑問なのかが分からない。
それと多分、誠意が足りてない。


497 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 08:07:27 ]
>>496 を読んだ >>494

「なんだよ、あってるならあってるってとっとと言えばいいのに」
「誠意とか意味わかんないし関係ないじゃん」
「まあいいや。誰かも煽りはスルーって言ってたし。バカには言わせとけばいいんだ」



498 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 11:41:23 ]
質問です。

my @aaa = ("A" , "B" , "C" , "D");
foreach(@aaa){
@aaaの中を一つ飛ばす。
printf("%s\n",$_);
}

とし、結果を

B
D

としたいのですが、どのようにしたら簡単に出来ますでしょうか。
for()で$iを途中インクリする方法を考えたけど、いまいち複雑になったので。

499 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 11:58:28 ]
next;

500 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:05:45 ]
splice

501 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:06:44 ]
my @aaa = qw(A B C D);
for my $i (0 .. $#aaa) {
 next if $i % 2 == 0;
 print $aaa[$i], "\n";
}

502 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:10:17 ]
ヒアドキュメント内でループ処理したいのですが
コンボボックスをループで動的に生成したいのです。
どうやってやればいいのですか


503 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:21:31 ]
>>502
@{[ 任意の式 ]} を埋め込めばいいだろ。式としてdo BLOCKをつかえばおよそ何でも書ける。

Template Toolkitとか使った方が幸せになれそうだけどな。

504 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:29:08 ]
mapでおk

505 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 14:53:09 ]
リャマ本の133ページ(手元にあるのは11版です)の「8.5.1 優先順位の例」にある

  このパターンは、文字列先頭にあるfredにマッチするか、あるいは末尾にあるbarにマッチします

の部分ですけれど、これって

  このパターンは、文字列先頭にあるfredにマッチするか、あるいは末尾にあるbarneyにマッチします

の誤りじゃないんですか?オライリーのエラッタには載ってないみたいなんですが。



506 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 14:54:56 ]
途中で送信してしまった…

/^fred|barney$/ だとそうなるような気がするんスが。

507 名前:498 mailto:sage [2008/09/02(火) 14:54:57 ]
>>499-501

サンクス。
確認できますた。



508 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 15:03:51 ]
>>505
最初/^foo|bar$/ってなってたのを書き直したんだろうなw

509 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:05:42 ]
>508
なんだか急に親近感がwww


510 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:04:03 ]
そして11版まで行って誰も指摘してないのかよこれww

511 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:32:56 ]
指摘しちゃだめだろjk

512 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:13:41 ]
Perlを勉強する分には、Win上でActive Perlを使うのでも支障は無いでしょうか? 
UNIX上とはかなり差があるような気がして… 


513 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:17:08 ]
Perl自体にWindowsもUNIXも組み込みも関係ない

514 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:11:06 ]
>>512
コマンドプロンプトの操作性やパスの設定、文字コードを考えると、
Unix系のOSでperl使った方がましだと思う。

Cygwinでもいいんだけどさ。

515 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:33:34 ]
>>512
perlを1ヶ月学んできづいたことは、
CPANからモジュールとってくる、ってときに、
WinのActivePerlだと、PPMっていうソフトで
新しいモジュールをインストールするんだけど、
そこのPPMのメニューにすでに登録されている
モジュールしかインストールできない。

厳密に言えば6段階くらい複雑な手順をふめば
PPMを使わないで手動でインストールできるらしいんだが
初心者にはおすすめできない。

つまり、CPANから○○をダウンロードして使え、だとか
言われたりしたときとか、あるいは自分でグーグルで検索して
よさそうなモジュールみつけたときでも、それをかんたんには
入れられないケースが発生することがある。

自分がはまってるのは、mp3を鳴らすなんとか、ってモジュールを
入れたいんだが、PPMにのってないので困っている。

516 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:35:12 ]
2番目は、文字コードの問題。
DOSプロンプトで勉強するときに、必ず

use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;

と書かないといけない。

517 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:08:44 ]
>>512
coLinux+debian sidオススメ。
無駄にハイクオリティーなことをすると楽しい。



518 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:46:20 ]
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1.の行を入れると、DOS窓への日本語出力は簡便になりますが、
# ソースファイル名に非ANSI文字が含まれる場合にdie 文の出力が失敗します。
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。


-----------------------------------------------------
↑これの説明がよくわからないんだが、ファイル名が日本語の場合、
上記の措置が必要という意味なの?

それとも、ファイル名がアルファベットでも、
そのファイルの中味に日本語が書いてあったら、
上記の措置が必要という意味なの?

で、あれば、ファイル名が英語で、なおかつ
ファイルの中味が全部英語なら、上記の措置は
必要ないってことなの?

519 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:55:57 ]
どっちが主流ですか?

1. $obj = new X;
2. $obj = X->new;

1. call_sub();
2. &call_sub;

520 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 22:02:39 ]
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;

-------------------------
↑これってmy $fhって、なんなの?
ファイルハンドルなの?

521 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 22:09:10 ]
open(IN, "1.txt");
while (<IN>) { print; }
close(IN);

-------------------
別に、>>4に書いてあるようにcp932ってしなくても、
上記で日本語を含むファイルを開けるのですが、
これでいいの?

522 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 23:30:15 ]
>>515
こんなんもあるYO

Strawberry Perl
www.moongift.jp/2008/06/strawberry_perl/

523 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 23:37:16 ]
別ファイルに変数を渡す問題だが、
サブルーチン渡しにしたら問題が解決したと書いたが、
参考書で調べたところ、
「サブルーチンは宣言すると、すべて自動的にグローバルになる」
と書いてある。
つまり、ourでグローバル渡しをしているのと
実質的にまったく同じことなので、意味がないのだ。

ここはやはり、モジュールとかパッケージの勉強を
するべきなのか?

本当はどうやって渡すの?

524 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:37:40 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;

525 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:38:28 ]
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;

526 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:39:15 ]
>>524をファイルの先頭に書けば、
>>525は必要ないの?

実際、>>524だけで、
>>525なしでも、動いたんだけど。

527 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:46:07 ]
何もせずにそのままコピーするだけならエンコーディング無視のバイト列で
扱ってもいいけど、普通は中身みて加工とか集計とかするわけで、そういう
ときに違いが出るんだな。




528 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:10:24 ]
$fhってのはファイルハンドルなの?

普通は出てくるはずの
<IN>とかの文字が見えないので不安なんですけど。

529 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:13:03 ]
他ファイルのmy化された変数を別ファイルで読み込んで
使うのって、結局ourでグローバル変数化しておくか、あるいは
サブルーチンに入れて、return渡しするしかないの?

サブルーチンにいれるのは、すべてのサブルーチンは
宣言すると自動的にグローバル化されるのだから、
他ファイルに渡せるのはあたりまえなんですよね。

結局ourでグローバル化してるのと本質的には同じだし。

パッケージとモジュールの勉強をしてみましたが、
それでも結局グローバル化されてる変数は読み込めましたが、
my化されてる変数は読み込めませんでした。

530 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:46:49 ]
自分で何回もためしてみたけど、やっぱりモジュールファイルの中で
my化してるとだめなんだ〜

他ファイルで使って欲しい変数はグローバル化してないと
だめなんだね。

531 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:48:43 ]
>529
相変わらず質問の意図が分かりかねるのだが、それはさておき。


>他ファイルのmy化された変数を別ファイルで読み込んで
>使うのって、結局ourでグローバル変数化しておくか、あるいは
>サブルーチンに入れて、return渡しするしかないの?

やり方が分かってるなら、そうすればいい。


>それでも結局グローバル化されてる変数は読み込めましたが、
>my化されてる変数は読み込めませんでした。

myで宣言されてる変数が他から読めたら、myの意味が無いっしょ。



例えばグローバル変数にはメリットとデメリットがある。
特に理由が無ければデメリットの少ないローカルな変数を使って、サブルーチン間を渡せばいい。
ただし、メリットとデメリットを理解している人間が、的確な場所に使う分には何も問題がない。

グローバル変数を使うのも使わないのも、両方とも正解だ。
その「的確な場所」が分からないのなら、まだ使うべきではないということだ。



532 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:50:26 ]
Wikipediaの「名前空間」の項目が、少しは疑問を解決してくれるかも。
ja.wikipedia.org/wiki/%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93

533 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:56:37 ]
だーかーらー。

たとえば、モンスターの設定ファイルで、
スライムの体力=1とかって設定するとするでしょ。

ファイル名「a.pm」

package 1;
my $a=1;
1;

---------------

このmy $aを
他のファイルから読みたかったの。
でも無理だとわかったの。
この理解であってる?

534 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:03:42 ]
>>533
いい加減しつこい。とりあえず以下のドキュメント読んどけ。読み終わるまで戻ってくんな。
> perlboot - Perl OO tutorial for beginners
> perltoot - Perl OO tutorial, part 1
> perltooc - Perl OO tutorial, part 2
> perlbot - Perl OO tricks and examples


535 名前:533 mailto:sage [2008/09/03(水) 03:05:01 ]
読み終わりましたー

536 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:08:03 ]
だってグローバル変数絶対使うなみたいなことよく
書いてあるじゃん。

だから絶対使ったらダメなのかと思ったし。

でも外部から読み込まれることを前提に設計されてる
モジュールの場合は、外部に渡す変数はグローバル宣言なのね。

最初からそう言ってくれればいいのに。

入門書にも書いてないしー

537 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:50:29 ]
>>536
・Perlについてくるマニュアルに書いてある
・標準モジュールやユーティリティのソースで実例が見られる
・Webを検索すれば割とすぐに見つかる
・それについて書いてある本がいくつもある

そういうアレな質問に回答を返す病的に親切な人が出てきても、
「聞きたいのはそれじゃない」だったり、完全スルーだったり。

回答者が寄り付かないように工夫しているとしか思えないです。

あなたの好みと水準にぴったり合わせた答えを提供する義務は
誰にもありません。その点は忘れないで下さい。



538 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:51:14 ]
>>533
だーかーらーそれが勇者の設定ファイルなら読めるわ

539 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:59:50 ]
病的に親切な人と、叩こうとする=構おうとする人がなぁ。

540 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 04:00:02 ]
>533
それであってると言う主旨の回答を3回くらい見かけてるわけだが

541 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:02:26 ]
下でエラーが出るのは何故ですか?

--a.pl----------------
our $a = "hoge";
---------------------

--b.pl----------------
use strict;
require "a.pl";
print $a;
---------------------

C:\>perl b.pl
hoge
_____________________________________________________________________________

--a.pl----------------
our $aa = "hoge";
---------------------

--b.pl----------------
use strict;
require "a.pl";
print $aa;
---------------------

C:\>perl b.pl
Global symbol "$aa" requires explicit package name at b.pl line 3.
Execution of b.pl aborted due to compilation errors.

542 名前:デフォルトの名無しさん [2008/09/03(水) 11:02:59 ]
perl -wで動かすと、
Use of implicit split to @_ is deprecated
というものが表示されるのですが、これはどういう意味でしょうか?
-wをつけなければ表示されません

543 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:14:13 ]
>>542
splitをスカラーコンテキストで使うとばらした内容を@_に入れるという
仕様なんだが、サブルーチンの引数渡しに使われる@_を壊すので
よろしくないということになっている。

perldiag(1)の説明によればコンパイラに負担がかかるらしい。

Use of implicit split to @_ is deprecated
(D deprecated) It makes a lot of work for the compiler when you
clobber a subroutine's argument list, so it's better if you assign
the results of a split() explicitly to an array (or list).

古いプログラムはしょうがないが新しく書くプログラムでは避けた
方がいいと思われ。

544 名前:542 mailto:sage [2008/09/03(水) 13:01:45 ]
ありがとうございます

my $tab = split( /\t/, $_);
こう書いているのですが、どのように修正すればいいのでしょうか?


545 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:07:07 ]
>>544
$_ には何が入っていて、$tab には何を入れたいの?
もしかして @tab と書くべきところだったってオチか?

546 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:33:32 ]
ダミーの変数を用意して:

my $tab = my @dummy = split( /\t/, $_ );

が楽だし確実だな。

でも実はタブを数えたかったのなら、タブによって分割された
項目数を数えるより直接タブを数える

my $tab2 = tr/\t//;

の方が効率的なのでおぼえておくといい。

ただしsplitは(第3引数に負の数を与えなければ)末尾の空フィールドは
捨てるので、この動作を利用してなんかしている場合はtrで数える手は
使えない。

547 名前:542 mailto:sage [2008/09/03(水) 14:07:31 ]
>>545
ありがとうございます。
$_には、
foo\tbar\tbaz

\t
のような値が入っています。
$tabには配列の数を入れたかったです。(1行目なら32行目なら0

>>546
ありがとうざいます。
頂いたとおりに修正することで、-wをつけても何も表示されなくなりました。



548 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:58:36 ]
Perlを始めてみたのですが、 
UNIXだとファイルの最初に[ #! /usr/local/bin/perl ]などとフルパスを書くと
コマンドだけで実行できるようですが、Active PerlをWindowsで使ってる場合は、
こういうやり方は無理なのでしょうか? 

今は、ファイルを保存したディレクトリ内で、[ perl <ファイル名.pl> ]を打ち込んで実行しています。 


549 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:54:33 ]
>>548
ちゃんとインストーラでインストールした?
解凍してコピーしただけじゃOSの設定はされないよ。
ちゃんとインストールすれば、ほげ.pl をマウスでクリックするだけで動いてくれるよ。

#! /usr/local/bin/perl
が必要なのは、UNIXというOS固有の問題だから Windows には関係ない。
# で始まってるのでタダのコメント文として無視される。






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

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

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