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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/09/16(日) 19:49:43ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0176nobodyさん2007/09/29(土) 12:27:00ID:???
変数名を参照することって出来ますか?

$test = 'abc';

という変数があるとして、$testの'test'の部分を知りたいのです。
例えば、@a = ($test, $boo, $hoge);
という配列があるとして、
これを それぞれ変数名 => 値 というハッシュに変換したいのです。
$h{'test'} => 'abc'
のように。
0177nobodyさん2007/09/29(土) 13:07:39ID:???
>>176
> @a = ($test, $boo, $hoge);
この時点で $a[0] には $test が持つ値 'abc' そのものがコピーされて入る。
よって代入後に @a 内の各値からコピー元の変数名を辿る事はできない。
0178nobodyさん2007/09/29(土) 21:46:18ID:m5gmrcyE
文字コードをUTF-8に変換したいのですが

use Jcode;
$str = "あああ";
print Jcode->new($str)->utf8;

とすると
Undefined subroutine &Jcode::_Classic::euc_utf8 called at パス/Jcode/_Classic.pm line 255.
というエラーが発生してしまいます。

ちょっと調べたらJcodeのバージョンを下げれとありましたがそれは無理なので何か他に方法はないでしょうか。
0179nobodyさん2007/09/30(日) 02:32:26ID:???
未だにJcodeが使われるのは子飼弾がちゃんとEncodeの使い方を解説しないからなのか・・・
0180nobodyさん2007/09/30(日) 04:35:03ID:???
>>178

使っているPerlのバージョンは?
Jcodeはどのようにインストールしたもの?

>>179
Web関連のムックで書いてなかったか? >Enocdeの使い方

01811642007/09/30(日) 08:09:20ID:9pVP3h63
>>175
そりゃ中身なにもないものをrequireしてもしょうがないからですよ。
一体何が間違ってるというんですか?

メインパッケージにないものをrequireを使えば
routin(1,2,3);
で呼べるというのは本当なんですか?ウソなんですか?
0182nobodyさん2007/09/30(日) 08:18:04ID:???
ほらね、strictとwarningsを無理に使うと本末転倒になるでしょ。
0183nobodyさん2007/09/30(日) 08:34:17ID:???
>>181
誰もウソなんかついちゃいない。
お前が全然理解できてないだけ。
01841642007/09/30(日) 08:40:27ID:9pVP3h63
>>183
だから何をどうしろというんですか?
最小コードを教えてください。
0185nobodyさん2007/09/30(日) 08:49:27ID:???
>>182
181の事を示して言ってるならwarningsもstrictも無関係にエラー出るぞ。
176はそう言う次元のお話しではないし、
178は、my宣言してないからwarningsとか宣言してないと見るが?

別にstrict,warningsを嫌うのは勝手だけど、事象は切り分けてくれ。
ここは初心者スレで勝手に脳内変換して>>182を信じてしまう人が
いる可能性もあるんだから。


0186nobodyさん2007/09/30(日) 08:59:25ID:???
>>184
うざいなあ、ここで文句垂れてる間にググればとっくに exporter の使い方も
習得出来てるだろうに

% cat foo.pl
sub foo{ 1 ; }
1;
% perl -le 'require q{foo.pl} ; print foo()'
1
0187nobodyさん2007/09/30(日) 09:40:39ID:???
>>185
ああごめん。mod_perlと混同して勘違いしてた。
Perlが初めての方なら尚更strict/warningsは
ややこしくなるから不必要だと思うけど。
01881642007/09/30(日) 10:10:19ID:9pVP3h63
>>186
突っ込みが下手すぎ。
package使うなって言って欲しかった。
0189nobodyさん2007/09/30(日) 10:12:50ID:???
>>188
くだらない質問でもど偉そうに聞いていいスレ
http://pc11.2ch.net/test/read.cgi/php/1158647441/
01901642007/09/30(日) 11:09:19ID:9pVP3h63
もしもお前に部下がいるなら可哀想だ。
まだ使う側でないというなら、今のうちに間違いを指摘してきた相手が目下だと反省のできない上司にならないよう気をつけておけ。
0191nobodyさん2007/09/30(日) 12:11:48ID:???
>>188
「最小コードを書け」
って言われたから書いたまでだが?
>>175で package に関する点は指摘されてるだろ

