Perl コーディング初心者質問コーナー Part36
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
04/07/14 13:23ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0968nobodyさん
04/08/21 17:33ID:???■ ■
■ 臭い方言(特に関西弁)は禁止です ■
■ ■
■■■■■■■■■■■■■■■■■■
0969nobodyさん
04/08/21 17:45ID:???headerでいきよることにしましたわ。おおきに。
>>968
おまえ様ルールを押し付けんといてや。
方言があかんなんてアホな話あるかいな。
0970nobodyさん
04/08/21 17:47ID:???> 返り血をリストコンテキストで評価すると何が返されるの?
そのままリストが返されるかと。。。
> map内の任意の処理結果を返させたい時にはどうするもんなの?
> returnとかやっても期待通りの結果が得られないんだけど。
目的が読めませんね。
単に sub や、 eval にした方がよいのでは?
0971nobodyさん
04/08/21 17:51ID:???> おまえ様ルールを押し付けんといてや。
> 方言があかんなんてアホな話あるかいな。
おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
普通にしとけ。
あと、レスポンスのエンティティヘッダな、> Content-type: strings;
RFC 2068 とか読んどけや。
0972nobodyさん
04/08/21 18:01ID:???>おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
おまえさんもいつも勝手に標準語使ってはるのやろ?
あんさん言ってることが支離滅裂でっせ。
0973954
04/08/21 18:08ID:7q3lmCCRやりたいことは
@a = qw/1 2 3 4 5/;
$a = join "&",map {
$value = &test($_);
$_."=".$value;
} @a;
こういう感じなんだけど、mapのブロック内のどの処理結果が返されるのかが、明確に理解できてなくて;
一応↑のソースは期待通りの結果が得られるんだけど、今後のために質問してみた。
例えば
@hoge = map { join "i",$_;
join "w",$_;
}@a;
なんかの場合は一体何が返るのか一見ではわからないから、サブルーチンみたく明示的にしたいけど
そういう場合はどうするものなのかなって思って。
0974954
04/08/21 18:10ID:7q3lmCCR思いっきり間違えた;
@hoge = map { my $a = $_ + 2;
my $b = $_ + 5;
}@a;
とかに変更;
0975大阪に30年住んでますが
04/08/21 18:20ID:???> おまえさんもいつも勝手に標準語使ってはるのやろ?
上のほうは自然に読めるけど、下のは読んでいて気持ち悪いですよ。
# 京都の人っぽいけど「すごく無理して書いてる」という印象を受ける。
0976nobodyさん
04/08/21 18:22ID:???%hash = (
a => 1,
":" => 2,
"_" => 3,
);
foreach ( grep /^\w*$/ , keys %hash ) {
print $_,":",$hash{$_},"<br>";
}
これでは_アンダースコアがあってもマッチしてしてまうのですが、完全に英数字だけにマッチさせるには
/^[a-zA-Z0-9]*$/のような方法しかありませんか?メタ文字から任意の一字を引いたりできるとカコイイんですが。
0977nobodyさん
04/08/21 18:25ID:???0978nobodyさん
04/08/21 18:26ID:???下手なのは認めるで。そんでも早く慣れな営業できへんのやorz
こないだも
「東京のお人はエライ冷たい感じがしていややわ」
言われてな・・・・大阪弁と京弁の微妙な違いがわからないのよね。
はぁスレ違い。退散するさかい堪忍な。
0980nobodyさん
04/08/21 18:47ID:???例えば /a/ なんかの場合はgはなくても1回マッチするまでは検索つづけるyね?
っていうかgってもともと置換演算子の修飾子で、たんなるマッチングの修飾子ではないの?
0981954
04/08/21 19:01ID:7q3lmCCR>>980
/a/だけで問題ないよ。
>>976
/[^a-zA-Z0-9]/でいいじゃん。別にかっこ悪くないよ。
0987nobodyさん
04/08/21 23:47ID:???> ちょっと違う質問なんだけど、mapの
> map BLOCK,LIST;
> の書式の場合、返り血をリストコンテキストで評価すると何が返されるの?
BLOCKの返り値をつないだリスト
> @test = ( "a1","a2" );
> @an = map { $_ =~ s/a//g } @test;
> これだとわかりやすく$_を置換したものが毎回の返り血だけど、
そんなこたー無い。
s/PATTERN/REPLACEMENT/egimosx
Searches a string for a pattern, and if found, replaces that pattern with the replacement text and
returns the number of substitutions made. Otherwise it returns false (specifically, the empty string).
なので、@an = (1, 1)
> @test = ( "a1","a2" );
> @an = map { my $a = 5;
> $_ =~ s/a//g } @test;
> これだとmap内の一行目の代入成功の真(1)が毎回返される。
そんなこたー無い。同上
> @test = ( "a1","a2" );
> @an = map { $_ =~ s/a//g;
> my $a = 5 } @test;
> 今度は5が毎回返される。
当たり前。
> map内の任意の処理結果を返させたい時にはどうするもんなの?
> returnとかやっても期待通りの結果が得られないんだけど。
return EXPR
Returns from a subroutine, eval, or do FILE with the value given in EXPR.
ドキュメント嫁。
0988nobodyさん
04/08/21 23:59ID:???0989スレ立てしようとしたら蹴られますた
04/08/22 00:21ID:???>>2だけですが、リンクを新しいスレッドに変えたものを貼っておきます。スレ立て人募集(泣)。
関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/
△▲ WebProg 初心者の質問 Part9 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1086715675/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
0990966
04/08/22 00:45ID:???おお!やっとエロイ人出現。
なんか966でのソースはテストしたはずなんだけど、思いっきり間違ってたみたい。
結局俺の疑問はブロックの返り血ってことだになるんだよね?
my @test = ( "a1","a2" );
my @an = map { $_=~ s/a//g ; $_.":"."test";} @test;
print @an;
>1:test2:test
これの場合はブロックの返り血がなんで最後の一行だけになるんだろ?
サブルーチンと同じで、returnが省略されてる場合は自動的に最後の一行がブロックの返り血ってことになるってことであってる?
そんな気がするけど、mapのブロックないではreturn使っても動作しないんだけどそこらへんが不思議。
my @test = ( "a1","a2" );
my @an = map { return $_=~ s/a//g ; $_.":"."test";} @test;
print @an;
>
どこにreturnを入れても駄目みたい。元々returnってのは呼び出し元に返すのものだから
駄目とかいう感じなのかな?
0991nobodyさん
04/08/22 01:11ID:???Returns from a subroutine, eval, or do FILE with the value given in EXPR.
って書いてもらってんじゃん。
大体、エラーが出てるだろ。Can't return outside a subroutine
これは多分だけどさ、
sub func1{
my @test = ( "a1","a2" );
my @an = map { return $_=~ s/a//g ; $_.":"."test";} @test;
print @an;
}
だと、returnはどう解釈すりゃいいんだろうね?ってことじゃね?
どうしても、そんなことがやりたかったら、それ用のサブルーチン作っとけば?
0993nobodyさん
04/08/22 01:28ID:???0994nobodyさん
04/08/22 01:30ID:???0995nobodyさん
04/08/22 01:33ID:???0996次スレ1
04/08/22 01:48ID:???0997次スレ1
04/08/22 01:49ID:???0998nobodyさん
04/08/22 02:02ID:???0999nobodyさん
04/08/22 02:03ID:???1000nobodyさん
04/08/22 02:03ID:???Perl コーディング初心者質問コーナー Part37
http://pc5.2ch.net/test/read.cgi/php/1093106507/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。