CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )
回答する際はモダンな方法でお願いします
(例 jcode.plではなくEncodeモジュールを使った方法)
理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
最新のPerlを使うほうがかっこいいです。
いつまで勉強しないつもりですか?
過去にとらわれるのはもうやめです。進歩しませんよ。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。
http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2
▼ 前スレ
Perlについての質問箱 49箱目
http://toro.2ch.net/test/read.cgi/tech/1319953460/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り
探検
【モダン推奨】Perlについての質問箱 50箱目
■ このスレッドは過去ログ倉庫に格納されています
2012/01/21(土) 10:56:39.03
767デフォルトの名無しさん
2018/12/16(日) 13:33:32.09ID:sRmrp7hv 「Perl4 を使っている」というのは言い過ぎだったかな。
eval を使えばシンボリックリンクを実現できるけど
${$key} という表記はできなかったからね。
このカテゴリマスターの方々は単に Perl を知らないんだろう。
知らないのはいいが、なぜ回答するのか。
eval を使えばシンボリックリンクを実現できるけど
${$key} という表記はできなかったからね。
このカテゴリマスターの方々は単に Perl を知らないんだろう。
知らないのはいいが、なぜ回答するのか。
768デフォルトの名無しさん
2018/12/16(日) 13:44:41.15ID:sRmrp7hv 書き間違えた。
s/シンボリックリンク/シンボリックリファレンス/
s/シンボリックリンク/シンボリックリファレンス/
769デフォルトの名無しさん
2018/12/16(日) 13:50:00.67ID:yJnPGyqy >>763
Perl5でもおなじなんやで?
Perl5でもおなじなんやで?
770デフォルトの名無しさん
2018/12/16(日) 20:13:44.90ID:sRmrp7hv え…何が? 表記のことなら Perl4 ではできなかった Perl5 の表記なんだけど。
771デフォルトの名無しさん
2018/12/17(月) 00:09:00.22ID:iB9eUrL3 あ、デリファレンス記述を知らんヤツ発見、て意味だった?
勘違いした。w
勘違いした。w
772デフォルトの名無しさん
2018/12/17(月) 07:49:28.02ID:WGHllUkv >>766
> $name がリファレンスの時、@$name でデリファレンスされることと、
> @name と書くことは同じ意味になる
ん? $name と @name は別物じゃね?
@s = qw/a b c/;
$x = \@s;
print join ",", @x; # ""
print join ",", @$x; # "a,b,c"
> $name がリファレンスの時、@$name でデリファレンスされることと、
> @name と書くことは同じ意味になる
ん? $name と @name は別物じゃね?
@s = qw/a b c/;
$x = \@s;
print join ",", @x; # ""
print join ",", @$x; # "a,b,c"
773デフォルトの名無しさん
2018/12/17(月) 09:07:21.92ID:GlvD8kJn よくわからんけど気になるのだけど
結局リファレンスをデリファレンスして値つっこんでるだけ、でいいんだよね?
回答者が勘違いしてる変数名の変数指定ってどうやるんだっけか
結局リファレンスをデリファレンスして値つっこんでるだけ、でいいんだよね?
回答者が勘違いしてる変数名の変数指定ってどうやるんだっけか
774デフォルトの名無しさん
2018/12/17(月) 12:40:59.21ID:JqNM8yOl775デフォルトの名無しさん
2018/12/17(月) 12:59:58.19ID:GlvD8kJn >>774
ありがとう
リファレンスで間接的?に定義された場合のみ暗黙的にアクセス可能になるのか
変な挙動だなぁ
昨日一応手元でワンライナー書いてから質問したんだけど
変数名を別に定義済みの場合は暗黙的解釈は成されないんだね
変だー
ありがとう
リファレンスで間接的?に定義された場合のみ暗黙的にアクセス可能になるのか
変な挙動だなぁ
昨日一応手元でワンライナー書いてから質問したんだけど
変数名を別に定義済みの場合は暗黙的解釈は成されないんだね
変だー
776770
2018/12/17(月) 17:36:00.20ID:fClvoBXn >>771
ごめん。
「そこはまず、ハードリファレンスでしょ。Perl4 の時代に生きてるの?」
という意味です。自分でも不適切な表現だったと思う。
一応彼らの名誉のために言っとくが、回答に明確な間違いは無いと思う。
でも「${$key} の $key は何?」と聞かれて「変数名」と答えるのは
現代の Perl にそぐわないと思うの。
でももしかしたら、説明しても理解してもらえなさそうと思ったのだろうか。
ごめん。
「そこはまず、ハードリファレンスでしょ。Perl4 の時代に生きてるの?」
という意味です。自分でも不適切な表現だったと思う。
一応彼らの名誉のために言っとくが、回答に明確な間違いは無いと思う。
でも「${$key} の $key は何?」と聞かれて「変数名」と答えるのは
現代の Perl にそぐわないと思うの。
でももしかしたら、説明しても理解してもらえなさそうと思ったのだろうか。
777デフォルトの名無しさん
2018/12/17(月) 19:18:45.78ID:iB9eUrL3 質問者がなんにも知らなそうだから、「リファレンス」をあえて避けたんやろ。
778デフォルトの名無しさん
2018/12/17(月) 19:20:00.23ID:da/cFEJ/ >>772
name をリファレンスだと思う
(思うだけ。そんな文法ではない)
そうすると、そのリファレンスを$でデリファレンスしたものが$name
@でデリファレンスしたものが@name
$nameがリファレンスの場合に$でデリファレンスすると$$name なのは当たり前として、
$$$, $$$$ とどんどんデリファレンスしていける逆方向を辿ると、
$name もデリファレンスしたものだと見える
name をリファレンスだと思う
(思うだけ。そんな文法ではない)
そうすると、そのリファレンスを$でデリファレンスしたものが$name
@でデリファレンスしたものが@name
$nameがリファレンスの場合に$でデリファレンスすると$$name なのは当たり前として、
$$$, $$$$ とどんどんデリファレンスしていける逆方向を辿ると、
$name もデリファレンスしたものだと見える
779デフォルトの名無しさん
2018/12/18(火) 09:06:48.26ID:eR20sfLy780デフォルトの名無しさん
2018/12/27(木) 15:34:57.10ID:6u25HEJq 入力文字に$記号を含むパターンマッチについての質問
<input type="text" name="word">という入力フォームで$を入力して送信する
$form_data{'word'}はそれを受け取ったデータでこの場合$記号が格納されているとする
my $data = "aaa$bbb";
if($data =~ /$form_data{'word'}/){
print "ドル記号が含まれている";
}
とするとドル記号が含まれていると表示されるけど
$data="aaabbb";としてもドル記号が含まれていると表示されてしまいます
どうしたらうまくパターンマッチできるんですか?
<input type="text" name="word">という入力フォームで$を入力して送信する
$form_data{'word'}はそれを受け取ったデータでこの場合$記号が格納されているとする
my $data = "aaa$bbb";
if($data =~ /$form_data{'word'}/){
print "ドル記号が含まれている";
}
とするとドル記号が含まれていると表示されるけど
$data="aaabbb";としてもドル記号が含まれていると表示されてしまいます
どうしたらうまくパターンマッチできるんですか?
781デフォルトの名無しさん
2018/12/27(木) 16:48:29.52ID:rm0epPGS quotemeta 使えば?
782デフォルトの名無しさん
2018/12/27(木) 17:39:49.72ID:xdSwIlO3783デフォルトの名無しさん
2018/12/27(木) 17:47:23.74ID:wqcRhsb/ > my $data = "aaa$bbb";
変数($bbb)が展開されてしまってるのでは?
変数($bbb)が展開されてしまってるのでは?
784デフォルトの名無しさん
2018/12/27(木) 17:55:58.93ID:aB5zW/KI >>780
\$
\$
785デフォルトの名無しさん
2018/12/28(金) 05:51:18.79ID:zGkqlDaV if ($data =~ /\Q$form_data{'word'}\E/) {
print "ドル記号が含まれている";
}
print "ドル記号が含まれている";
}
786デフォルトの名無しさん
2018/12/28(金) 18:58:04.24ID:Kla9dPfb ドルを含むかなら$data =~ /\$/ か$form_data{'word'} =~ /\$/ならわかるけど、
なぜ$dataと$form_data{'word'}をパターンマッチさせているのかがわからない。
なぜ$dataと$form_data{'word'}をパターンマッチさせているのかがわからない。
787デフォルトの名無しさん
2018/12/28(金) 19:19:12.35ID:PEXz027h 入力文字列を正規表現ではなくただの文字列として扱うならこっちの方が速い
if (index($data, $form_data{'word'}) >= 0) {
if (index($data, $form_data{'word'}) >= 0) {
788デフォルトの名無しさん
2018/12/29(土) 10:19:08.15ID:UbMSpY+5 どのように書いたら配列の1,2,3を、それぞれ表示できるでしょうか?お願いします
sub test{
return \(1,2,3);
}
print test(); # SCALAR(0x169bc48)SCALAR(0x169bca8)SCALAR(0x169bc90)
print ${test()}; # 3
sub test{
return \(1,2,3);
}
print test(); # SCALAR(0x169bc48)SCALAR(0x169bca8)SCALAR(0x169bc90)
print ${test()}; # 3
789デフォルトの名無しさん
2018/12/29(土) 10:57:10.93ID:mEoLSW4X sub test{
return \[1,2,3];
}
$" = ',';
print "@${test()}\n";
use Data::Dumper;
print Dumper(test());
return \[1,2,3];
}
$" = ',';
print "@${test()}\n";
use Data::Dumper;
print Dumper(test());
790デフォルトの名無しさん
2018/12/29(土) 11:13:23.47ID:Q3TbjvxP #これが基本
@array = (1, 2, 3);
print "@array", "\n";
#戻り値にするなら
sub func1 {
my @array = (1, 2, 3);
return \@array;
}
print "@{func1()}", "\n";
#無名の場合
sub func2 {
return [1, 2, 3];
}
print "@{func2()}", "\n";
@array = (1, 2, 3);
print "@array", "\n";
#戻り値にするなら
sub func1 {
my @array = (1, 2, 3);
return \@array;
}
print "@{func1()}", "\n";
#無名の場合
sub func2 {
return [1, 2, 3];
}
print "@{func2()}", "\n";
791デフォルトの名無しさん
2018/12/29(土) 11:19:02.45ID:UbMSpY+5 >>789 レスどうもです。
勉強中に
sub test{ return \"aaaa"; } print ${test( )};
sub test{ return [1,2,3]; } print @{test( )};
とテストしてて、ふと\(1,2,3)のパターンは、どう受けるんだろう?と悩んでます。
リストだとオート変数で消えるのかな?とか、
リスト→スカラー変数で最後の3しか受けれないのかな?などと考える程度で、さっぱり仕様がわかってません。
あと、
my $data="aaaaa";
my $test= $data=~ tr/a/b/;
print $test;
これもイケそうでイケなかったので悩んでます。
----と書いてるところでログ更新したら790を見ました。
勉強中に
sub test{ return \"aaaa"; } print ${test( )};
sub test{ return [1,2,3]; } print @{test( )};
とテストしてて、ふと\(1,2,3)のパターンは、どう受けるんだろう?と悩んでます。
リストだとオート変数で消えるのかな?とか、
リスト→スカラー変数で最後の3しか受けれないのかな?などと考える程度で、さっぱり仕様がわかってません。
あと、
my $data="aaaaa";
my $test= $data=~ tr/a/b/;
print $test;
これもイケそうでイケなかったので悩んでます。
----と書いてるところでログ更新したら790を見ました。
792デフォルトの名無しさん
2018/12/29(土) 11:24:43.16ID:UbMSpY+5 なるほど、これはダメですね。
print Dumper($data=~ tr/a/b/); #5
print Dumper($data=~ tr/a/b/); #5
793デフォルトの名無しさん
2018/12/29(土) 11:40:12.74ID:JLECNNE+794デフォルトの名無しさん
2018/12/29(土) 11:45:55.56ID:UbMSpY+5 いまテストしてました。
>>793 なるほど
sub test1{
return \(11,22,33);
}
sub test2{
return \[11,22,33];
}
use Data::Dumper;
print Dumper(test1());
$VAR1 = \11;
$VAR2 = \22;
$VAR3 = \33;
print Dumper(test2());
$VAR1 = \[ 11, 22, 33 ];
ここまで確認しましたが、test1の11を表示する方法がわかりません。
よろしくお願いします。
>>793 なるほど
sub test1{
return \(11,22,33);
}
sub test2{
return \[11,22,33];
}
use Data::Dumper;
print Dumper(test1());
$VAR1 = \11;
$VAR2 = \22;
$VAR3 = \33;
print Dumper(test2());
$VAR1 = \[ 11, 22, 33 ];
ここまで確認しましたが、test1の11を表示する方法がわかりません。
よろしくお願いします。
795デフォルトの名無しさん
2018/12/29(土) 11:56:22.23ID:JY4FTrNS リファレンスが何を表しているのか理解しよう
$var = 11;
$ref = \$var;
say $var
say \$var;
say $ref;
say $$ref;
say ${$ref};
$var = 11;
$ref = \$var;
say $var
say \$var;
say $ref;
say $$ref;
say ${$ref};
796デフォルトの名無しさん
2018/12/29(土) 12:30:51.49ID:UbMSpY+5 下記の test2() は動きます。
でもこれだと@aと@bの@が目印程度の意味しかないのかな?と思ってしまいます。
sub test1{
return (11,22,33);
}
sub test2{
return \(11,22,33);
}
use Data::Dumper;
print Dumper(test1());
print Dumper(test2());
@a=test1();
print $a[0]; # 11
@b=test2();
print ${$b[0]}; # 11
でもこれだと@aと@bの@が目印程度の意味しかないのかな?と思ってしまいます。
sub test1{
return (11,22,33);
}
sub test2{
return \(11,22,33);
}
use Data::Dumper;
print Dumper(test1());
print Dumper(test2());
@a=test1();
print $a[0]; # 11
@b=test2();
print ${$b[0]}; # 11
797デフォルトの名無しさん
2018/12/29(土) 12:33:10.04ID:UbMSpY+5 上が動くのに、下が動きません。
@b=test2();
print ${$b[0]}; # 11
print ${test2()[0]}; #動きません
@b=test2();
print ${$b[0]}; # 11
print ${test2()[0]}; #動きません
798デフォルトの名無しさん
2018/12/29(土) 12:59:01.67ID:N37bA3c4 print ${(test2())[0]};
799デフォルトの名無しさん
2018/12/29(土) 13:09:45.93ID:UbMSpY+5 >>798
ありがとうございます。やっと書き方がわかりました
もう1つ質問がありますので書きます。
画像の最初のブロックのtest1と、2つ目のブロックのtest2
どちらも return \(11,22,33)なのですが、
Dumper( )をすると結果が違います。何故でしょうか?
ブロックスコープの扱いを間違えてるとか、根本的な間違えはあるでしょうか?
https://i.imgur.com/HpjnvGf.png
ありがとうございます。やっと書き方がわかりました
もう1つ質問がありますので書きます。
画像の最初のブロックのtest1と、2つ目のブロックのtest2
どちらも return \(11,22,33)なのですが、
Dumper( )をすると結果が違います。何故でしょうか?
ブロックスコープの扱いを間違えてるとか、根本的な間違えはあるでしょうか?
https://i.imgur.com/HpjnvGf.png
800デフォルトの名無しさん
2018/12/29(土) 13:27:10.67ID:mEoLSW4X >>794のDumperの結果見ればわかるけど
\(11,22,33);
は
(\11,\22,\33);
と書くのと同じで配列のリファレンスではなく中身をリファレンス化して作った配列
上でぼけてて\[1,2,3]なんて書いちゃったけど…[11,22,33]が配列のリファレンス
\(11,22,33);
は
(\11,\22,\33);
と書くのと同じで配列のリファレンスではなく中身をリファレンス化して作った配列
上でぼけてて\[1,2,3]なんて書いちゃったけど…[11,22,33]が配列のリファレンス
801デフォルトの名無しさん
2018/12/29(土) 13:38:48.59ID:UbMSpY+5 イメージはわかりました。先ほどのtest2( )を更に( )で囲んでからの[0]は気づきませんでしたが。
return ポインタのポインタ
↓
(ポインタ、ポインタ、ポインタ) → 実体11,22,33
return ポインタのポインタ
↓
(ポインタ、ポインタ、ポインタ) → 実体11,22,33
802デフォルトの名無しさん
2018/12/29(土) 13:47:25.71ID:JY4FTrNS 配列とリストが違う概念っていうのはわかりにくいよね
@array
(1, 2, 3)
@array
(1, 2, 3)
803デフォルトの名無しさん
2018/12/29(土) 14:17:08.53ID:Q3TbjvxP \( ... ) なんて書き方はどんな時に使うんだろう
804デフォルトの名無しさん
2018/12/29(土) 19:13:44.30ID:JLECNNE+ >>802
Perl5で配列とリストは同じ意味だろ。
Perl5で配列とリストは同じ意味だろ。
805デフォルトの名無しさん
2018/12/29(土) 19:19:17.64ID:JLECNNE+806デフォルトの名無しさん
2018/12/30(日) 08:38:58.47ID:d/kczs// >>804
($a, $b, $c) = (11, 22, 33);
scalar ($a, $b, $c) == 33; # リストの最後の要素
@array = ($a, $b, $c);
scalar @array == 3; # 配列の要素数
($a_ref, $b_ref, $c_ref) = \($a, $b, $c); # 各要素のリファレンスのリスト
$array_ref = \@array; # 配列変数のリファレンス
>>805
$$list[0] は ${ $list }[0] だから $list->[0] と同じ (リファレンスが指す配列の0番めの要素)
$a にアクセスしたいなら ${ $list[0] } (配列の0番めの要素をデリファレンス)
($a, $b, $c) = (11, 22, 33);
scalar ($a, $b, $c) == 33; # リストの最後の要素
@array = ($a, $b, $c);
scalar @array == 3; # 配列の要素数
($a_ref, $b_ref, $c_ref) = \($a, $b, $c); # 各要素のリファレンスのリスト
$array_ref = \@array; # 配列変数のリファレンス
>>805
$$list[0] は ${ $list }[0] だから $list->[0] と同じ (リファレンスが指す配列の0番めの要素)
$a にアクセスしたいなら ${ $list[0] } (配列の0番めの要素をデリファレンス)
807デフォルトの名無しさん
2018/12/30(日) 08:50:22.81ID:d/kczs// いい記事があった
「リストと配列(Array)はPerlでは別物」
ttps://togetter.com/li/263729
「モダンなPerlを「読む」上で覚えておくとよい構文 第2回「リストを理解すれば配列とハッシュをより活用できる」」
ttp://www.songmu.jp/riji/archives/2010/09/perl_2_1.html
「リストと配列(Array)はPerlでは別物」
ttps://togetter.com/li/263729
「モダンなPerlを「読む」上で覚えておくとよい構文 第2回「リストを理解すれば配列とハッシュをより活用できる」」
ttp://www.songmu.jp/riji/archives/2010/09/perl_2_1.html
808デフォルトの名無しさん
2018/12/30(日) 08:53:03.67ID:x1KM9vdn 列挙してまとめてリファレンスなんか取ることあるか?
数が多いなら普通はループにすることを考える
3つくらいなら普通に書けばいい
何かの関数の引数にリファレンスでいっぱい渡すくらいしか思いつかないけど、
そんなインターフェースがそもそも間違ってるし可読性も下がる
そんな書き方は無いものと思って使わないのが吉
数が多いなら普通はループにすることを考える
3つくらいなら普通に書けばいい
何かの関数の引数にリファレンスでいっぱい渡すくらいしか思いつかないけど、
そんなインターフェースがそもそも間違ってるし可読性も下がる
そんな書き方は無いものと思って使わないのが吉
809デフォルトの名無しさん
2018/12/30(日) 08:53:43.65ID:/wKH6dhf リスト・・・複数の値
配列・・・複数の値が入ってるオブジェクト
ようするにこんだけだろ?
配列・・・複数の値が入ってるオブジェクト
ようするにこんだけだろ?
810デフォルトの名無しさん
2018/12/30(日) 08:56:13.19ID:/wKH6dhf Perlにとってオブジェクト指向は
頑張ってオブジェクトに見えるものを作り出すもので
オプショナルな存在だから
リストと配列の違いをシンプルに説明できないんだろうな
頑張ってオブジェクトに見えるものを作り出すもので
オプショナルな存在だから
リストと配列の違いをシンプルに説明できないんだろうな
811デフォルトの名無しさん
2018/12/30(日) 09:00:51.60ID:x1KM9vdn オブジェクト指向だと言うにはカプセル化は必須で、
メンバ変数をダイレクトにいじるとかやっちゃ駄目な筈なんだけど、
その方が便利だから普通にやってる
$obj->setval($val);
$obj->{val} = $val;
一緒やん
メンバ変数をダイレクトにいじるとかやっちゃ駄目な筈なんだけど、
その方が便利だから普通にやってる
$obj->setval($val);
$obj->{val} = $val;
一緒やん
812デフォルトの名無しさん
2018/12/30(日) 09:06:23.51ID:/wKH6dhf > オブジェクト指向だと言うにはカプセル化は必須で、
必須じゃないよ。てか必須なものなんて無い
オブジェクト指向言語というのは
オブジェクト指向を行うために用意された文法がある。
条件はこれだけ
必須じゃないよ。てか必須なものなんて無い
オブジェクト指向言語というのは
オブジェクト指向を行うために用意された文法がある。
条件はこれだけ
813デフォルトの名無しさん
2018/12/30(日) 10:57:52.01ID:d/kczs// アンダースコアから始まるメンバ変数はプライベートなので外側から触ってはいけません
よしカプセル化できたな!!!
よしカプセル化できたな!!!
814デフォルトの名無しさん
2018/12/30(日) 11:50:53.97ID:iF2NHAVN >>813
カプセル化か? ・・・ YES 命名規則によるカプセル化
カプセル化か? ・・・ YES 命名規則によるカプセル化
815615
2018/12/31(月) 00:31:18.84ID:Hr+PmI8P Perlのオブジェクト指向??は記述がちょっと変体言語風な見た目だけれど
Cのstructを拡張したような型クラス+継承に基づく言語よりも
propertyベースOOP+mixinのような柔軟な表現が出来て
良いんじないかと俺は思う
Cのstructを拡張したような型クラス+継承に基づく言語よりも
propertyベースOOP+mixinのような柔軟な表現が出来て
良いんじないかと俺は思う
816デフォルトの名無しさん
2018/12/31(月) 00:44:01.46ID:LUt0Quvy gotoは柔軟だから優れていると言っているようなもので、
何でも出来る = 優れている ・・・ これは間違いなんだよ
アセンブラという何でも出来る言語から進化し、
特定の用途の「パターン」を見つけて抜き出し、
そのパターンを専用の文法にしてきた。
特定の用途専用(=柔軟性がない)の文法があることで
書き方が統一できるし、何がしたいのかという意図を
他人に伝えることが出来る
何でも出来る = 優れている ・・・ これは間違いなんだよ
アセンブラという何でも出来る言語から進化し、
特定の用途の「パターン」を見つけて抜き出し、
そのパターンを専用の文法にしてきた。
特定の用途専用(=柔軟性がない)の文法があることで
書き方が統一できるし、何がしたいのかという意図を
他人に伝えることが出来る
817615
2018/12/31(月) 01:09:11.59ID:Hr+PmI8P 制限の方向性が弊害を持っているのに
広く普及しちゃうと悲惨なことになる
広く普及しちゃうと悲惨なことになる
818デフォルトの名無しさん
2018/12/31(月) 01:10:55.58ID:LUt0Quvy それでPerlのオブジェクト指向、mooseとかどうなりましたか?
820615
2018/12/31(月) 01:13:48.73ID:Hr+PmI8P JavaもCOBOLみたいな立ち位置になるだろうし
821デフォルトの名無しさん
2018/12/31(月) 01:16:04.10ID:LUt0Quvy >>819
そうなるやろ?
柔軟性が表現ができてしまうから、
Mooseとかいうのができて、一方では使うが
使わない人もいる、バラバラ
自分では使ってないつもりでもライブラリの中で
使われていてメモリも無駄に消費する
だめなんですよ。柔軟だけど機能が足りないというのは。
そうなるやろ?
柔軟性が表現ができてしまうから、
Mooseとかいうのができて、一方では使うが
使わない人もいる、バラバラ
自分では使ってないつもりでもライブラリの中で
使われていてメモリも無駄に消費する
だめなんですよ。柔軟だけど機能が足りないというのは。
822デフォルトの名無しさん
2018/12/31(月) 08:07:22.77ID:C6w6M91j TMTOWTDI は正義。
823615
2018/12/31(月) 10:01:45.42ID:2dwmQiqr Mooseは他の言語のようなOOPをPerlに持ち込んでどっちつかずの立ち位置になってしまった。
Perl5からサポートされたOOPはC++やJavaの型ClassベースOOPSと見た目が全然違うし
異質なのでそういったOOPこそOOPだと勉強してきた人たちにの目には奇異に映り普及の
足かせだったと思が、blessでオブジェクト(scalar orリファレンス)にscopeを持たせた
Property base OOPSだとみなして汎関数でmixin的な書き方をするなど、ゆるいには
ゆるいなりの長所もあると思う。これはPythonのOOPSのゆるさとも通じるところがあると思う。
性能に関してはC++のような最下層でも効率的なものではないし、Property baseという
特徴から見ても、中間レイヤ・グレインで使うのに適した仕組みだと考えていますが
Perl5からサポートされたOOPはC++やJavaの型ClassベースOOPSと見た目が全然違うし
異質なのでそういったOOPこそOOPだと勉強してきた人たちにの目には奇異に映り普及の
足かせだったと思が、blessでオブジェクト(scalar orリファレンス)にscopeを持たせた
Property base OOPSだとみなして汎関数でmixin的な書き方をするなど、ゆるいには
ゆるいなりの長所もあると思う。これはPythonのOOPSのゆるさとも通じるところがあると思う。
性能に関してはC++のような最下層でも効率的なものではないし、Property baseという
特徴から見ても、中間レイヤ・グレインで使うのに適した仕組みだと考えていますが
824デフォルトの名無しさん
2018/12/31(月) 10:15:50.03ID:0rbvsgzk オブジェクト指向は結果オブジェクト指向なだけでやりたいことはオブジェクト指向じゃない
同じこと何度も書きたくないからライブラリ化したいだけで、
一旦ライブラリにしたら極力中身のことを忘れていいようにしたいだけ
どこまで忘れていいかは実装のセンスに依るので、言語仕様は関係ない
同じこと何度も書きたくないからライブラリ化したいだけで、
一旦ライブラリにしたら極力中身のことを忘れていいようにしたいだけ
どこまで忘れていいかは実装のセンスに依るので、言語仕様は関係ない
825デフォルトの名無しさん
2018/12/31(月) 10:44:08.74ID:LUt0Quvy > Mooseは他の言語のようなOOPをPerlに持ち込んでどっちつかずの立ち位置になってしまった。
PerlにOOPの機能が不足してるからそうなるわけだよ
PerlにOOPの機能が不足してるからそうなるわけだよ
826デフォルトの名無しさん
2018/12/31(月) 10:45:08.33ID:LUt0Quvy827デフォルトの名無しさん
2018/12/31(月) 12:37:43.61ID:C6w6M91j >>826
己れの方こそ嘘つきだな
「証明もされてないことを言った」つまり真実か嘘か判定不能な段階なのに「嘘つき」のレッテル貼りとか
TMTOWTDI はPerlの基本方針でありPerlをPerlたらしめている特徴であり
しばしばPerlを好み愛用し続ける者にとってはその大きい理由でもある
ゆえに「TMTOWTDI は正義」である
己れの方こそ嘘つきだな
「証明もされてないことを言った」つまり真実か嘘か判定不能な段階なのに「嘘つき」のレッテル貼りとか
TMTOWTDI はPerlの基本方針でありPerlをPerlたらしめている特徴であり
しばしばPerlを好み愛用し続ける者にとってはその大きい理由でもある
ゆえに「TMTOWTDI は正義」である
828デフォルトの名無しさん
2018/12/31(月) 14:40:49.82ID:/9F0EQIO >>825
具体的に、不足してる機能は?
具体的に、不足してる機能は?
829デフォルトの名無しさん
2018/12/31(月) 17:58:26.87ID:LUt0Quvy >>828
オブジェクト指向を行うための標準的な方法
オブジェクト指向を行うための標準的な方法
830615
2018/12/31(月) 21:31:35.63ID:4xTPjQJE 型クラス+継承を使ったオブジェクト指向は
モジュラリティーや依存の観点からソフトウェア工学的に害が見られるので
オレはなるべく使わないようにしている
モジュラリティーや依存の観点からソフトウェア工学的に害が見られるので
オレはなるべく使わないようにしている
831デフォルトの名無しさん
2018/12/31(月) 22:05:38.48ID:0rbvsgzk クラス設計して継承して、みたいなのは人間の能力を越えてる
継承も抽象度を高めたいとかそんな大層な目的じゃなくて、
やっぱり同じこと何度も書きたくないからやってるだけで、
よっぽど汎用性の高い概念なら継承でうまくいくかもしれんけど、
そんなんは最初から内蔵されてるのが普通
継承も抽象度を高めたいとかそんな大層な目的じゃなくて、
やっぱり同じこと何度も書きたくないからやってるだけで、
よっぽど汎用性の高い概念なら継承でうまくいくかもしれんけど、
そんなんは最初から内蔵されてるのが普通
832デフォルトの名無しさん
2018/12/31(月) 22:42:10.76ID:LUt0Quvy833デフォルトの名無しさん
2018/12/31(月) 22:42:33.80ID:LUt0Quvy × クラス設計して継承して、みたいなのは人間の能力を越えてる
○ クラス設計して継承して、みたいなのは>>831の能力を越えてる
○ クラス設計して継承して、みたいなのは>>831の能力を越えてる
835デフォルトの名無しさん
2018/12/31(月) 23:07:29.74ID:0rbvsgzk ヒント : 日付
836デフォルトの名無しさん
2018/12/31(月) 23:09:17.73ID:LUt0Quvy838615
2018/12/31(月) 23:16:34.16ID:6bMDAT8f >829 名前:デフォルトの名無しさん[sage] 投稿日:2018/12/31(月) 17:58:26.87 ID:LUt0Quvy
>>828
>オブジェクト指向を行うための標準的な方法
それをperlに求めるのは筋違いだろ。
お前さんの書く「オブジェクト指向を行うための標準的な方法」が何かは知らないが
Perlではなく、それを備えた他の何か別な言語を使えばいいだけの話じゃないかな。
>>828
>オブジェクト指向を行うための標準的な方法
それをperlに求めるのは筋違いだろ。
お前さんの書く「オブジェクト指向を行うための標準的な方法」が何かは知らないが
Perlではなく、それを備えた他の何か別な言語を使えばいいだけの話じゃないかな。
839デフォルトの名無しさん
2019/01/01(火) 00:42:39.69ID:WFGHAbKk840デフォルトの名無しさん
2019/01/01(火) 00:44:50.00ID:WFGHAbKk841デフォルトの名無しさん
2019/01/01(火) 01:07:42.37ID:dsnk2i9g842デフォルトの名無しさん
2019/01/01(火) 01:31:46.17ID:WFGHAbKk そのやり方が不足しているために、いろんなやり方ができてしまって
混乱してるって話をず〜っとしてるんだが
混乱してるって話をず〜っとしてるんだが
843デフォルトの名無しさん
2019/01/01(火) 01:44:48.23ID:WFGHAbKk 混乱じゃないな。混沌か。
844デフォルトの名無しさん
2019/01/01(火) 03:40:45.46ID:qrGSiep2 それがPerl。
いろんなやりかたがあってもいい。
イヤならPythonでもRubyでもどうぞ。
いろんなやりかたがあってもいい。
イヤならPythonでもRubyでもどうぞ。
845デフォルトの名無しさん
2019/01/01(火) 04:42:46.75ID:WFGHAbKk >>844
嫌とは言ってないよ
Perlはオブジェクト指向をやるときに標準なやり方がないので
人やライブラリによって書き方が異なる
最小限の機能しか持っていないため、書き方が煩雑になる。
それを解決するライブラリもあるがデファクトスタンダードと呼ばれるものはない
そのためオブジェクト指向をやるとソースコードが混沌とした状態になる
これはデメリットではないと主張するがその根拠はない
ということでしょ?
嫌とは言ってないよ
Perlはオブジェクト指向をやるときに標準なやり方がないので
人やライブラリによって書き方が異なる
最小限の機能しか持っていないため、書き方が煩雑になる。
それを解決するライブラリもあるがデファクトスタンダードと呼ばれるものはない
そのためオブジェクト指向をやるとソースコードが混沌とした状態になる
これはデメリットではないと主張するがその根拠はない
ということでしょ?
846615
2019/01/01(火) 06:56:08.14ID:wEmHEx+3 Javaのオブジェクト指向じゃダメだからいろんなオブジェクト指向の言語が乱立しているのに
847615
2019/01/01(火) 07:05:33.16ID:wEmHEx+3 Perlは記述に拡張性があるから、
幾つかのオブジェクト指向の仕組みを拡張しようという流れが出たのは
自然なことで、宿命みたいなものだよ
幾つかのオブジェクト指向の仕組みを拡張しようという流れが出たのは
自然なことで、宿命みたいなものだよ
848デフォルトの名無しさん
2019/01/01(火) 09:32:39.73ID:qcGL6dxE うん。だからいろんなやり方が出て混沌状態になった。
駄目とは言ってないよ。
混沌状態になるといってるだけ
駄目とは言ってないよ。
混沌状態になるといってるだけ
849デフォルトの名無しさん
2019/01/01(火) 16:14:48.46ID:O6bdw0M8850615
2019/01/01(火) 18:05:00.64ID:XbYa03OK 混沌は別に悪いことばかりではないし、
まぁ趣旨換えしたようだからそっとしておきましょう
まぁ趣旨換えしたようだからそっとしておきましょう
851788
2019/01/07(月) 11:29:47.54ID:44u2lGi3 また教えてください。おねがいします。
1、下記のようなコードで aliasみたいなことはできないのでしょうか?
2、直接リファレンスをリストとして受けれるでしょうか?
元のコード(動く)
sub append {
my ($tbl, $data) = @_;
push(@$tbl, $data);
}
my @list;
append(\@list, 10);
append(\@list, 20);
1、$pから別名@tblを作りたい
sud append{
my ($p, $data) =@_;
my @tbl=
push(@tbl, $data);
}
2、リファレンスを直接リストのポインタとして受けたい
sub append {
my (@tbl, $data) = @_;
1、下記のようなコードで aliasみたいなことはできないのでしょうか?
2、直接リファレンスをリストとして受けれるでしょうか?
元のコード(動く)
sub append {
my ($tbl, $data) = @_;
push(@$tbl, $data);
}
my @list;
append(\@list, 10);
append(\@list, 20);
1、$pから別名@tblを作りたい
sud append{
my ($p, $data) =@_;
my @tbl=
push(@tbl, $data);
}
2、リファレンスを直接リストのポインタとして受けたい
sub append {
my (@tbl, $data) = @_;
852デフォルトの名無しさん
2019/01/07(月) 13:11:23.07ID:44u2lGi3 なんとか1を出来ないものかとやってみても、
@tbl=@{$p};だと実体のコピーだし、\@tbl=\@{$p};これじゃあエラーだし、
2も同じか・・・きっと、ダメなんですね
@tbl=@{$p};だと実体のコピーだし、\@tbl=\@{$p};これじゃあエラーだし、
2も同じか・・・きっと、ダメなんですね
853デフォルトの名無しさん
2019/01/07(月) 17:42:31.40ID:sY/RJhpW my (@tbl, $data) = @_;
は全部 @tbl に入っちゃうから…
あと、パッケージ変数を使えば
my @a0 = qw( a b c );
our @a1;
*a1 = \@a0;
みたいなこともできるけど。
my 変数で同じことをするモジュールもあったような気が…
は全部 @tbl に入っちゃうから…
あと、パッケージ変数を使えば
my @a0 = qw( a b c );
our @a1;
*a1 = \@a0;
みたいなこともできるけど。
my 変数で同じことをするモジュールもあったような気が…
854デフォルトの名無しさん
2019/01/07(月) 18:14:18.86ID:44u2lGi3 >>853
レスありがとうございます。perlだと、このぐらいまでなんですね。(ポインタ)
レスありがとうございます。perlだと、このぐらいまでなんですね。(ポインタ)
855デフォルトの名無しさん
2019/01/07(月) 19:02:01.15ID:fnTlHl64 型グロブが使えるとは思うが素直に参照渡しした方が分かりやすくてよいと思う。
856デフォルトの名無しさん
2019/01/07(月) 20:21:54.90ID:ysTcYJUI 最近のなら、push($tbl,$data)でいいんじゃないの?
857デフォルトの名無しさん
2019/01/07(月) 22:54:34.52ID:+HHyWqnO そもそもコピーじゃなくて別名が欲しいケースがないしなあ
ttps://metacpan.org/pod/Data::Alias
>>856
これ?
ttp://perldoc.jp/docs/perl/5.24.0/perl5240delta.pod#The32autoderef32feature32has32been32removed
ttps://metacpan.org/pod/Data::Alias
>>856
これ?
ttp://perldoc.jp/docs/perl/5.24.0/perl5240delta.pod#The32autoderef32feature32has32been32removed
858デフォルトの名無しさん
2019/01/07(月) 23:09:39.45ID:06kCHHmC あれはあかんだろ
859デフォルトの名無しさん
2019/01/08(火) 13:40:47.95ID:4YYD5GZN そもそもperlにポインタという用語はないのでポインタポインタと言われても何を言いたいのかわからない
「リファレンス」と「ポインタ」と両方使ってるからリファレンスのことをポインタと呼んでるのでもないようだし
「リファレンス」と「ポインタ」と両方使ってるからリファレンスのことをポインタと呼んでるのでもないようだし
862デフォルトの名無しさん
2019/01/09(水) 12:59:04.70ID:xuLfg6C4 >>861
いや。決まってないけどだいたい5。
いや。決まってないけどだいたい5。
863デフォルトの名無しさん
2019/01/09(水) 14:07:02.03ID:Z1NH8E36 6やるなら流石にぱいそんとかるびーに行くよね
ディストリビューションのデフォルトが6になったら別だけど
ディストリビューションのデフォルトが6になったら別だけど
864デフォルトの名無しさん
2019/01/09(水) 15:16:50.41ID:YARXrpzb Perl6/Parrotスレ - Part2
https://medaka.5ch.net/test/read.cgi/php/1162721943/
Perl6のスレが無いわけでもないが、閑散としているな。
https://medaka.5ch.net/test/read.cgi/php/1162721943/
Perl6のスレが無いわけでもないが、閑散としているな。
865デフォルトの名無しさん
2019/01/09(水) 18:51:53.85ID:JvHk+PyX いろんな現場を渡り歩くからなあ
perlは無かったことが無いけど、今のとこにpythonは無い
rubyは何故かある
perlは無かったことが無いけど、今のとこにpythonは無い
rubyは何故かある
866デフォルトの名無しさん
2019/01/09(水) 22:57:14.81ID:bKnxXw4g perl はすでにGit for Windowsの一部だし。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 小川彩佳アナ「高市総理はここまで影響が出ることを想像して発言したんでしょうか」高市ソルジャー「!!!!(シュババババ)」 [931948549]
- 【悲報】おこめ券、9.5億円配布分のうち2.4億が経費、うちJAが1億円中抜き🤗高市ありがとう [359965264]
- FGOで好きなサーヴァントがアビゲイル、北斎、楊貴妃なんだが
- 【悲報】高市有事で日本に同調する国、1つも現れないwwwwwwwwwwwwwww [603416639]
- 自閉症が「んなっしょい」と連呼するお🏡