>>187
mod_perl の mod の字も出てないのに…
0192nobodyさん2007/09/30(日) 12:51:11ID:???
自分の読解力、理解力の無さを棚に
上げて回答者を批判する男の人って…
01931642007/09/30(日) 14:35:18ID:9pVP3h63
>>191
>>175のどこがpackageに関する点の指摘なのよ。
あれじゃサブルーチンを別ファイルに移した事の指摘だろ。

>>192
女ならいいのか?クソフェミニストめ。
0194nobodyさん2007/09/30(日) 15:37:17ID:???
質問してもよろしいでしょうか?
すみませんが宜しくお願いいたします。

特定の契機を迎えたとき?
@_や$_には値が自動でセットされるようになっていますよね?
その契機の一覧みたいなものが知りたいのですが、膨大ですか?
うまくまとめてるサイトあれば教えてください。
0195nobodyさん2007/09/30(日) 15:38:11ID:???
やはり読解力の欠片も無いな
0196nobodyさん2007/09/30(日) 15:44:41ID:???
>>194
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlvar.pod
http://perldoc.jp/docs/perl/5.6.1/perlvar.pod
ラクダ本
0197nobodyさん2007/09/30(日) 16:14:26ID:???
>>179
5.005とか5.6と互換を取るのに便利だったりする。
(5.005は古いバージョン使ってたり、変換規則が違ったりするけど。)

それはともかく、チュートリアルをpodで欲しいとか思うよね。
unicodeのチュートリアルとか、あっちこっちにドキュメントが散らばってて、
しかも、翻訳も無かったりして、初心者にはきついと思う。
0198nobodyさん2007/09/30(日) 23:01:50ID:???
コーディングではないけれどPerl関連(Windows関連?)ということでお願いします。
PerlのパスをUNIX風に設定しておくことってできますか?(usr/bin/perl)
今は5.8なんですが、前に5.6の頃、実際のパスがc:\perlだとしても
この書き方(パス)で動いてた気がするんだけど・・・
0199nobodyさん2007/10/01(月) 00:24:00ID:???
5.8でも動く件
02001982007/10/01(月) 01:04:55ID:???
>>199
すんません、ブラウザでCGIとして起動した場合はどうですか?
関連に気づかなくて書かなかったんですが、
こちらでもプロンプトでは動くんだけど、ブラウザではアウトです。
0201nobodyさん2007/10/01(月) 01:27:53ID:???
普通にpath通せばいいんじゃね?
0202nobodyさん2007/10/01(月) 02:12:06ID:???
それはPerlじゃなく各々のhttpdの管轄
なので他の適切なスレを当たって下さい
02031982007/10/01(月) 02:14:31ID:???
>>201
ありトゥース!・・・が、しかし。。
恥をしのんでお尋ねしますが、パス通すって・・?
Windowsの環境変数にusr/bin/perlを追記するってことではないですよね。
い、いかように・・・
0204nobodyさん2007/10/01(月) 07:19:52ID:???
関連付けでおk。
0205nobodyさん2007/10/01(月) 09:49:39ID:4GodVsb7
>>180
レス遅くなってすみません。
JcodeやめてEnocdeで対応させました。

perlのバージョンは5.8、Jcodeは最初サーバーには入っていなかったので
自前で自分のディレクトリにインストールして使ってました。
それで問題なかったのですが最近サーバの方が用意してくれたらしく
そっちを読み込むようになってました。
そのサーバにインストールされた新しいJcodeで問題が発生していたと言う次第でした。
しかし新しいJcodeはなんであんなとんでもないバグを持ってるんだろうか。
UTF-8変換できなきゃJCodeの存在意義が無くなるのに。
0206nobodyさん2007/10/01(月) 10:32:27ID:???
>>203
環境変数にperl.exeのパスを通せばいい。
もしくは出来るならhttpdの方で指定するとか。
0207nobodyさん2007/10/02(火) 00:21:38ID:???
>>203
かなり無理やりな解決方法。

C:\直下にusrを作って、そこへC:\Perl\bin\(Enter連打でinstした場合)をフォルダごとコピー。
でC:\Perl\lib\とC:\Perl\site\もフォルダごとコピー。
これでC:\usr\直下に、binとlibとsiteができる。
それでcgiファイルの頭に
#!/usr/bin/perlでOK。

でも、ppmや、自前でモジュールインストールする度に、本来のC:\Perl\以下よりlibやsiteをコピー
しなければならないし、UpgradeやUninstallの時も当然ながら消してはくれません。
普通の人にはお勧めできない。

実を言うと、C:\直下にusrやtmpやvarなんかを作ってると、perlスクリプトの中からフルパスで
/var/tmp/〜とかやってファイル操作したりするのに、Unix環境といちいち書き換えなくて済むっちゅう
横着ができたりします。
0208nobodyさん2007/10/02(火) 00:40:37ID:???
activeperlで>207の方法をやるなら、perldoc reloc_perlを見ると幸せになれるかもしれない。
0209nobodyさん2007/10/02(火) 01:54:23ID:???
質問です。
LWP::UserAgentとCrypt::SSLeayを利用して、SSLでサーバと通信を行っています。
相手先の証明書が、期限切れなど信頼できない場合は、以降の処理を打ち切りたいのですが、
それを判別するにはどうすればよいですか?
0210nobodyさん2007/10/02(火) 02:05:01ID:???
LWP::Protocol::httpsにヒントがあるかもね
02111802007/10/02(火) 02:34:16ID:???
>>205
ん、別に少し間が開いたくらいは気にせんからいいよ。

ただ、サーバー管理者が入れたのがおかしいってのは変だね。
症状からすると、(わざわざ)pure perl のコードを選択したときのバグっぽいけど
これって fix されたんじゃなかったっけか?

それにPerl本体が 5.8なら Encodeを利用する形でJcodeは入るはずだしなあ。
0212nobodyさん2007/10/02(火) 06:25:36ID:SbhRpQr+
レン鯖に特定のモジュールがインスコされてるかどうか
テストするのに良い方法はないでしょうか?
0213nobodyさん2007/10/02(火) 07:23:13ID:???
@INCを総当たり
0214nobodyさん2007/10/02(火) 08:34:43ID:???
>>211
原因を特定できないのなら黙っておけ。
0215nobodyさん2007/10/02(火) 09:25:29ID:???
>>212
実際に use して調べるのが一番確実。

#!/usr/bin/perl -w
use strict qw(subs vars);
my $token = qr/[A-Z_a-z][0-9A-Z_a-z]*/;
my $module = ($ARGV[0] || '') =~ /^($token(?:::$token)*)\z/ ? $1 : '';
my $result = $module ? eval "use $module" : 'usage: http://.../this.cgi?Module::Name';
$result ||= $@ || qq/$module ${"${module}::VERSION"}/;
print "Content-Type: text/plain\n\n$result";
__END__
0216nobodyさん2007/10/02(火) 09:39:01ID:???
もう少し可読性を高める努力をしろよ。
0217nobodyさん2007/10/02(火) 10:20:20ID:???
>>207
インストールしなおしでその構成になるようにしたほうがいいんじゃ・・・
0218nobodyさん2007/10/02(火) 17:33:08ID:???
$^Oが取り得る値のリストってどこかにない?
0219nobodyさん2007/10/02(火) 19:19:35ID:???
>>218
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#PLATFORMS
0220nobodyさん2007/10/02(火) 20:12:26ID:???
>>215
コードまで書いていただいてありがとうございました。
use <モジュール名> をevalして戻り値を確かめるわけですね。
どうもevalは使うのに躊躇してしまうんですが、こういうときは便利ですね。

>>213
@INCの中を覗くという発想も考えたことがなかったので
やってみたいと思います。
0221nobodyさん2007/10/02(火) 21:03:46ID:2QBdgnfp
日本語変換の問題について質問です。
コードをEUCで書いて、出力をShift_JISで行うのが目的です。

今はjcode.pl使っています。
activeperlのwinxp用でローカルチェックをしています。

JCODEというモジュールもあるそうですが、activeperlには初期状態でなかったりしますよね。
確か自分は入れた覚えもあるのですが。

オススメは何ですか?
確か他にも変換用のモジュール?はあったと思いますが。
euc,shift_jis,jisの3つだけでのオススメが知りたいです。
0222nobodyさん2007/10/02(火) 21:47:16ID:???
>>221
万能解は無いので、Encode / Jcode / jcode.pl / Unicode::Japanese を
一通り使い込んでから、好みと用途に合ったものをお選びなさいな。
0223nobodyさん2007/10/02(火) 23:24:50ID:???
いまさらjcode.pl薦めるなよ。
02242212007/10/02(火) 23:41:50ID:2QBdgnfp
jcode.plを除いて一番汎用的に使えるのはどれですか?
汎用的って言っても、サーバーやローカル環境で一番広く使えるものです。
一番広まってるモジュールといえばいいのですかね。
0225nobodyさん2007/10/03(水) 00:23:34ID:???
リストをリストのままリストの個数を得るにはどうすればいいですか?

(1,2,3,4,5)
これを配列にいれずにってことです。
grepとかでもリストが作られますよね。
そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。

scalar(@{[grep{$_>0}]})
っていうのも同じくなんかなぁと思います。
普通にないなら関数作ろうと思うのですが。
0226nobodyさん2007/10/03(水) 00:41:53ID:???
scalar(@{[1,2,3,4,5]})
0227nobodyさん2007/10/03(水) 00:41:53ID:???
はあ
0228nobodyさん2007/10/03(水) 01:16:44ID:???
システムに依存する組み込み関数が使用できるかどうか
手っ取り早く調べる方法ってなにかな?
0229nobodyさん2007/10/03(水) 01:49:55ID:???
>>224
インスコしてなかったら自分で読み込むようにすればいいよ。
use libつかうなり同階層に置いてuseするなり。
0230nobodyさん2007/10/03(水) 01:58:30ID:???
>>224
Perl 5.8.x なら標準モジュールの Encode が一番広まっていると言えば
広まっている。

>>225
リストコンストラクタが幾つの要素を吐くかは、吐かせてみないと
分からない。吐かせた結果を保存しないのなら、目の前を流れていく
個数を数えるしかない。

sub count { scalar @_ } $num = count((1) x rand 10);
$num = scalar @{[ (1) x rand 10 ]};
$num = 0; ++$num for (1) x rand 10;

>>228
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#FUNCTION_IMPLEMENTATIONS
に目を通した上で eval 内で実際に使用して確認。
02312252007/10/04(木) 00:46:59ID:kUiVRXqk
>>230
黒魔術みたいなコードはいけないってこのスレで教えてもらいました。
素人ながら納得しました。
ですからあなたもそういうコード書いていてはいけないと思います。
それも教える側でそれを使うと黒魔術が流行ってしまいます。

僕にはあなたのコードが何をしてるのかわかりません。
0232nobodyさん2007/10/04(木) 00:52:08ID:???
++$num for (1) x rand 10;
こんな書き方はじめてみたw
7行プログラミングとかに出てきそうだな。
だれか解説というか一般的な形にしてクレクレ
0233nobodyさん2007/10/04(木) 00:57:28ID:???
foreach((1) x rand(10)){
++$num;
}
0234nobodyさん2007/10/04(木) 02:06:39ID:???
こんなの全然黒魔術じゃないと思うが・・・
0235nobodyさん2007/10/04(木) 03:26:46ID:???
中身が1行のfor(もしくはforeach)なんて普通こう書かんか?

↑もう何年もforeachなんて書かずにforで済ませてるからスペル調べちまったw
0236nobodyさん2007/10/04(木) 03:33:49ID:???
それは分かりづらい。括弧でくくった方がいいな。
++$num for ((1) x rand 10);
0237nobodyさん2007/10/04(木) 06:44:51ID:???
これだからPerlのコードは気持ち悪いんだよな
02382252007/10/04(木) 07:08:27ID:kUiVRXqk
((1) x rand(10))
これの意味がわかりません。
1*10とどう違うんですか。
それとforに10とか与える意味も。
0..10ならわかるけど。
0239nobodyさん2007/10/04(木) 08:10:41ID:???
このスレは精神障害者ばかりですね。
0240nobodyさん2007/10/04(木) 08:14:34ID:???
>>231
その程度の実力で関数を自作するってかw
0241nobodyさん2007/10/04(木) 09:03:58ID:???
>>238
ひょっとして

>吐かせた結果を保存しないのなら、目の前を流れていく
>個数を数えるしかない。

の意味がわかってないのか?
お前が一定の個数で決め打ちしたいなら最初からそうすればいいだけ。
0242nobodyさん2007/10/04(木) 09:42:16ID:???
>> grepとかでもリストが作られますよね。
>> そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。

grepに限って言えばスカラーコンテキストでは条件が真になる要素数を返すわけだが。

% perl -e 'print scalar(grep { $_ > 0 } 0,1,1,0,1)'
3
0243nobodyさん2007/10/04(木) 09:43:48ID:???
x 10ならわかるけどなんでrand(10)なん?
それがいまいちわからんぽ
0244nobodyさん2007/10/04(木) 10:10:16ID:???
いつも10だと面白くないと思って乱数にしただけで特に意味はないだろう。
そんなこと気にしてるとハゲるぞ。
0245nobodyさん2007/10/04(木) 10:20:27ID:???
>>238
http://perldoc.jp/docs/perl/5.8.8/perlop.pod
「Multiplicative Operators operator, multiplicative」の項

rand EXPR は 0 以上 EXPR 未満の値を返すので、整数値が欲しい際は
通常 int() を通す。但し perl が整数値を欲しがっている箇所に小数値が
与えられた場合は、自動で整数値に丸められる。

$str = substr('abcd', 0, rand 5); # '', 'a', 'ab', 'abc', 'abcd'
$var = $array[ rand @array ]; # @array 中の要素からランダム選出

x 演算子の右辺は「個数」という整数値を要求しているので、(1) x rand 5
という式は (), (1), (1,1), (1,1,1), (1,1,1,1) のいずれかになる。

>>243
>>241 が指摘してくれているように、最初から個数が分かっているなら
「リストをリストのままリストの個数を得る」必要はなく、$num = 10;
等と書いておけば済む。(1) x rand 10 という式には「要素数が不定で」
「コピペですぐ動作確認できる」リストのサンプルという以上の意味は無い。
0246nobodyさん2007/10/04(木) 17:45:56ID:???
これ何?
$|++;
0247nobodyさん2007/10/04(木) 18:42:58ID:???
出力バッファの自動フラッシュを抑制
0248nobodyさん2007/10/04(木) 18:43:28ID:???
ハニーフラッシュ!
0249nobodyさん2007/10/04(木) 18:44:27ID:???
抑制じゃねえ間違えた まあいいや
0250nobodyさん2007/10/04(木) 19:48:49ID:???
プログラミングPerlのパッケージ、オブジェクトの章を読んでも意味が
さっぱりわからなかったのですがどうすればいいですか?
みなさんはあそこに書いてあること、あっさりわかりました?
0251nobodyさん2007/10/04(木) 20:48:51ID:???
>>250
ラクダ本だけでは実感が掴みにくいような。
http://www.rfs.jp/sb/perl/
でも解説されてる。
同じ説明でもいろんな説明を見ると分かってくるような。
0252nobodyさん2007/10/04(木) 21:37:38ID:???
>>250
http://fleur.hio.jp/perldoc/mix/pod/perlboot.html
0253nobodyさん2007/10/05(金) 09:42:06ID:???
OOP 勉強したいなら Plagger に入門すればいいよ!
0254nobodyさん2007/10/05(金) 12:41:48ID:???
>>251
これは本当に超初心者向けといった感じですね。
>>252
これはわかりやすい!
>>253
こんな面白いものがあったんだ
0255nobodyさん2007/10/06(土) 12:48:34ID:PfM+S4yJ
foreach(){}

↑フォーイーチみたいな発音でいいですよね・・・?
02562552007/10/06(土) 13:03:13ID:PfM+S4yJ
追加お願いします。

use strict;
my %hash = qw/2 5 s 2 d 3/;
print map{"$_ " , 1}keys %hash;

>Execution of C:\test.pl aborted due to compilation errors.
これ何がいけないんですか?

print map{$_ ," ", 1}keys %hash;
こう書き換えるとエラーになりません。
activeperl5.8.1のwinxp稼動です。
02572552007/10/06(土) 13:23:18ID:PfM+S4yJ
ぐるせいや。ぐるせいや。
0258nobodyさん2007/10/06(土) 13:30:22ID:???
>>256
perldoc map見れば分かる
02592552007/10/06(土) 15:01:35ID:PfM+S4yJ
>>258
すいません。わからないです。
教えてください。
0260nobodyさん2007/10/06(土) 15:40:28ID:???
> perldoc map見れば分かる

> map - An utility to map texts from and to unicode

ねーよwww
02612552007/10/06(土) 17:19:29ID:PfM+S4yJ
どなたか>>255-256の回答お願いできませんでしょうかm(__)m
0262nobodyさん2007/10/06(土) 17:33:12ID:???
print map{("$_ ", 1)} keys %hash;
0263nobodyさん2007/10/06(土) 17:33:28ID:???
読み方なんてどーでもいいじゃん
スクールでも始める気か?
0264nobodyさん2007/10/06(土) 17:44:55ID:???
>>255
http://dictionary.goo.ne.jp/search.php?MT=for&kind=ej&mode=0&base=1&row=1
http://dictionary.goo.ne.jp/search.php?MT=each&kind=ej&mode=0&kwassist=0

これぐらいは辞書引いたらどうよ。

>>256
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod
> { はハッシュリファレンスとブロックの両方の開始文字なので、
> map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。
> perl は終了文字の } を先読みしないので、{ の直後の文字を見て
> どちらとして扱うかを推測します。通常この推測は正しいですが、
> もし間違った場合は、} まで読み込んでカンマが足りない(または多い)ことが
> わかるまで、何かがおかしいことに気付きません。 } の近くで文法エラーが出ますが、
> perl を助けるために単項の + を使うというように、{ の近くの何かを変更する必要が
> あります。

perlの構文解析までは知らん。
0265nobodyさん2007/10/06(土) 17:49:40ID:???
>>260
-fを入れることも自分で分からないようではいかんだろって意味であえて書かなかった
02662552007/10/06(土) 19:25:29ID:PfM+S4yJ
>>264
ありがとうございます。
それでフォーイーチでいいのですか?
用語なんで普通の読み方で本当にいいのかという意味の質問だったのですが。

mapの方ですが、
my $hash = {"A "=>"5" , "s"=>"2" , "d"=>"3"};
これでエラーが出ないんです。"A "でエラーが出ないのに、どうして

print map{"$_ " , 1}keys %hash;
でエラーが出て
print map{$_ ," ", 1}keys %hash;
でエラーが出ないのか。

よくわからないのですが、ハッシュリファレンスとしてエラーが出そうなのは後者だと思うんです。
カンマが足りないってことで。
そして前者はブロックとしても式としても何も問題がないと思うのです。
my $test = 1;
if("$test " , 1){
print "ok";
}
これを走らせてもエラーでないですし。
そこらへんどういうことなのかわかりますでしょうか?
02672552007/10/06(土) 19:28:03ID:PfM+S4yJ
>>265
-fってなんですか?
http://perl.misty.ne.jp/switch.html
ここには載ってないですが。
0268nobodyさん2007/10/06(土) 19:31:23ID:???
>>266
>それでフォーイーチでいいのですか?

関数名の読み方に正解なんてないから好きに呼べよ。
余程狂ってなきゃ誰も笑ったりしないよ。

で、結局何が問題なんだ?
結論は既に出てるし、perlの仕様について文句言われても困る。
0269nobodyさん2007/10/06(土) 19:32:40ID:???
釣りなのか読解力がないのか単なる馬鹿なのか
0270nobodyさん2007/10/06(土) 20:11:35ID:???
>>267
perldocを嫁
0271nobodyさん2007/10/06(土) 20:42:22ID:???
>>267
それはperlのオプション。

あんたが必要なのはperldocのオプションだから、
コマンドラインからperldoc perldocで確認すべし。
02722552007/10/06(土) 20:43:43ID:PfM+S4yJ
>>268
何故エラーが出るのかわからないのです。>>266にあるとおりです。
>>264さんのところの話ではつじつまが合わないのです。

>map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。

どちらとして評価しても
print map{"$_ " , 1}keys %hash;
これでエラーが出る説明になりません。

02732552007/10/06(土) 20:47:23ID:PfM+S4yJ
>>271
なるほどつまり-fの意味は
perldoc -f map
で、mapの仕様を確認しろって事なんですね。
0274nobodyさん2007/10/06(土) 20:59:58ID:???
>>272
{"$_ " , 1}をEXPRとして、keys %hashをLISTと解釈すると、コンマが足らない。
02752552007/10/06(土) 22:39:59ID:PfM+S4yJ
>>274
ん・・・

map EXPR, LIST
    ↑これかーー!

納得です。ずっと{}の中のコンマばかりに注目してました。{}とLISTの間のコンマのあるなしが問題だたのですね。

■ このスレッドは過去ログ倉庫に格納されています