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


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

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



1 名前:デフォルトの名無しさん [2014/02/19(水) 23:36:23.29 .net]
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: kohada.2ch.net/php/

このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。

"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

www.perl.org/get.html
Download Latest Stable Source (5.18.2)

▼前スレ
Perlについての質問箱 61箱目
toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
toro.2ch.net/test/read.cgi/tech/1385039352/

2 名前:デフォルトの名無しさん [2014/02/19(水) 23:37:34.89 .net]
【本】
初めてのPerl 第6版(リャマ)[2012年07月 発行]
www.oreilly.co.jp/books/9784873115672/

続・初めてのPerl 改訂第2版 [2013年08月 発行]
www.oreilly.co.jp/books/9784873116280/

マスタリングPerl [2009年03月 発行]
www.oreilly.co.jp/books/9784873113975/

もっと自在にサーバを使い倒す 業務に役立つPerl [2012年4月11日発売]
gihyo.jp/book/2012/978-4-7741-5025-3

モダンPerl入門 [2009/2/10]
www.amazon.co.jp/exec/obidos/ASIN/4798119172/secodezine-22/
モダンPerl入門 増補改訂版(仮)[2014年1月予定]
codezine.jp/book/modernperl2

Perl CPANモジュールガイド [2011/4/8]
www.amazon.co.jp/dp/486267108X

【オンライン

3 名前:マニュアル】
最新のドキュメント: http://search.cpan.org/dist/perl/
perldoc.jp: http://perldoc.jp/
perldoc.perl.org: http://perldoc.perl.org/
[]
[ここ壊れてます]

4 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 23:38:16.54 .net]
[少し古めの良書]

プログラミングPerl 第3版 VOLUME 1,2(駱駝)[2002年09月 発行]
www.oreilly.co.jp/books/4873110963/
www.oreilly.co.jp/books/4873110971/

Perlクックブック 第2版 VOLUME 1,2 [2004年09月 発行]
www.oreilly.co.jp/books/4873112028/

Perl ベストプラクティス [2006年08月 発行]
www.oreilly.co.jp/books/4873113008/

Perl Hacks [2007年01月 発行]
www.oreilly.co.jp/books/9784873113142/

実用 Perlプログラミング 第2版 [2006年03月 発行]
www.oreilly.co.jp/books/487311280X/

5 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 23:38:56.41 .net]
【日本語、Unicode関連】

Encodeモジュール
search.cpan.org/dist/Encode/

第31回 encoding:いつまでもjperlから抜け出せない方に
gihyo.jp/dev/serial/01/modern-perl/0031

第32回 Encode:日本語だけ扱えればよいのではなく
gihyo.jp/dev/serial/01/modern-perl/0032

perlunifaq - Perl Unicode FAQ
perldoc.jp/docs/perl/5.18.1/perlunifaq.pod

perlunicode - Perl における Unicode サポート
perldoc.jp/docs/perl/5.12.1/perlunicode.pod

www.rwds.net/kuroita/program/Perl_unicode.html

【モジュール】
CPAN.com: search.cpan.org/

【Perl環境構築】
plenv
https://github.com/tokuhirom/plenv

cpanm
search.cpan.org/~miyagawa/App-cpanminus-1.7001/lib/App/cpanminus.pm
perldoc.jp/docs/modules/App-cpanminus-1.7001/lib/App/cpanminus/fatscript.pod

6 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 23:39:35.34 .net]
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。

7 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 23:46:41.13 .net]
糞スレいくつも立ててんじゃねーよ
いい加減にしろ

toro.2ch.net/test/read.cgi/tech/1392639772/

8 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 23:48:52.70 .net]
■推移
ttp://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

2013.Dec 1.072%
2014.Jan 0.917%
2014.Feb 0.887%


■推移グラフ
ttp://www.tiobe.com/index.php/content/paperinfo/tpci/Perl.html


■Perlの今後
他言語に対する優位性がほとんどないため、消滅に向かって進んでいる。
近い将来消えるのは確実。

9 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 01:15:48.35 .net]
TIOBEって日本じゃほとんど聞いたことがないよね?Perlは日本語をちゃんと処理
できる数少ない処理系だから、海外とは状況が違うと思うんだよね

10 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 01:40:45.62 .net]
自分がほとんど聞いたことがないという無知っぷりを晒しつつ
その前提で語る基地害がPerl厨



11 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 02:48:27.42 .net]
乱立してる統計サイトの内の一つで、たいしたサイトじゃない。

langpop.com/
こんなサイトもあって、今話題に登ってる言語の項目とか見たら
PHPもPerlも似たりよったり。

こんなもんに一喜一憂するのはアホのする事。
#別に「Perlが落ち目じゃない」と主張するつもりも、毛頭無い。

12 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 03:30:30.50 .net]
乱立といえばム板にスレッド乱立させてるPerl厨みたいだな
いい加減迷惑なんだよゴキブリ共
消滅寸前のゴミ言語にこんなにスレッドは必要ない

Perlについて
toro.2ch.net/test/read.cgi/tech/1217851121/

【モダン推奨】Perlについての質問箱 50箱目
toro.2ch.net/test/read.cgi/tech/1327110999/

Perl初心者スレ(マジレス回答)
toro.2ch.net/test/read.cgi/tech/1349538519/

Perlについての罵倒スレ 63箱目
toro.2ch.net/test/read.cgi/tech/1392639772/

Perlについての質問箱 63箱目
toro.2ch.net/test/read.cgi/tech/1392820583/

13 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 07:42:53.27 .net]
WebProgの方で、その活動すれば?
そのスレの内三つは荒しが立てたスレだし、Perlと名前が入るスレ自体も10個しかないけど
向うには両手に余るくらいのスレは乱立してるぞ。

14 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 11:23:00.57 .net]
久々の正式なスレ立て乙

個人的には「ミニマルPerl」が俺の目を覚ましてくれた本だなあ
まあ、解ってる人には間違いなく退屈な本だけれども

15 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 16:17:33.48 .net]
スレ乱立のうちの1つだから全く乙じゃない
ただの迷惑行為

16 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 00:39:44.03 .net]
重複によりこのスレには削除依頼が出されました
↓のスレに移動してください

【誘導】
Perlについての質問箱 63箱目
toro.2ch.net/test/read.cgi/tech/1392906213/

17 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 00:46:22.39 .net]
【プログラミング自体の経験が無い奴はまずココを読め]】
Perl プログラミング講座: ttp://nyx.pu1.net/

【本】
リャマ: ttp://www.oreilly.co.jp/books/4873112575/
駱駝: ttp://www.oreilly.co.jp/books/4873112869/
Effective Perl: ttp://www.c-r.com/book/detail/888
クックブック: ttp://gihyo.jp/book/2012/978-4-7741-4972-1
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/9784873113425/
Perl Hacks: ttp://www.oreilly.co.jp/books/4873112915/

【オンラインマニュアル】
最新のドキュメント: ttp://blog.livedoor.jp/kumagai_nori/archives/52255109.html
perldoc.jp: ttp://bg.pi-ppi.com/
perldoc.perl.org: ttp://manual.xwd.jp/

18 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 15:41:53.76 .net]
例のPHP厨毒の精神異常者がスレを乱立させてから動きがパッタリやんだが、規制食らったのか?
それとも夜に活動が再開されるのか?

19 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 15:48:29.84 .net]
乱立させてたのってPHPユーザーなの?

てっきりPerl厨だと思ってたんだけど。
スレ乱立とか頭の悪いことをするのはPerlを選ぶような知能の低いPerl厨くらいしかいないだろ。

20 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 16:10:45.03 .net]
php厨()とか妄想をベースに考えるから、事実と整合性が取れなくなって>>17みたいな書き込みをするようになる
というかその不整合からくる違和感に耐えられなくなって書き込んでるって言ったほうが正解か
>>17は自覚がないみたいだけど糖質の疑いがある



21 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 17:14:07.34 .net]
自演乙

22 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 17:39:17.06 .net]
>>17
糖質も発見が早ければ投薬で治療できるから病院行ってみたら?

23 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 18:43:53.70 .net]
自己紹介乙

24 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 19:36:32.84 .net]
>>17ってまさか本当に自覚ないのかな。

25 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 19:39:12.82 .net]
>>23
>>23

26 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 22:00:12.92 .net]
自覚があれば病院行くだろうし
糖質と診断されればネットは控えろと言われるだろうから
こんなところにはいない

27 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 22:18:44.98 .net]
罵倒スレのほうが内容にマッチしてるじゃん、何でわざわざ質問箱で立て直したの?

28 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 02:27:43.89 .net]
Perl厨にとってはこれが質疑応答なんだよ

29 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 08:57:46.27 .net]
朝勃ちんこ

30 名前:デフォルトの名無しさん mailto:sage [2014/02/24(月) 19:35:06.10 .net]
Perl=ちんこ言語

男のちんこをしゃぶれない弱輩には使いこなせない言語



31 名前:デフォルトの名無しさん [2014/08/23(土) 00:49:39.55 ID:j4ngjv2t.net]
ぐろ

32 名前:デフォルトの名無しさん mailto:sage [2014/09/05(金) 22:30:13.20 ID:S+Rzc4u+.net]
>>30
グロ

33 名前:デフォルトの名無しさん mailto:sage [2014/09/05(金) 23:11:47.51 ID:p4jkMY4H.net]
亀頭?

34 名前:デフォルトの名無しさん [2014/12/11(木) 16:19:01.34 ID:OlwBDLMK.net]
perl 5(v5.16.3)で
d.hatena.ne.jp/syohex/20110616/1308237655
を走らせると
BEGIN not safe after errors--compilation aborted at ~/op.pl line 16.
と止まってしまいます。
解決策を教えてください。

35 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 17:08:56.68 ID:aWaBOmKM.net]
>>33
OSは何?

36 名前:デフォルトの名無しさん [2014/12/13(土) 11:26:51.16 ID:sck7BTkh.net]
MacOSX1068です

37 名前:名無しさん@そうだ選挙に行こう mailto:sage [2014/12/13(土) 13:22:37.60 ID:toJAZvUP.net]
>>35
mac持ってないから試せないけど、一応これで動くんじゃないかと。
adhocな対応でセキュリティ考えてないから注意してね。

open my $fh, '<', \(my $dmy = `@cmd`) or die "Can't exec @cmd";

38 名前:名無しさん@そうだ選挙に行こう [2014/12/13(土) 13:39:32.35 ID:SQgyoVwB.net]
えーん

39 名前:デフォルトの名無しさん [2015/01/03(土) 02:38:43.41 ID:fziQOJOK.net]
hage

40 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 23:02:16.28 ID:fDJEyEgd.net]
正規表現で

aaa 99 PPP
iii 87 XYZ
uuu 32 XXX

の PPP以降 と XYZ以降 と XXX以降 を取り出すのはどうすれば良いでしょうか?
aaa iii uuu が半角の文字 99 87 32 が 数字である事は保証されていますが
PPP XYZ XXX に至るまで半角スペース、もしくは全角スペースがいくつあるかは保証されておらず
substr 等で切りだす事はできません。わかる方宜しくお願いします。



41 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 00:25:53.38 ID:lkN1yBxE.net]
文章が不透明だから分からなくなる。(誰にも分からない)。
正規表現は完璧に仕様を出さないと書けない。出せば単にそれを書くだけ。


行頭は半角文字列である → ^[a-z]
その後に半角スペースがある → \ (←見えないが半角スペース)
その後に2桁の数値がある。 → [0-9]{2}
その後に一文字以上の半角スペースと全角スペースが不定数混在する → ([\ \ ])+
その後に大文字が3つある → [A-Z]{3}
以降、行末まで。(取り出し対象文字列) → .*$

まぁ辞書やないんやけどな。ここは。

42 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 00:26:47.75 ID:lkN1yBxE.net]
あ、行頭は3文字か
^([a-z]{3})

43 名前:デフォルトの名無しさん [2015/09/30(水) 22:23:35.50 ID:sTs+YTNn.net]
URLに?記号が2つある場合のデータの取得について
たとえばhttp://○○○.com/pagejump.cgi?http://△△△.com/disp.cgi?mode=testのよう?が2つある場合
$ENV{'QUERY_STRING'}だとhttp://△△△.com/disp.cgiまでしか取得できなくて?mode=testの部分が取得できないんですけど
フルに取得できるにはどうしたらいいんですか?

44 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 08:31:04.47 ID:jKkjZr1B.net]
フル?
「http://○○○.com/pagejump.cgi?http://△△△.com/disp.cgi?mode=test 」の場合、
query文字列は、「http://△△△.com/disp.cgi?mode=test」 だから、それが取れれば
十分なのでは?

その中の一部を取り出したいなら自分で好きに取り出せばいい

45 名前:44 mailto:sage [2015/10/01(木) 13:19:49.64 ID:NghmrQed.net]
スマヌ質問内容理解してなかった
だがPerl関係なくね?

46 名前:デフォルトの名無しさん [2015/10/02(金) 00:15:42.88 ID:jBpUUsqc.net]
>>42
本当にクライアントが
http://○○○.com/pagejump.cgi?http://△△△.com/disp.cgi?mode=test
を送ったのなら、それが原因だと思う。
URL の各部分は適切にエスケープされなければならない。
Perl でやるならこうだ。

use URI;
use URI::Escape;

$u = URI->new("http://○○○.com/pagejump.cgi");
$u->query( uri_escape("http://△△△.com/disp.cgi?mode=test"));

# クライアントに適切なエスケープを期待出来ないなら……まあ、がんばってくれ。

47 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 03:53:10.85 ID:j2xAjxnc.net]
>>39-41
これで一致した、次の文字から、行末までを取得する
^([a-z]{3})([\ \ ])+[0-9]{2}([\ \ ])+


半角・全角スペースは、「aaa○99○PPP」
○の所にしか入らないのだな?
つまり、各トークンの中には、入らないのだな?

それなら、全行のすべての全角スペースを、
半角スペースに置換して、その後、
連続した半角スペースを、1つの半角スペースに置換する

そして、8文字目から行末までを、取得する

>>43-45
URLの各部分では、特別に扱う文字が決まっているから、
クエリ文字列部分で、「? =」・日本語などは使えないので、
エスケープする

48 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 06:04:18.38 ID:AAE95wIv.net]
4ヶ月前にレスに回答(笑)

49 名前:デフォルトの名無しさん [2015/10/13(火) 20:00:49.41 ID:0lWpYFcj.net]
andtokyo.jp
&TOKYO

sub TOKYO {

#だれか面白いルーチン書いて

50 名前:デフォルトの名無しさん [2015/11/08(日) 01:17:27.81 ID:ytCokofM.net]
趣味と勉強を兼ねてcgi使ったホームページを作ってるんだが

セッションって格納した値は、同じルーチン内でしか使えないの?
格納したセッションをLocationでとんだ先で取得したいんだけど
何かと組み合わせないとそういうのできないのかな



51 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/08(日) 02:42:11.75 ID:vxaYLa75.net]
暗い趣味

52 名前:デフォルトの名無しさん [2015/11/20(金) 13:59:09.99 ID:ygWQ/grN.net]
test

53 名前:バイキンマン [2015/11/20(金) 14:01:31.29 ID:ygWQ/grN.net]
プログラム板でもやっぱそうか・・・・・

バグ発見!

名前欄に0と英数字で入力すると出力されないバグ!

変数の文字の長さで入力を判定して出力させれば

バグは治る!

すぐに対処を申請します!

54 名前:デフォルトの名無しさん [2015/11/21(土) 21:10:33.25 ID:WD+kKzRm.net]
>>49
セッションって?

55 名前:デフォルトの名無しさん mailto:sage [2015/11/21(土) 21:12:29.73 ID:WD+kKzRm.net]
あっ、2週間前のレスだったすまん

56 名前:デフォルトの名無しさん [2015/11/23(月) 21:01:14.60 ID:4+JhTSZZ.net]
a

57 名前:デフォルトの名無しさん [2015/11/23(月) 21:01:48.81 ID:4+JhTSZZ.net]
質問です。
#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);

my $ua = LWP::UserAgent->new;
$ua->timeout('7');

my $req = POST('yahoo.co.jp');

my $res = $ua->request($req);

print $res->content;

のようにすると文字化けします。文字コードの指定方法も分からず困っております
だれかおしえてくだあさい

58 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 00:50:23.60 ID:oXoHv6i5.net]
もらった文字列と、表示されている文字の、
文字コードが異なっているのだろう

文字を表示しているソフトの、文字コードを変えれば?
たぶん環境変数か設定項目にある

文字を表示しているソフトは、何を使っているの?

59 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 00:53:35.74 ID:s947wE2H.net]
>>56
文字化けしてないよ

60 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 00:56:04.50 ID:s947wE2H.net]
yahoo.co.jpは301 Moved Permanently だけど、move先を指定しても文字化けはない



61 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 01:33:56.66 ID:rf1AiNx3.net]
win10の64bit版でperl32bit版動くかな?
ちなみにwin7の64bitではperl32動いてます

62 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 03:12:21.07 ID:rf1AiNx3.net]
もう1個のスレのほうがメインみたいなのでそっちで聞いてきます

63 名前:デフォルトの名無しさん [2016/02/12(金) 18:03:25.55 ID:/96fpKw+.net]
ヒアドキュメントで表示は
print <<"EOS";
(中略)
EOS
だけど
これをファイルに書き込むにはどうしたらいいんですか?

64 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:32:20.94 ID:+ZsFTbcU.net]
print $fh <<"EOS";
中身
EOS

65 名前:デフォルトの名無しさん [2016/02/14(日) 03:31:58.89 ID:kuEFe+X3.net]
別解として
perl script.pl > file.txt

66 名前:デフォルトの名無しさん [2016/02/14(日) 18:40:21.30 ID:kuEFe+X3.net]
もしかして、Windowsのスタート→プログラム→アクセサリ→メモ帳
を実行して
print <<"EOS";
(中略)
EOS
を打ちこみ、メモ帳のメニューのファイル→名前を付けて保存
のほうを知りたかったのですか?

67 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 07:29:00.22 ID:y+ZjOqCo.net]
いきなりだけどPerlのクラスの仕組み(かなり手抜き)

+ JavaScript の質問用スレッド vol.128 +©2ch.net
peace.2ch.net/test/read.cgi/hp/1454390682/401- のJavaScriptのthisの話の余談

大雑把に言うとPerlのクラス(オブジェクト)はハッシュに毛が生えたもの

※この段階ではクラスではない。ただのハッシュを返すnew関数とそれを入れたKlassパッケージ
package Klass;
sub new { return {a=>1, b=>2 } }
sub foo {}

Perlにはメソッドというものはない。全て関数。
コンストラクタ(一般的にnewという名前にする)もただの関数。

Perlではクラスやオブジェクトはこのようにして呼び出す。
my $obj = Klass->new();
$obj->foo();


ここで問題がある。$obj->foo()は、Klass::foo()を呼び出すことになるが、
$obj(ただのハッシュ)からどうやってKlass::foo()であることを知るのか?

ただのハッシュを返しているだけのnew関数にはそれは無理なので
ただのハッシュに毛を生やす。

sub new { return bless({a=>1, b=>2 }, 'Klass') }

これでただのハッシュじゃなくてKlassという情報がくっついたハッシュになった。
これで$obj->foo()はKlass::foo()を呼び出せる。

68 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 07:29:53.95 ID:y+ZjOqCo.net]
ここからが面白くて「アローの左側は関数の第一引数になる」というルールを追加する。
そうすると、Klass->new() という呼び出しは、 new('Klass') 相当になることがわかる。

ということで、newの第一引数にはクラスの文字列が入ってくるのでそれを使える。
sub new { my $class = shift; return bless({a=>1, b=>2 }, $class }

さらに、$obj->foo() の呼出も同じ。 foo($obj) 相当になる。
なので、sub foo { my $self = shift; } の$selfにはnewの戻り値である
毛が生えたハッシュ、つまりオブジェクト自身(他の言語のthis相当)が入ってくることになる。

このようにアローの左側が第一引数になる。という挙動は他の言語でも一緒で
JavaやC++は内部的にそれを行ってるだけ。

そしてJavaScriptでも.(ドット)の左側が第一引数になると考えると、
JavaScriptのthisがよくわからんという問題も簡単に理解できるはず。

JavaScriptのthisの話は元スレへどうぞ

69 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 10:39:05.36 ID:rD0NYg0s.net]
面白いというか、みんな知ってると思う

70 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 00:31:54.19 ID:xaInBBRG.net]
うん。そしてそれが有用ならもっと使われているはずだが、現実はあまり使われていない。
コードが実行時に生成されるようなダイナミックなものはデバッグ、テスト、保守がしにくい。



71 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 00:40:54.86 ID:wnysiCN2.net]
>>69
何の話してるのお前?

72 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 00:01:04.65 ID:ifdckMGM.net]
文字列の/*と*/で囲まれた部分と/*と*/に色をつけたい

例えば$str="/*abcdef*/";の場合は
$str =~ s/\/\*/<font color=\"green\">\/\*/g;
$str =~ s/\*\//\*\/<\/font>/g;でできましたが

$str="/*//////abcdef/////*/";の場合はうまくできませんでした。
どうすればうまくいくのでしょうか?

73 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 01:43:09.22 ID:jNAd9H+F.net]
$str = ̄ s{(/¥*.*?¥*/)}{<font color=”green”>$1</font>}g;

74 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 17:33:02.93 ID:BncrDEhF.net]
my $data = {
'data1' => [1,2,3],
'data2' => [4,5,6],
'data3' => [7,8,9]
};

上のような配列のハッシュで
ハッシュそれぞれの0番目、1番目、2番目のデータを
取り出したい場合どうすればいいのでしょうか


for (my $i = 0; $i < 3; $i++) {

print $data->{"data1"}[$i],"\n";
print $data->{"data2"}[$i],"\n";
print $data->{"data3"}[$i],"\n";

}

75 名前:デフォルトの名無しさん [2016/02/22(月) 22:57:33.32 ID:mB6Cjpa0.net]
それで合ってるよ。
perldoc.jp/pod/perldsc
を読みなさい。
$data->{

76 名前:デフォルトの名無しさん [2016/02/22(月) 23:01:42.17 ID:mB6Cjpa0.net]
ごめん、ちゃんと書いたのに何かアクシデントがあったようだ。もう一回送るよ。

それで合ってるよ。
perldoc.jp/pod/perldsc
を読みなさい。
$data->{"data1"}->[$i]
が正式な書き方だが (配列|ハッシュ)要素の参照が連続していれば間の矢印を省略してもいい。
個人的には、リファレンスだということを意識していたいから省略しないけどね。

77 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 03:28:09.20 ID:Oh6h4g2T.net]
シングルクォートもダブルクォートも要らねぇ。
my $data = {
data1 => [1,2,3],
data2 => [4,5,6],
data3 => [7,8,9]
};

print $data->{data1}[$i],"\n";

78 名前:74 mailto:sage [2016/02/23(火) 09:55:37.41 ID:usPktkPU.net]
>>74-76
勉強になりました。
ありがとうございます。

79 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 10:27:03.85 ID:usPktkPU.net]
Web::Scraperでスクレイピングしているのですが
サンプルでは
use YAML;
warn Dump $res;
という書き方でこの方法だとデータの構造がよくわからないのですが

Dump何をつかっているのですか?
Ubuntu14.04の64bitを使っています。

80 名前:79 mailto:sage [2016/02/23(火) 11:04:41.58 ID:usPktkPU.net]
>>78
データの構造はData::Dumperをイントールしたらわかるようになりました。
すみません。



81 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 18:07:14.97 ID:E2TS40Hx.net]
print $res->{list}[1]->{link}[0]->{url},"\n";
print $res->{list}[1]->{link}[0]->{title},"\n";

print $res->{list}[1]->{link}[1]->{url},"\n";
print $res->{list}[1]->{link}[1]->{title},"\n";

こういったデータをforeahで出力したい場合
???にはどのようにかけばいいのでしょうか

foreah my $i(???) {
print $i->{url};
print $i->{title};
}

82 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 19:01:01.43 ID:1Q1vaK3L.net]
>>80
なんで同じのが2書いあるんだよ

83 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 22:23:15.99 ID:VYWYZ9lH.net]
>>80
my $links = $res->{list}[1]{link};
for my $link ( @$links ) {
  say $link->{$_} for qw/url title/;
}

84 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 22:43:39.56 ID:PL8yH0Su.net]
>>82
say forの行が気持ち悪い。やり直し

85 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 22:47:52.27 ID:VYWYZ9lH.net]
>>83
やり直し(キリッ
じゃなくて自分ならこうするというのを示せよw

86 名前:81 mailto:sage [2016/02/25(木) 09:33:24.21 ID:AM2kna+z.net]
>>82
ありがとうございました。

一度変数に保存してからすればよかったのですね。
my $links = $res->{list}[1]{link};

for my $link ( $res->{list}[1]{link} ) {
こういう書き方をしていてリストにするにはどうしたらいいのか
わからないので質問させていただきました。

たいへん勉強になりましたありがとうございました。

87 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 23:12:11.74 ID:B0t5yMaC.net]
>>85
デリファレンスは一度代入しなくてもできるけどちょっとわかりにくいかなって
for my $link ( @{ $res->{list}[1]{link} } ) {

新しい書き方だとこんなのもあったり(postfix dereferencing)
$res->{list}[1]{link}->@*

88 名前:デフォルトの名無しさん mailto:sage [2016/02/26(金) 12:14:26.93 ID:lmpGubNL.net]
1位は「Python」、プログラミング言語別の平均年収ランキングが発表
www.mdn.co.jp/di/newstopics/44248/

2位には「Perl」(平均年収633万円)、3位には「Ruby」(平均年収606万円)がランクインした。

89 名前:デフォルトの名無しさん [2016/02/27(土) 00:21:51.17 ID:7I91l6Zs.net]
>>66-67
超亀レスですがありがとうございます、勉強になりました!

90 名前:デフォルトの名無しさん [2016/02/27(土) 00:49:08.38 ID:fhIzDVzC.net]
my $date = '平成28年2月26日18:55';
my $week = '金';

$date =~ s/日/日 $week曜日 /;

print $date;
をすると文字化けするのですが原因がわかりません。



91 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 10:36:17.16 ID:VqgeV1ea.net]
環境とか文字コードは

92 名前:デフォルトの名無しさん [2016/02/27(土) 13:36:07.74 ID:fhIzDVzC.net]
さくらのレンタルサーバーのCGIでPerl 5.14.4です。
$weekを削除すると文字化けはおこりません。

別のプログラムではうまく動いているのですが

93 名前:92 [2016/02/27(土) 14:09:58.43 ID:fhIzDVzC.net]
$week\xe6\x9b\x9c\xe6\x97\xa5になっているみたい

プログラム内に入力している日本語がprint表示するときにくずれるようです。

94 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 14:23:16.95 ID:VqgeV1ea.net]
${week曜日}
${week}曜日

>プログラム内に入力している日本語がprint表示するときにくずれる
やっぱutf8フラグかなあ…

95 名前:92 [2016/02/27(土) 14:55:51.07 ID:fhIzDVzC.net]
すみませんプログラムミスでした。

96 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 17:24:53.21 ID:jVpVtd3O.net]
日付で教えて下さい
1/23 12:34
を西暦をくっつけて
2016/1/23 12:34に変換したいのですが

例えば未来の日時の場合は
5/1 12:34
を2015/5/1 12:34と1年引いた年にしたいのですが
下のプログラムでは
2015/05/02 06:45:10になります
年の引き算はどうすればいいのでしょうか

use strict;
use warnings;
use 5.010;

use Time::Piece;
use Time::Seconds;

my $t = localtime;
my $year = $t->year;

my $str = "1/23 12:34";

my $date = Time::Piece->strptime("$year/$str", '%Y/%m/%d %H:%M');

if ($t < $date) {
$date -= ONE_YEAR;
}

say $t->strftime('%Y-%m-%d %H:%M:%S');
say $date->strftime('%Y-%m-%d %H:%M:%S');

97 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 17:32:45.69 ID:Kk7Ussws.net]
>>95
いや、年の引き算って言っても一年は365日とは
限らないんだから、仕様を決めないとだめでしょ?

例えば2月29日の1年前は何日なのか?っていう。

98 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 18:03:04.50 ID:OXa3i/Gy.net]
$str =

99 名前:デフォルトの名無しさん mailto:sage [2016/03/07(月) 00:42:40.54 ID:Gv57dso9.net]
>>95
年月日に分けたのち、年を -1 する。

100 名前:デフォルトの名無しさん mailto:sage [2016/03/07(月) 06:16:56.64 ID:eudRNLDZ.net]
だからそうすると2月29日が出来てしまうって言ってるわけ



101 名前:デフォルトの名無しさん [2016/03/07(月) 21:18:09.27 ID:jBGm+KXA.net]
pythonのスクリプトの頭に、use strict;って書いた。頭いかれてきたw

102 名前:デフォルトの名無しさん mailto:sage [2016/03/07(月) 23:50:19.65 ID:fqGSH3nt.net]
my($year,$month,$day,$hour,$min) = (localtime)[5,4,3,2,1];
my $str = "1/23 12:34";
my($strmonth,$strday,$strhour,$strmin) = $str =~ m|([0-9]+)/([0-9]+) ([0-9]+):([0-9]+)|;
if (
  sprintf('%02d%02d%02d%02d',$strmonth,$strday,$strhour,$strmin)
  gt
  sprintf('%02d%02d%02d%02d',$month+1,$day,$hour,$min)
) {
  printf("%04d/%02d/%02d %02d:%02d\n",1900+$year-1,$strmonth,$strday,$strhour,$strmin);
}
else {
  printf("%04d/%02d/%02d %02d:%02d\n",1900+$year,$strmonth,$strday,$strhour,$strmin);
}
# 基本に忠実に。応用はそれから

103 名前:デフォルトの名無しさん mailto:sage [2016/03/08(火) 00:11:41.92 ID:2waKAzbH.net]
>>101
$month -= 2;
my $str = "2/29 12:34";
したら、2015/02/29って答が出るコードなんぞ貼るなや

元の質問者のコードに、
ふつうに$obj->is_leap_yearの判定加えて、
2/29跨ぎなら、LEAP_YEAR
引けばいいだけだろ。

104 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 00:16:20.50 ID:Djq1Ua6S.net]
この場合は 2015/02/29 が欲しい答え

105 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 05:51:47.62 ID:BRdU+Z94.net]
バギーなコードが眼に見える様だ

106 名前:デフォルトの名無しさん mailto:sage [2016/03/10(木) 00:41:03.49 ID:m8iGuBqw.net]
要件にない仕様を自己満足で追加してはいけない
この件はTime::Pieceだとうまくこなせない問題
融通がきかないのがオレオブジェクトのつらいところだ

107 名前:デフォルトの名無しさん mailto:sage [2016/03/10(木) 06:53:37.48 ID:cOoRDwdC.net]
Time::Piece関係ねーだろ。
頭悪いな。

108 名前:デフォルトの名無しさん mailto:sage [2016/03/13(日) 00:11:27.55 ID:W4AXq/NT.net]
localtimeとTimelocalは次スレのテンプレに追加するか
同じ質問が繰り返されてみんな同じところではまるからなあ

109 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 11:18:30.62 ID:EtVpSr8/Z]
Time::Pieceのadd_years()メソッドで解決。
$t = $t->add_years(-1);

ただし、2/29は、3/1側に倒される。

110 名前:デフォルトの名無しさん [2016/03/17(木) 15:49:56.51 ID:HmsCvSUF.net]
クッキーへの書き込み処理での質問

エラーメッセージを取得処理
print "Content-type:text/html\n";

if(エラー数が0の場合){

投稿データをクッキーに書き込む処理

}

print "\n";

エラーメッセージの表示処理

というようにエラーメッセージの取得と表示の間に
print "Content-type:text/html\n";print "\n";を挟む形になってしまうので
これらをまとめてサブルーチン化したくてもできません
こういう場合でもうまくサブルーチン化できる方法を教えてください



111 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 17:41:21.64 ID:H1m/hwv2.net]
エラーメッセージの出力時にContent-typeから出力すればいいのでは

112 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 18:09:04.11 ID:r8Uypp4J.net]
>>109
そのためにCGI.pmなどのライブラリや
各種フレームワークがある。

113 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 22:54:54.53 ID:zQsVsKn8.net]
my $kukkii =

114 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 14:44:26.98 ID:AaFdygkh.net]
'';

115 名前:デフォルトの名無しさん [2016/03/20(日) 23:05:38.19 ID:ZT1ttS3p.net]
何をしたかったのかよくわからないけど、せめて cookie と書いてほしかった。

116 名前:デフォルトの名無しさん mailto:sage [2016/03/21(月) 23:09:59.48 ID:mpXdX/cy.net]
住所を入れる変数でさ
$adoresu = ・・・
みたいな名前つかうヤツ、いるよね
英語なのか何なのか、よくワカラン

117 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 01:56:25.05 ID:isz3o5XG.net]
$message = エラーメッセージを取得;
print "Content-type:text/html\n";
if(エラー数が0の場合){
  投稿データをクッキーに書き込む処理
}
print "\n";
print $message; # エラーメッセージの表示処理

118 名前:デフォルトの名無しさん [2016/03/23(水) 21:53:51.11 ID:ftv772ff.net]
my $str = "あああabcあああcdefghあああ123456";

この文字列で半角英数字の部分をAAAに置換するにはどうすればいいですか?

あああAAAあああAAAあああAAAになればOKです

119 名前:デフォルトの名無しさん [2016/03/23(水) 23:01:13.44 ID:OHojQvKP.net]
ここで聞くよりも
perldoc.jp/pod/perlrequick
を読みなさい。その方が早くて正確です。

120 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 00:07:44.52 ID:3WWxxvBQ.net]
my $str = "あああabcあああcdefghあああ123456";
print $str, "\n";
$str =~ s/[A-Za-z0-9]+/AAA/g;
print $str, "\n";



121 名前:デフォルトの名無しさん mailto:sage< []
[ここ壊れてます]

122 名前:>2016/03/25(金) 01:11:07.68 ID:v9Mc4pMx.net mailto: ありがとうございます。おかげで宿題を提出することができました。
リンク先のページを読んでも何が何だかさっぱり分かりませんでした。
[]
[ここ壊れてます]

123 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 01:06:33.94 ID:jno5DU+g.net]
パールでまた問題に直面したら話題を提供してあげますので楽しみにしてるんだぞ。

124 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 15:47:58.07 ID:HfxbfBB0.net]
ありがとうございます。

125 名前:デフォルトの名無しさん [2016/04/14(木) 19:01:51.27 ID:v1e64Ann.net]
ファイル演算子の-eと-fの違いは?
ファイルが存在するかどうかはどっちを使っても良いのですか?

126 名前:デフォルトの名無しさん [2016/04/14(木) 19:46:27.77 ID:G3MchQfa.net]
すみません。初めてperlを使うのですが、perlでQRコードを生成したいです。

ブラウザからアクセスしてQRコードの標準出力は出来たのですが、ファイルを生成する方法がわかりません。
以下のソースを実行すると、pngが生成されるのですが、生成されたpngをダブルクリックしても開けなくなります。

use GD::Barcode::QRcode;
binmode STDOUT;

my $qr = GD::Barcode::QRcode->new('test',{Ecc=>M, Version=>5, ModuleSize=>3})->plot();

open my $fh, '>', 'qr.png' or die;
print $fh $qr->png;
close $fh;

もしお分かりの方がいらっしゃったらお願いします。

127 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:56:59.29 ID:rjSU//7G.net]
>>123
-fは指定されたものが通常ファイルで存在した場合のみ真
-eは同名のディレクトリやシンボリックリンクでも真

>>124
openの次の行にbinmode $fh;

128 名前:124 [2016/04/14(木) 21:09:45.25 ID:G3MchQfa.net]
>>125
ありがとうございました。
初心者なもので、もう丸一日困っておりました。

129 名前:デフォルトの名無しさん mailto:sage [2016/04/24(日) 15:13:08.67 ID:mI4IMx9A.net]
centos、zshの環境で、plenvを使っていて、apacheでcgiを動かそうと考えています。

/var/www/html 直下で #!/usr/bin/perl のcgiが動くところまではブラウザで確認できました。


130 名前:ニはplenvの下記初期設定をするだけ、と思ったところで詰まりました。

export PATH=~/.plenv/bin:$PATH
eval "$(plenv init -)"

apacheの自動起動では ..zshrc を指定するところがありません。
とりあえず下記で、plenvでインストールしたパスだけは設定したのですが、
eval "$(plenv init -)" の中でどんな処理がされているのかわかりません。 

# echo "PATH=/home/centos/.plenv/shims:$PATH" >> /etc/sysconfig/httpd
# /etc/init.d/httpd restart

eval "$(plenv init -)" ではどんな処理がされているのでしょうか?
また、plenvの環境は、パスさえ設定しておけば、特に支障はないのでしょうか?
[]
[ここ壊れてます]



131 名前:デフォルトの名無しさん mailto:sage [2016/04/24(日) 16:10:25.44 ID:pOtqw7s6.net]
最後の行だけ。
普通に、echo $(plenv init -)すれば、標準出力に内容が出ます。

132 名前:デフォルトの名無しさん mailto:sage [2016/04/24(日) 17:03:31.20 ID:jLfEtDRT.net]
>>127
そーすこーどにぜんぶかいてあります

133 名前:127 mailto:sage [2016/04/24(日) 23:45:45.94 ID:WFRvhXno.net]
>>128

なるほど!
評価してるだけだから、echoで出力できますね。
気づきませんでしたありがとうございます。

134 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 02:23:47.24 ID:wavxOtJH.net]
echoしなくてもplenv init - だけでいいよw
もっとも、それ見た後は

そーすこーどみれだけどなw

135 名前:デフォルトの名無しさん [2016/04/27(水) 09:59:00.96 ID:I/i5T1uZ.net]
openで開いたファイルをcloseで閉じる前にexitなのでプログラム強制終了した場合
自動的に閉じられてますか?
何か問題ありますか?

136 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 13:09:15.67 ID:3LxG86Of.net]
closeされることが保証されるわけではないが、普通のOSなら
OSがcloseを発行する。何を問題とみなすかによるが普通は問題ない

137 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 01:35:18.90 ID:rK49iHPu.net]
cgiなら問題ないけどmod_perlとかだとファイルディスクリプタ消費したままになる

138 名前:デフォルトの名無しさん [2016/04/28(木) 02:09:41.77 ID:hmSh3kQm.net]
exit ではなく die を使うという方法もある。もちろん eval ブロックの中で。

139 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 11:09:29.51 ID:OUpC6wqc.net]
END {
  close(FILE);
}
もしくは
open(my $file,'file.txt');
だな

140 名前:デフォルトの名無しさん [2016/04/29(金) 19:53:28.89 ID:WQhKsXVS.net]
tmp.datをlog.datにrenameするときrename失敗したら成功するまで繰り返す処理をしたい
このようにrename成功したらループを抜けるというやり方でもいいんでしょうか?
他にいいやり方はありますか?

for($n=0;$n<=100;$n++){

$rename_seikou = rename("tmp.dat","log.dat");

if($rename_seikou==1){

last;

}

}



141 名前:デフォルトの名無しさん [2016/04/29(金) 20:40:17.89 ID:bfvjxGWD.net]
本当にそういう繰り返しをしたいのなら sleep を入れた方がいいと思う。
それから、失敗した時は原因を確認した方がいいと思う。つまり、こんな感じ。

use Errno 'EBUSY';
if ( rename( $src,$dest)){
# 成功
} elsif ( $! eq EBUSY){
# 多分、別のプロセスで使用中。少し待てば成功するかも。
} else {
# 待っても無駄だろう。
die( $!);
}

142 名前:デフォルトの名無しさん [2016/04/29(金) 20:50:54.01 ID:bfvjxGWD.net]
ごめん、間違えた。
$! eq EBUSY
じゃなくて
$! == EBUSY

143 名前:デフォルトの名無しさん [2016/04/30(土) 11:00:17.55 ID:DNyH92Gg.net]
正規表現での置換について質問です。

<ul>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
</ul>

上の最後の<li>だけ<li class="a">に置換したです。
1時間以上考えてますができません。

144 名前:140 [2016/04/30(土) 11:01:02.01 ID:DNyH92Gg.net]
間違えました。

置換したです→置換したいです

145 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 11:11:29.23 ID:dxKZGhAw.net]
正規表現は少しでもほんの条件が不明瞭であれば誰にも書くことはできない

146 名前:140 [2016/04/30(土) 11:14:44.17 ID:DNyH92Gg.net]
自己解決しました。

$a =~ s/(^.*)\<li\>(.*$)/$1\<li class\=\"a\"\>$2/s;

147 名前:140 [2016/04/30(土) 11:39:47.11 ID:DNyH92Gg.net]
すみません。
新たな問題が発生しました。

<ul>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
</ul>
<ul>
<li>い</li>
<li>い</li>
<li>い</li>
<li>い</li>
<li>い</li>
</ul>

上記の文字列が$aに入っている場合で、各<ul>の最後の<li>だけ<li class="a">に置換したいです。

148 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 12:40:49.01 ID:nOun1cZC.net]
木構造のものを正規表現で置換するのは無理

JavaScriptのjQuery の、addClass, removeClass, toggleClass などを使う

それか、HTMLをパースする、ライブラリを探す

149 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 15:45:10.24 ID:Z/JJxf61.net]
否定の文字クラス使えば、普通に最短マッチで出来る事だろ。
s{<li>([^>]*?</li>¥s+</ul>)}{<li class="a">$1}sg

パースするライブラリ使えっつーのは同意だがな

150 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 15:46:02.92 ID:Z/JJxf61.net]
ああ、否定の文字クラス使わんでも出来るわ。
アホだ俺



151 名前:140 [2016/05/01(日) 14:05:59.88 ID:mZCC86OL.net]
>>145
ツリー構造というよりまさにあの並びの時だけの正規表現でいいんでPerlでやりたいんです


>>146
ありがとうございます
$a =~ s/\<li\>([^\>]*?\<\/li\>\s+\<\/ul\>)/\<li class\=\"a\"\>$1/sg;
では動きませんでした

152 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 16:22:48.05 ID:EJZ0zho6.net]
そのコードそのまま(円マークをバックスラッシュにして)
動かしたから、何らかの置換↓が得られたけど?
<ul>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li class="a">あ</li>
</ul>
<ul>
<li>い</li>
<li>い</li>
<li>い</li>
<li>い</li>
<li class="a">い</li>
</ul>

無意味なエスケープは、コードの邪魔になるだけだからしない方がいいよ。
置換 s/// の右辺は正規表現ですらない(よってエスケープの必要無い)し。

153 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 07:34:49.17 ID:PeIabFbi.net]
\現\実 !−=≡ヘ(* - -)ノ

154 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 22:19:44.35 ID:u2mE3+tw.net]
/[0-9]{$num}/

のような量子数は変数にできないんでしょうか?(^^?

155 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 01:44:17.76 ID:eTkSZ25N.net]
# 実行してみて
for $num (1..3){
  $_ = '1' x ($num - 1);
  print /[0-9]{$num}/ ? 'ok,' : 'not ok,';
  $_ = '1' x $num;
  print /[0-9]{$num}/ ? 'ok,' : 'not ok,';
  $_ = '1' x ($num + 1);
  print /[0-9]{$num}/ ? 'ok,' : 'not ok,';
  print "\n";
}

156 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 17:17:13.34 ID:cuRcUS6e.net]
>>152
ありがとうございます。
変数は使えたんですね!

演算子が使えないようでした…申し訳ありません。

/[0-9]{$num+1}/
のような使い方がだめでした orz

157 名前:デフォルトの名無しさん [2016/05/04(水) 22:28:29.07 ID:0wPtL/Lt.net]
$n = 2;
$pat_qr = $n + 1;
$pat_qr = qr/[0-9]{$pat_qr}/ ;
$pat_ev = eval( sprintf("qr/[0-9]{%d}/",$n+1));
$pat_co = qr/(??{ sprintf("[0-9]{%d}",$n+1) })/ ;
print( $_,"\n") foreach $pat_qr,$pat_ev,$pat_co;

# 個人的には $pat_qr がいいなぁ。eval を使うほどのことじゃないし $pat_co はデバッグしにくい。

158 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 15:20:47.88 ID:W74rdbK+v]
>>153
直接埋め込むには
perldoc.jp/docs/perl/5.20.1/perlref.pod#Using32References
> 同様に、スカラへのリファレンスを返す式は ${...} で デリファレンスできます。
> 従って、上述の式は以下のように書けます:
>
> print "That yields ${\($n + 5)} widgets\n";

しかし、お勧めしない。
新しい変数を作るべき。

159 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 15:23:19.51 ID:zs5en64n.net]
# こうですよ
for $num (1..3){
  $_ = '1' x $num;
  print /[0-9]{@{[$num+1]}}/ ? 'ok,' : 'not ok,';
  $_ = '1' x ($num + 1);
  print /[0-9]{@{[$num+1]}}/ ? 'ok,' : 'not ok,';
  $_ = '1' x ($num + 2);
  print /[0-9]{@{[$num+1]}}/ ? 'ok,' : 'not ok,';
  print "\n";
}

160 名前:153 mailto:sage [2016/05/05(木) 19:10:09.77 ID:eJss6EWw.net]
>>156
すごーい\(^^)/
ありがとうございます!

>>154
ありがとうございます!



161 名前:153 mailto:sage [2016/05/05(木) 19:13:26.95 ID:eJss6EWw.net]
あのあのもう一つ
ファイルハンドルで3行読み込むのを作ってみたのですがうまくいきませんでした…
どうしたらよいのでしょうか…


while ( $line[0..2] = <DATA> ) {
print $line[0];
print $line[1];
print $line[2];
}
__DATA__
なんたら
かんたら
たらのめ

162 名前:153 mailto:sage [2016/05/05(木) 19:19:01.51 ID:eJss6EWw.net]
ちょっとサンプル省略しすぎてすみません。
":encoding(cp932)"
等で漢字の表示は問題ありませんm(__)m

while ( $line[0] = <DATA> ) {
$line[1] = <DATA>;
$line[2] = <DATA>;
....

のように分解して書くと問題ありません。(DATAは必ず3行一組になります)

一度に、3行読み込む方法があればお教えくださいm(__)m

163 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 21:40:51.68 ID:AhXWZZ47.net]
@line[0..2]
配列スライスのシジルは@

164 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 23:21:34.59 ID:zs5en64n.net]
都合よく固定長を前提にはできないだろうから、

# 全部読んじゃって
chomp(@_ = <DATA>);

# 3つづつ処理する
while (@line = splice(@_,0,3)) {
  print map {"[$_]"} @line;
  print "\n";
}
__END__
1
2
3
4
5
6
7
8
9

165 名前:デフォルトの名無しさん [2016/06/01(水) 11:50:03.90 ID:6wx+Ihuz.net]
$text = 'hoge<span class="hoge" id="hoge">"hoge"</span><span class="huge" id="huge">"hoge"</span>huge';

上のような文字列で<〜>(タグ内)に囲まれた"だけ

166 名前:デフォルトの名無しさん [2016/06/01(水) 11:54:16.91 ID:6wx+Ihuz.net]
$text = 'hoge&lt;span class=&quot;hoge&quot; id=&quot;hoge&quot;&gt;&quot;hoge&quot;&lt;/span&gt;
&lt;span class=&quot;huge&quot; id=&quot;huge&quot;&gt;&quot;hoge&quot;&lt;/span&gt;huge';

上のような文字列(改行されてますが1行です)で&lt;〜&gt;(タグ内)に囲まれた&quot;だけ " に置換したいです

s/(&lt;.*?)&quot;(.*?&gt;)/$1"$2/g;

上のように試してみましたが、最初の1つのみ " に置換されるだけです
よろしくお願いします

167 名前:162 [2016/06/01(水) 12:36:41.40 ID:6wx+Ihuz.net]
タグの外側だけ置換する方法としては下記がどこかに載っていました

s/((?:\G|&gt;)[^&lt;]*?)&quot;/$1"/g;


タグの内側だけ置換したい場合は&gt;と&lt;を逆にすればいいかと思ったのですができませんでした

168 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 12:56:13.02 ID:UybPRljc.net]
>>162-164
$text =~ s{(?<=&lt;)(.+?)(?=&gt;)}{ $1 =~ s/&quot;/"/gr }eg;

169 名前:デフォルトの名無しさん [2016/06/01(水) 13:07:26.71 ID:6wx+Ihuz.net]
>>165
ありがとうございます
やってみましたがエラーになりました
もちろん&は半角に直しました

170 名前:デフォルトの名無しさん [2016/06/01(水) 13:32:03.91 ID:MHn5bFUb.net]
どんなエラーか解らないことにはなんとも……
ひょっとして、5.14 以前の Perl を使ってたりする?



171 名前:デフォルトの名無しさん [2016/06/01(水) 13:44:06.85 ID:6wx+Ihuz.net]
>>167
5.8系です
AddHandler cgi-script-debugが使えなくなってデバッグができないんです

この文法チェッカもいつの間にか消えてました
homepage2.nifty.com/sophia0/perl.html

172 名前:デフォルトの名無しさん [2016/06/01(水) 14:04:04.96 ID:6wx+Ihuz.net]
teraterm入れてSSH登録してエラーチェックしてみました

Bareword found where operator expected at test.cgi line 7, near "s/&quot;/"/gr"
syntax error at test.cgi line 7, near "s/&quot;/"/gr "
test.cgi had compilation errors.

173 名前:デフォルトの名無しさん [2016/06/01(水) 14:11:20.95 ID:MHn5bFUb.net]
置換の r オプションは 5.14 からです。従来通り
perl -pe 's{(?<=&lt;)(.+?)(?=&gt;)}{ ( $str = $1) =~ s!&quot;!\"!g ; $str ; }eg'
みたいな感じでどうでしょうか。

174 名前:デフォルトの名無しさん [2016/06/01(水) 14:17:56.91 ID:6wx+Ihuz.net]
>>170
できました!
本当にありがとうございました!
(Perl 5.8.8なのにエラーが出たのは謎ですね)

175 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 20:08:28.85 ID:2S8m0KQ+.net]
5.14(新しい) > 5.8(古い)だぞ

176 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 21:17:48.26 ID:1kxD8r4Z.net]
そいや5.24でpushやpop,shiiftなどにリファレンスを渡したときの
自動デリファレンスが止めになったのはなぜ?
折角5.14で入れた機能なのに。

177 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 21:25:33.54 ID:BXoQUtbW.net]
なぜも何も。

もともと「実験的に採用した」って宣言してるし、
失敗でした、って delta に書いてあるし。

178 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 14:00:14.87 ID:tGqw3Zei.net]
perlは、常にunstable ♪
オレの人生もunstable ♫

179 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 14:23:32.77 ID:TTUXXyQU.net]
Windows 7で
tree D: /f > tree_list.txt
これで書き出した物をperlでフルパスに変換したいのですが、
何か良いモジュールなどはありますか?

180 名前:デフォルトの名無しさん [2016/06/02(木) 16:16:38.49 ID:I/c4JKn/.net]
File::Spec がそうかも。



181 名前:デフォルトの名無しさん mailto:sage [2016/06/03(金) 02:13:33.36 ID:7/QVUMn+.net]
cmd.exe にまかせるがよろし
dir /s /b D: 2>NUL

182 名前:デフォルトの名無しさん mailto:sage [2016/06/03(金) 12:58:52.91 ID:a9xFHzmZ.net]
>>177
いまいち良い方法が見つからなかった
再帰処理でがりがり頑張ったけど、ものすごい時間が掛かってしまった

>>178
ありがとう
無事いけた
コマンドライン詳しくないから、NULでひかかった
NULの代わりに、list.txtなどにするとサクッと記録された
速度滅茶苦茶早いなー

183 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 15:10:16.50 ID:d7ojMir6.net]
ループの条件を満たしてなくてもredoでループされるんだけど、そうゆうことでいいのかな

184 名前:デフォルトの名無しさん [2016/06/04(土) 15:25:38.27 ID:wKu/P36l.net]
そのための redo だから。

perldoc.jp/index/function

185 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 16:50:14.92 ID:d7ojMir6.net]
>redo コマンドは、条件を再評価しないで、ループブロックの始めからもう一度 実行を開始します
そうかそうか、これが欲しかった。どうも。

186 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 04:54:48.15 ID:c/sFGpfw.net]
ちょっと相談と言うか、バグの原因が想像つかなくてこまっちんぐなんだけど、

$| = 1;
for(.....){
................
.................
print $x;
}

みたいな感じでいっぱいプリントしてる時、
プロセス実行中は8.00KB(8192B)しか出力されないんだよね。

本来は9.22KB程度出力されるはずで、これはプロセスが終了したら出力される。

187 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 05:03:29.17 ID:c/sFGpfw.net]
ちゃんとcloseを記述したら直りました。

188 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 05:36:30.43 ID:tfudflM8.net]
どうしても即時出力したいなら、バッファリングで検索

189 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 15:34:08.08 ID:1ofjxszc.net]
10GBくらいのCSVで作成された辞書の文字を置換して出力する場合最も適切な方法はどんな感じ?
すぐ思いつくのは下記だけど、膨大な回数HDDにアクセスして大丈夫かと不安になるがバッファリングされるから影響はないかな?

open(IN,"<Wikipedia.txt");
open(OUT,">>test.txt");
while(<IN>){
$_ =~ s/<|>/<>/g;
print OUT $_;
}
close OUT;
close IN;

190 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 15:38:30.27 ID:c/sFGpfw.net]
そら最低の理論値でも10GB分HDDから読み出しして10GB分HDDに書き出ししないとな



191 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 15:56:29.67 ID:1ofjxszc.net]
>>187
単にリードするだけなら10GBは大丈夫だろうけど、
出力のバッファリングが甘いと、何度も書き込みHDDに凄い負担掛かるんじゃないかと思って・・・
因みに、昔は下記みたいにしてた、やたらHDDがガリガリ言ってた気がする
正しい方法はどうするのが良いのかと思ってね・・・

$| = 1;
open(IN,"<Wikipedia.txt");
while(<IN>){
 open(OUT,">>test.txt");
 $_ =~ s/<|>/<>/g;
 print OUT $_;
 close OUT;
 print $count++;
 print "\n";
}
close IN;

192 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 08:19:20.98 ID:5xTa9iMx.net]
>>186
環境によるのでもう少し小さいデータと思いついたコードでベンチ取れとしか。
perldoc.jp/docs/perl/perlperf.pod

193 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 08:56:02.57 ID:a3MG4bWs.net]
>>186
単純な置換、大きなファイルサイズなら、
perl より sed 使ったほうが速いかもな。

194 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 12:28:41.66 ID:JDueIOd3.net]
どんな言語で書いても10GBのHDDをアクセスすること自体に変わりはない。
温度が上昇してエラーになるなら、扇風機で冷やしながら実行するとよい。

195 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 13:25:11.80 ID:ve4Ih4ce.net]
そうかなー
スクリプトだとなにやられてるんだか分からない印象だけど

196 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 13:26:20.33 ID:0HO5/jac.net]
そもそも10GBのテキストなんざ、
今の基準で言えば普通よりちょっとデカい程度。

日常的に扱かってる人間からすれば、質問自体が意味不明。

一回こっきりの捨てスクリプトなんだろうから、
検証以前にさっさと書いて終りにすりゃあいい。

197 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 14:32:37.22 ID:wrakKGfW.net]
でも>>188は毎回やってると流石にHDD痛めそうな気がする
ベストな方法や、やってはならない方法はあるでしょ

198 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:01:08.44 ID:0HO5/jac.net]
ちょっと待って>>188は、論外だろ?
これを含めて、ベスト云々を議論すんなら、
「初歩から教えろ」って言ってるのと変らんぞ?

普通に、>>186でいいじゃん。
>>187とか、>>191とか指摘してる通り、
どうあがこうが、10GBの書き込みは生じるんだから。

199 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 16:03:16.27 ID:ve4Ih4ce.net]
まぁ俺は10GB程度のファイル、頻繁にDLしたり削除したりコピーしたり色々してるけどな、ほぼ毎日。

200 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:22:13.25 ID:wrakKGfW.net]
プログラムもだけど$|=1;使って動作確認してたり、
バッファリング無し、バッチ処理で毎晩10GB1行毎の書き込みは流石にまずいんじゃない?

185も$|=1;使ったらどんな動作になるんだろ?

187はコードが見やすくなるからテストでは結構使ってる
そのまま忘れてて大きなファイルを解析させてたりもある
みんな185形式で書いてるの?



201 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:23:39.84 ID:wrakKGfW.net]
速度も考えて最近は配列に貯めてからすることがある
ただWindowsだとすぐout of memoryでる

202 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:58:39.76 ID:ve4Ih4ce.net]
まあ自分のPCならサブマシンでもメモリ32Gあるし別に・・・って感じだが

203 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:00:15.13 ID:ve4Ih4ce.net]
でもPerlってメモリの量が異常に増えるんだよね
10MBのデータを読み込んでごにょごにょしてたらなぜかメモリ200MBになってたり
普通にネイティブな言語使ったほうがいいのでは

204 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:45:18.08 ID:0HO5/jac.net]
どんなレス考えても、罵倒しか思い浮ばん。

HDDの負担以前の問題だよ。
open/closeを行数分繰替えすのが、
どれだけ時間の無駄(=マシンに負荷がかかる)か実例貼っとく。

$ perl -le ' sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;'
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 36471 13.2 0.1 2445400 3344 s002 S+ 8:24PM 0:00.16 perl -le sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 36471 22.5 0.0 2445400 1664 s002 S+ 8:24PM 24:21.88 perl -le sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;

CPU time で24分だけど、実際には、9時半まで処理掛かってる。

205 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:49:23.64 ID:0HO5/jac.net]
$ perl -le ' sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;'
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 40081 7.0 0.1 2445400 3324 s002 R+ 9:36PM 0:00.09 perl -le sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 40081 96.8 0.1 2445400 3340 s002 S+ 9:36PM 0:03.08 perl -le sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;

$ ls -alh test.txt
-rw-r--r-- 1 XXXXX staff 19M 6 12 21:36 test.txt

今の時代の強力なマシンだろうが、こんだけ負担をかける事は、一昔前の人間だったら常識の範囲。

ちなみにフラッシュしようが、出力される量は変動しないんだから、
HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?

206 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:54:39.02 ID:0HO5/jac.net]
>>201,>>202は、>>197へ。

207 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 23:18:14.97 ID:wrakKGfW.net]
>>202
今の時代マシーンパワーに物言わせてと言うことが意外と出来きてしまう
勿論、限度はあるけど
朝までに終わればいいわ程度で一度コード作ったらあとは触らないとかね
それと、昔デフラグし過ぎるとHDDが壊れるとか言われてた
出力される量でHDDの劣化が決まるって話だけど、細かいファイルを大量に書いたり作成するのはHDDにとって過大な負担になるんじゃない?
例えばだけど、100GBのファイル一つ書き込むのと、1バイトのファイルを100GB分毎回書き込むのでは違うと思うのだが?

>>199
配列をアホみたいに増やしたらメモリー(SSDで仮想いくらでも増やせるし)が一杯になる前に落ちる

208 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 23:41:21.09 ID:0HO5/jac.net]
>>204
意味不明。
細かいファイルの件なんか、俺のコードにも、>>186にも>>188にも
全く触れられてないんだけど?

百歩譲って、断片化の可能性が高まるのは、open/close を繰替えす
>>188のコード(膨大な処理時間中に他のIOが割って入る)だが、
擁護してんのか晒してんのかも不明。

209 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 23:49:21.59 ID:xguVhByI.net]
>>202
> ちなみにフラッシュしようが、出力される量は変動しないんだから、
> HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?

出力される量は変動しなくても
書き込み回数は増えるじゃん。

フラッシュって何をやってるのか知らないの?
HDDに書き込まないでメモリに蓄えているものを
書き出す処理だぞ。

だからHDDの負担は増える。

210 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 23:52:30.66 ID:xguVhByI.net]
ちなみに、出力される量も実際に変動する。

HDDに限らないが通常書き込みっていうのは
ブロック単位で書き込まれる。

HDDの場合は512バイトだったり最近は4Kバイトだったりする。
1バイトの書き込みでも4Kバイト書き込まれるわけだ。

だからデータ量が1000バイトだった場合、
フラッシュ無しだと4KBの書き込みだが
1バイト毎にフラッシュすると、4KB×1000=4MBの書き込み量になる。

ファイルサイズはどちらも同じ1000バイトであっても
それを作るための書き込み量は違う。



211 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 00:08:38.69 ID:GclKUW1b.net]
>ちなみにフラッシュしようが、出力される量は変動しないんだから、
>HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?
この二行は、あなたのご指摘通り。
訂正します。

>>188
>$| = 1;
は、*OUTのフラッシュになんの関与もしていないけど。

212 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 00:32:22.24 ID:Yqh2uzvZ.net]
>>205
205-206が言いたいこと言ってくれた
擁護でも晒すわけでもなく、より適切な方法が見つかれば良いと思う
185にしても、もっとバッファリングしてやればHDDへのIOが減りHDDの負担は減るんじゃないかなと
標準だと4/8KBでフラッシュしてるよね、これを100MBにすればHDDへの負担はぐっと減りそう
今時のキャッシュ大きめのHDDでどの程度意味があるのか分からないし
寿命に影響するかどうかは分からないけど毎日繰り返す処理なら意味があるかも

>>208
そうなの?って思って調べてみた
mikeda.hatenablog.com/entry/20090503/1241365884
みたらselectしないと効かないっぽいな

213 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 01:15:56.79 ID:w1lAZiF2.net]
夏場なんで、while ブロックの先頭に
sleep 2 unless $. % 10000;
を入れるとよい。2つの数字は調整してみてくれ。

214 名前:デフォルトの名無しさん [2016/06/13(月) 15:19:04.03 ID:bjrR9GHC.net]
#!/usr/bin/perl -w

use strict;
use File::Path;
use IO::File;

sub diskstat {
 system(

215 名前:デフォルトの名無しさん [2016/06/13(月) 16:48:17.11 ID:bjrR9GHC.net]
https://ideone.com/fUNKyh

このプログラムの意図 : >>186>>188 の違いがディスクアクセスに及ぼす影響の検証。

明らかに >>186 よりも >>188 の方がシステムコールの回数が多い。
しかし、それだけでディスクアクセスに違いが出てくるわけではない。
実行時間を同程度にしてみたらどうなるだろうか。
実行する前に
grep sda5
の sda5 を環境に合わせて書き換えてほしい。

216 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 01:15:43.18 ID:M6DJWkXG.net]
> 実行時間を同程度にしてみたらどうなるだろうか。

実行時間を同程度にしたら、遅い方の書き込み量が減るから
比較にならんだろw

217 名前:デフォルトの名無しさん [2016/06/14(火) 20:04:47.85 ID:UhtJW9b9.net]
プログラムを見てくれてないのかな……だとしたらその時点でもう対象外なんだけど。
ろくに見もしないで何を想像したの?

218 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 01:35:53.40 ID:7O5/ia9k.net]
そう言えば古いDiffソフト(AikoWin)やたらHDDガリガリ音鳴ってたな
あれ読み出しが少しずつでHDDに相当の負担が掛かるとか聞いたことがある
細かいファイルを書き込むのも良くないけど、自分でソフト作る時にには
呼び出しも気を付けないとまずいんだよなー

219 名前:211 [2016/06/15(水) 12:03:11.68 ID:rzJhZO2i.net]
もう少しマシなプログラムを書いてみたよ。

https://ideone.com/Nh4Esi

Linux 限定だけど無修正で実行できる。
実行時間は 5 分くらいかかるよ。正確なデータを得るにはそうした方がいいみたいなんだ……

220 名前:デフォルトの名無しさん [2016/06/15(水) 13:23:28.38 ID:rzJhZO2i.net]
自分の実行結果を書いておくよ。

sub f_a {
 my $fh = IO::File->new( &genfn(),'>') || die( $!);
 $fh->autoflush( 0);
 $fh->print('h') foreach 0 .. 65535;
 $fh->close;
}

sub f_b {
 my $fh = IO::File->new( &genfn(),'>') || die( $!);
 $fh->autoflush( 1);
 $fh->print('h') foreach 0 .. 65535;
 $fh->close;
}

sub f_c {
 my $fn = &genfn();
 foreach ( 0 .. 65535) {
  my $fh = IO::File->new( $fn,'>>') || die( $!);
  $fh->print('h');
  $fh->close;
 }
}

これらを 16 回ずつ実行した結果、f_a,f_b はそれぞれ 2232 セクタ、
f_c は 2224 セクタ書き込んだみたいだよ。もちろん書き込んだ回数だよ。



221 名前:デフォルトの名無しさん [2016/06/15(水) 17:57:12.29 ID:rzJhZO2i.net]
https://ideone.com/K0qeSx

もう少しユーザーフレンドリーな感じにしてみたよ。これで最後だよ。
Windows ではこういう情報を得る方法は無いの?
非同期書き込みが無いのなら彼らの言うことも間違いではないんだけど。

222 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 11:42:41.43 ID:zTifxauk.net]
$ perl -p -e 〜
となっているのですが、-p と -e の意味を教えてください。

223 名前:218 mailto:sage [2016/06/18(土) 13:00:49.64 ID:zTifxauk.net]
一行構文のOPだとわかりました。

しかし、
C:\perl\bin\perl -e 'for $i (@ARGV) { print $i ,"\n";}' args1 args2 args3
をWindows環境で実行すると
Can't find string terminator "'" anywhere before EOF at -e line 1
と出てしまいます。
解決方法を教えほしいです。

224 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 13:07:12.42 ID:FKPQs3z7.net]
'print "\n"'ではなく"print qq(\n)"のように

225 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 14:22:55.12 ID:zTifxauk.net]
C:\perl\bin\perl -e 'for $i (@ARGV) { "print $i ,qq(\n)";}' args1 args2 args3
で試したがダメでした…

226 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 14:58:07.42 ID:h9LNivvl.net]
>>222

227 名前:
俺は昨日から始めたんで確かなことは言えないけど、
DOSプロンプトだと、''で括ってもダメだったよ
(何か設定があるんだけど昨日からなんで...)
例えば、
perl -e 'print "hello"'

perl -e "print \"Hello World\n\""
ってしないと動かなかった
[]
[ここ壊れてます]

228 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 15:22:54.54 ID:h9LNivvl.net]
よくよく考えたら、コマンドプロンプトで''はいけるはず無いよね
だって、まずコマンドプロンプトで命令が解釈されるわけだから
'a b'だと、連続した文字列とはならずに
'aとb'の2つの引数が指定されたと受け取られちゃうわけだしね

229 名前:デフォルトの名無しさん [2016/06/18(土) 15:30:14.88 ID:xZeqh3Cr.net]
Perl の文法上
"\n"
の代わりに
qq(\n)
と書けますよ……という話じゃないのかなあ。

とりあえず、ググって見つけたページ
thinca.hatenablog.com/entry/20100210/1265813598
up-cat.net/%25A5%25B3%25A5%25DE%25A5%25F3%25A5%25C9%25A5%25D7%25A5%25ED%25A5%25F3%25A5%25D7%25A5%25C8%25A4%25CE%25A5%25A8%25A5%25B9%25A5%25B1%25A1%25BC%25A5%25D7%25BB%25C5%25CD%25CD.html

相変わらずカオスなんですね。それがいやで Linux に乗り換えたのは前世紀のことなのに……

230 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 17:13:02.52 ID:Q2VQ6qXf.net]
DOS/Windowsコマンドプロンプトのクォートは "
UNIXのシェルのクォートは '
ただそれだけ
コマンドプロンプトのクォートとして "" を使っているから、Perl部分は
qq() を使ってる



231 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 17:51:48.00 ID:5RdW1n8d.net]
すごいにゃー。ワシは動けばいいやなんで。

232 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 17:53:59.52 ID:qpxG5nAO.net]
動かないんだろ?

233 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:50:09.79 ID:QKdVDmdU.net]
PowerShell_ISE では、どうなる?

234 名前:デフォルトの名無しさん mailto:sage [2016/06/19(日) 20:43:06.86 ID:p98kttl2.net]
ファイルの中身じゃなくて、ファイル名をバイナリかなんかで扱いたいときはどうすれば良いでしょうか
どっかの国のどっか語でファイル名書いてあって、ファイル一覧を入手したら全部文字化けみたいな感じになってて困った

235 名前:デフォルトの名無しさん [2016/06/19(日) 22:30:28.43 ID:/GELYJ8A.net]
まず、そのファイルが壊れてないかどうかエンコーディングが判らないことには確認しようがありません。
そして、そこに書かれているファイル名が正しいとしても、問題はそのファイル名で何をするかです。
ファイルを作成するとしたら少々困難を伴うと思いますが、何をしますか?
もう少し説明が欲しいです。

236 名前:デフォルトの名無しさん mailto:sage [2016/06/19(日) 23:56:05.73 ID:p98kttl2.net]
1: ファイルは壊れてないです。あとファイルの中身はどうでも良くて困ってるのはファイルですね。

2: こちら側からバイナリを含めて希望してるのでそもそも文字コードは問わないです。
なおwindowsですので強制的な解釈としてはcp932でしょうか。文字かどうかは不明ですか。

3: 書いてある通り、ファイル一覧を入手したいです。(と言うよりすでにしました)。その時点での文字化けについてです。

237 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 01:41:13.70 ID:Nxz2d29B.net]
文字化けは君の環境のフォントの問題では…

238 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 01:52:28.59 ID:3dbzY2ue.net]
>>225
単にprintのあと改行したいだけなら、面倒なエスケープを避けてsayを使うのが楽だと思う。

perl -E ‘say “hoge”;’

239 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 01:55:16.19 ID:3dbzY2ue.net]
>>232
CPANにあるWin32::Unicodeを使ってみてはどうだろう。

240 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 02:14:22.79 ID:JJJI2UNm.net]
ちゃんと話を追ってればシングルクォートではコマンド文字列をperlに渡せないってことを理解できるのに
だから>>221では全体をダブルクォートで括ってるわけ



241 名前:230 [2016/06/20(月) 13:40:47.81 ID:cF0IFcLP.net]
>>232
「そのファイルが壊れてないか」と書いたのはファイル一覧のことだったんですが……
まあ、それは置いといて。
困っていると言われても、何をお望みなのかよく分かりません。
マルチバイト文字を作成者が意図した通りの文字として読みたいということなら、
やはりエンコーディングを知る必要があります。
そして、そのエンコーディングを扱うことが出来るソフトウェアと、もちろんフォントも必要です。
どんな環境で、どこからどのような手段で入手して、何をして文字化けだと思ったのか、
それがどうなるのが望みなのかを書いていただけないと、お役に立てそうもありません。

242 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 14:10:59.68 ID:ppvG3ddJ.net]
ファイル名はテキストだろ。
バイナリのファイル名など、聞いたことがない

フォントが無いだけで、たぶん正常だろ。
それか、ファイル一覧を表示している、端末の文字コードが違うだけ

そのファイル名をエディタにコピーして、色々な文字コードに変えて、試してみる

243 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 14:43:14.96 ID:og12Zqf+.net]
先日も申しましたが、ファイル名はOSの仕様によってcp932扱いで表示されたバイナリです。
windowsにおけるバイナリとテキストの違いは、改行など一部の文字の解釈です
すなわち、ファイル名を入手した時点で破損しています

244 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:21:44.17 ID:7O0ObdXP.net]
うーん・・・
関係ないけど
ハートマークのファイル名作ったけど、
ちゃんと表示できたよ

245 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:27:52.95 ID:JJJI2UNm.net]
>>239
「ファイルはテキストだが何のコードでエンコードされたものかわからん」をcp932で開いた
ではなくて
「cp932でエンコードしてしまって、もう元のファイルの情報は欠けてしまった文字化けファイル」を開いた
ってことか?

246 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:05:49.21 ID:S2CnEqh7.net]
>>239
破損とは何か。期待値と実際値を言わないとわからん

247 名前:デフォルトの名無しさん [2016/06/20(月) 16:53:54.14 ID:cF0IFcLP.net]
もう一度聞くけど、どこからどのような手段で入手して、どうやって見てるの?
どうなってほしいの? 使ったソフトウェアの仕様はちゃんと理解できてるの?

248 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 23:26:05.47 ID:og12Zqf+.net]
Aディレクトリの中のファイル名をopendirでとってくる。
この時のファイル名ってどう言う扱い?バイナリ?テキスト?コードは?フラグは?
とってきたらそれがすでに破損してて開くこともできない。

249 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 23:27:22.44 ID:og12Zqf+.net]
もちろん cp932で定義されてる範囲のバイト列ではバグらないよ

250 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 00:30:40.48 ID:zxMwhnoQ.net]
そうですか。
で?



251 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 12:21:49.21 ID:yHwsrvxs.net]
-------------------------------------------------------
Perl に関係ない話題は、以上で終了。

252 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 02:03:09.88 ID:pkNIGL7K.net]
>>ファイルの中身じゃなくて、ファイル名をバイナリかなんかで扱いたいときはどうすれば良いでしょうか
特別なことをしなければバイナリで扱うことになる。むしろファイル名は文字列では扱(え|わ)ない。

253 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 06:43:08.46 ID:dLzJGxXLx]
PerlはA系を使うクソ仕様だから、直接win32叩いてU系でディレクトリを読みだすか、
>>235の言うように、Win32::Unicodeでも使う。

254 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 17:07:36.10 ID:NJ9t5GVO.net]
Perlを使って下記のように2文字半角スペースを入れたいのです。
0015000008006a3376 -> 00 15 00 00 08 00 6a 33 76

下記を教えて貰いましたが旨く出来ません・・・アドバイス願います。
$ perl -p -e 's/(..)/$1 /g;'
001500 -> 00 15 00

255 名前:デフォルトの名無しさん [2016/06/22(水) 17:34:24.64 ID:MK9gPhs4.net]
いや、ちゃんとその通りになったけど……どううまくいかなかったの?
末尾にスペースが入っちゃいかんとかなら、方法はあるけど。

256 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 17:34:34.20 ID:zY+0G6HH.net]
それでできたけど。

257 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 17:44:10.61 ID:NJ9t5GVO.net]
試したのは下記ですが、進まないと言うか終らないんです。
連続数字は変えますが・・・123456に変更
perl -p -e 's/ 123456/$1 /g;'

perl -p -e 's/(123456)/$1 /g;'

perl -p -e 's/( 123456)/$1 /g;'

perl -p -e 's/\(123456\)/$1 /g;'

258 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:37:34.12 ID:ZXocXNxo.net]
>>253
いや、そのドットが重要なのでは…?

259 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:34:58.14 ID:NJ9t5GVO.net]
>>254
色々と試行錯誤した中で試してみましたが、ドットを入れるならスペース入れても
同じような・・・
perl -p -e 's/(12.34.56)/$1 /g;'

260 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:45:27.49 ID:9eEpB7QB.net]
もう連続した数値を2桁ずつ区切るとは話が違ってきてるぞ
まあ色々試しているんだろうが、まず正規表現をちゃんと勉強した方が結局は早道だよ



261 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 20:13:59.90 ID:SZhXzwW9.net]
>>255
正規表現を使っているという事は理解してる?
ドット一つは「任意の一文字」を意味しているのだけれども…

262 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 20:14:45.08 ID:GjDXavCQ.net]
$string = '012345';
$string =~ s/(..)/$1 /g;

263 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 20:36:25.70 ID:jdKVcriH.net]
s/(..)/$1 /g

( ) で囲むと、キャプチャーできて、$1〜9 で後方参照できる。
. は、任意の1文字だから、.. で2文字

その2文字を、$1で参照して、その後ろに、半角空白を付けている。
$1の後ろに、半角空白があるだろ

g(global)フラグは、すべて置換する

だから、ab なら、ab半角空白 となる。
正規表現の説明を参照

264 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 20:38:53.55 ID:q7cmPaAS.net]
質問者は本当にやりたいことを隠して質問してるからもうどおでもいいけど
なぜ  perl -p -e 's/(..)/$1 /g;' でうまくいっちゃうんだろうね。

ぱっと見だと
001500 -> 00 01 15 50 00
になってもおかしくないのになと思った。

265 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:11:10.25 ID:NJ9t5GVO.net]
>>251->>260 皆さまスレ汚してすみませんでした。
Perlは使うばかりで、プログラミングはど素人です。
(..)は顔文字だと思っていました・・・お恥ずかしい

○○○@H170M-PLUS ~
$ perl -p -e 's/(..)/$1 /g;'
123456
12 34 56

あ〜スッキリした。
有難うございました。

266 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:35:11.08 ID:jdKVcriH.net]
>>260
1234なら、12 23 34 にはならない

.. は2文字に一致するから、12に一致する。
すると次は、3からスタートするから、34に一致する

つまり、一致した次の文字から、スタートする

267 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 23:26:29.09 ID:q7cmPaAS.net]
なるほろー。
最初はこんな感じが頭にうかんだけど冗長だね。ワンライナー3級ですな。
perl -ne 'for( $i = 0; $i < length() ; $i += 2 ){ print substr($_,$i,2)" " }'

268 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 09:02:33.36 ID:9bmKWFfz.net]
もう顔文字にしか見えない(..)どうしてくれる

269 名前:259 mailto:sage [2016/06/23(木) 10:28:45.02 ID:mgh0+o+/.net]
>>264 _(_^_)_ m(_ _)m

270 名前:デフォルトの名無しさん [2016/06/23(木) 14:28:28.61 ID:Fa0lhzij.net]
>>244
もう見てないと思うけど、一応書いとくよ。君はまず、
Perl readdir Windows
でググってみるべきだった。



271 名前:デフォルトの名無しさん mailto:sage [2016/06/28(火) 23:22:27.94 ID:sQcX3Fgh.net]
複数の文字列フィルタ (grep や s) を連続で通す書き方って、どうだったっけ?
ある文字列を
 ・grep でフィルタ → grep で再度フィルタ → s で置換 → split で分割 → 先頭要素だけスカラー変数に格納
これをスマートに(可能ならば1行で)やりたい。

272 名前:デフォルトの名無しさん mailto:sage [2016/06/28(火) 23:31:42.78 ID:IoEHfO5D.net]
@result = map {(split //)[0]} map {s//;$_} grep {} grep {} @strings;
こんな雰囲気でええんでないかい?

273 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 01:53:58.12 ID:edw32cCt.net]
mapやgrepを一行で複数書くのはアホの代表だと思いまーす

274 名前:デフォルトの名無しさん mailto:sage [2016/07/02(土) 14:22:47.36 ID:UtcihNE2.net]
基本的に日本語で書いたときの逆順に記述するだけなんだけどね
マニュアル読んで分からなければたぶん無理だろう

275 名前:デフォルトの名無しさん mailto:sage [2016/07/02(土) 15:01:42.19 ID:9DiVepfM.net]
批判するならコードかけや

276 名前:デフォルトの名無しさん mailto:sage [2016/07/04(月) 00:55:08.84 ID:xC//1vCA.net]
id="011"<width>1</width>

この文字列から011だけ正規表現で抜き出す方法教えてください
idの数値だけを抜き出したい

277 名前:デフォルトの名無しさん mailto:sage [2016/07/04(月) 00:57:21.80 ID:eDhj/6QR.net]
>>272
これで文字列全体?
その前後にいろんなタグがありそうないやな予感がするんだが?

278 名前:デフォルトの名無しさん mailto:sage [2016/07/04(月) 01:08:21.29 ID:xC//1vCA.net]
>>273
ありますが、かなり長いxmlなので必要だと思った部分だけ抜き出しました
もう少し抜き出してみるとこんな感じです

source="hogehoge.xml" />
<name="foo" id="0110"

このような文字列が大量にあってそのなかからidの数値だけが欲しいです

279 名前:デフォルトの名無しさん mailto:sage [2016/07/04(月) 01:29:50.90 ID:xC//1vCA.net]
>>272
/id="([0-9]*)/g
これでできたような気がします

280 名前:デフォルトの名無しさん mailto:sage [2016/07/04(月) 22:53:37.85 ID:0oVcG5wM.net]
HTMLパーサーを使うのが一番簡単で正確
コメントの中にHTMLがあったらどうするんだ?

つーか正規表現を乱用するな。



281 名前:デフォルトの名無しさん mailto:sage [2016/07/04(月) 22:54:10.05 ID:0oVcG5wM.net]
XMLパーサーか

282 名前:デフォルトの名無しさん [2016/07/05(火) 17:36:47.05 ID:QGn+r4HY.net]
>>272 だとタグの外にあるように見えるのに >>274 ではタグの中になってる。
だから静観してたけど、結局どっちなの?

283 名前:デフォルトの名無しさん mailto:sage [2016/07/05(火) 17:48:38.40 ID:gL12vNid.net]
なんか最初のだと後に<width>のある特定のidの値が欲しいのかな?って思ってたけど
そうでもなくて全部のidの値でいいんだってのが>>275でわかったんで拍子抜けしたところ

284 名前:デフォルトの名無しさん mailto:sage [2016/07/08(金) 23:33:47.61 ID:l/0Eyz2z.net]
うん、自称ベテランにありがち。

285 名前:初心者です [2016/07/09(土) 07:48:40.33 ID:g+Tip2fR.net]
宜しくお願いします。

$ua->cookie_jar(HTTP::Cookies->new(file => "cookie.txt",autosave => 1));
でcookie.txtにクッキーを取得できるのは分かりますが
削除したい場合にはどのようなコードを書くんでしょうか?

286 名前:デフォルトの名無しさん [2016/07/09(土) 16:55:14.14 ID:ce8+Vk05.net]
そういえばいつもお世話になってるのに知らないな……と思ってマニュアルを読んでみた。
どうやら clear を使うらしいな。まずは scan で中身を見てみるのが良さそうだ。
これ以上は説明のしようがない。自分で頑張ってほしい。

287 名前:デフォルトの名無しさん [2016/07/09(土) 21:07:47.73 ID:g+Tip2fR.net]
ウィッス

288 名前:デフォルトの名無しさん mailto:sage [2016/07/11(月) 17:00:44.97 ID:ELH2iWp3.net]
マルチプロセス処理の Parallel::Prefork は、
Windows の StrawberryPerl か ActivePerl に、インストール可能ですか?
pass.cpantesters.org/distro/P/Parallel-Prefork.html

Strawberry、Active、旧バージョン、32bit、64bitなど色々試したけど、
>Can't locate Parallel/Prefork.pm in @INC (you may need to install the Parallel::
>Prefork module) (@INC contains: C:/...

289 名前:デフォルトの名無しさん mailto:sage [2016/07/12(火) 01:04:59.55 ID:BoIJCZeB.net]
cpanmやらppmでやってみたら

290 名前:デフォルトの名無しさん [2016/07/14(木) 20:00:42.23 ID:GgJblQeZ.net]
突然文字が正しく表示できなくなるゴミPerl
人をイラつかせるために作られた言語だなこれ
存在価値がないどころか存在事態が害悪
早く消滅すればいいのに



291 名前:デフォルトの名無しさん [2016/07/14(木) 20:06:36.90 ID:GgJblQeZ.net]
マジで使い物にならない
「ゴミPerlで文字がいきなり変になる対処」
「産廃Perlの文字取り扱いがおかしいのをなんとかする方法」
「糞Perlが文字をまともに扱えないことへの特効薬」
もう数時間検索してるが解決案が出てこない
こんなに酷い言語はPerlくらい

292 名前:デフォルトの名無しさん [2016/07/14(木) 20:15:06.51 ID:GgJblQeZ.net]
Perlは本物のゴミ
文字すらまともに表示できないとか利用価値なし

293 名前:デフォルトの名無しさん [2016/07/14(木) 20:25:10.95 ID:GgJblQeZ.net]
Perlのゴミなところ

文字「あ」すら表示すらできないためとてつもなくイライラする

294 名前:デフォルトの名無しさん [2016/07/14(木) 20:28:38.21 ID:GgJblQeZ.net]
明日納品なのに解決する兆しなし
こういうときは一から書き直すことも多いが何千行もあるシステムを明日までに書き上げられるわけもない
本当にPerlはゴミすぎる

295 名前:デフォルトの名無しさん mailto:sage [2016/07/14(木) 23:24:13.01 ID:RqQ+21r9.net]
だからバイナリで扱えと口が酸っぱくなるほど言ってきたわけで聞き入れないお前が悪い。

296 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 08:14:17.03 ID:rP1+mz2q.net]
文字コードを理解してないだけでは・・・?

297 名前:デフォルトの名無しさん [2016/07/15(金) 08:34:29.93 ID:XWIPLqFW.net]
テンプレの>>5 を誰かが勝手に変えたからだ。
元々はこうなっていた。
pc12.2ch.net/test/read.cgi/tech/1234181856/4
------------------------------------------------------------
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO =>

298 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 08:36:25.21 ID:XWIPLqFW.net]
ありゃ?途中で切れちゃった。>>293のリンク先見てね。

299 名前:デフォルトの名無しさん [2016/07/15(金) 09:08:17.43 ID:ATzxunsm.net]
とりあえず Data::Dumper と PerlIO::get_layers を使えば助けを求めるのに役立つと思うが
責任転嫁しかできないゴミに言ってもなぁ……

300 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 12:22:26.70 ID:XWIPLqFW.net]
>>287 それからな、
> ゴミPerl
> 産廃Perl
> 糞Perl
どれも、なかなかいいところを突いているが、ちょっと外れているな。
正解は「ガラクタ」だ。

Perl とは「pathologically eclectic rubbish lister」
(病的折衷主義のガラクタ出力装置)の 略なのだ。



301 名前:デフォルトの名無しさん mailto:sage [2016/07/16(土) 12:58:34.75 ID:STpjI2h3.net]
インコード
使ったソースは
ウンコード

302 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 01:45:28.71 ID:T2eP0LKz.net]
内部エンコードはperl独特だよね。
扱えれば入力と出力がどんなエンコードだろうが無双出来るけど

303 名前:デフォルトの名無しさん [2016/07/17(日) 09:40:41.84 ID:kAN9hSRv.net]
>>296
「Perl を愛する人にとっては」と前置きするのを忘れてるぞ。

304 名前:デフォルトの名無しさん [2016/07/17(日) 13:59:57.99 ID:D/SlpqZf.net]
まぁperlなんて使い物にならないでしょ

use utf8;付けたらそれまで文字化けしなかったUTF8の文字列が文字化けしたし

305 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 14:42:10.28 ID:F+fhoGjl.net]
なにその理論(笑)

まぁ使いにくいのは異論ないが

306 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 16:24:12.49 ID:Cv1W2kE4.net]
ではperlじゃないならなにがいいのかな。python?
rubyはパイプ記号が変なところで出てくるからちょっと違和感有り。

307 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 17:57:00.54 ID:PyzTEoPA.net]
= パイプ記号

308 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 17:57:53.58 ID:F+fhoGjl.net]
賭けてもいいが、文字コードが分からないのをPerlのせいにしてるやつが、
自分で1からプログラミングしたら壊滅的な状況になると思う。

309 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 02:39:59.89 ID:e41bhxXR.net]
でも、かつて壊滅的な状況じゃなかったよね?

310 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 03:14:08.10 ID:GZVIgCur.net]
>賭けてもいいが、文字コードが分からないのをPerlのせいにしてるやつが、
>自分で1からプログラミングしたら壊滅的な状況になると思う。

意味不明な言動をする気違い。

「賭けてもいいが、腹が痛くなるのを残飯のせいにしてるやつが、
自分で1から料理したら壊滅的な状況になると思う。」

と言ってるのと同等で意味不明。
気違い。



311 名前:デフォルトの名無しさん [2016/07/18(月) 07:46:08.11 ID:C0GpTohk.net]
自分で料理出来るのであれば、残飯なんて最初から食べないよ…
残飯を食べるという事は、食べざろうえない理由があっての事だろうに…

312 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 08:14:55.04 ID:dOZOPpl8.net]
すくなくとも腹痛を人のせいにしなくてすむんじゃね?

313 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 14:09:08.76 ID:UhcVRSnP.net]
高級料理も残せば残飯になるのさ。
最後の姿を見ただけで、本来の姿を判断するのは
無能というもの。

314 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 09:36:50.47 ID:BbD/ZGSl.net]
文字コードが分からないのをPerlのせいにしてるのは馬鹿の上限を突破してるが、
腹痛を残飯のせいにするのは間違ってないだろう。食ったと言う意味では馬鹿だが

315 名前:デフォルトの名無しさん [2016/07/19(火) 14:33:33.84 ID:kU2ISgr0.net]
どんなに文字コードを理解している人間でも文字をまともに扱えないピログラム言語の前では無力
その程度のことも分からないのかはたまたPerlがまともな言語だと錯覚しているのか
もし錯覚しているならば自分の使っている言語についてほとんど何も知らないということになる
まずはその自覚をすべきである

316 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 15:10:05.04 ID:QuuYpuW+.net]
参考までに聞くけど、文字をまともに扱える言語って何?

317 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 15:23:05.53 ID:BbD/ZGSl.net]
全行つっこみどころ満載なやつにかまってはいかん

318 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 17:32:04.55 ID:gGnx4FL9.net]
んで俺も文字をまともに扱える言語がなにか気になるわけだが
310とは別人

319 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 19:56:54.60 ID:lrew/2ZZ.net]
文字は知らんけど、
Perlってあらゆる面でPHPより劣ってるよな。

320 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 20:04:27.70 ID:y5BMpkOv.net]
PHPってHTML言語じゃないの?比較の対象にもならないと思うんだが。
rubyに負けてるというならまだわかるけど。



321 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 21:52:53.39 ID:gGnx4FL9.net]
PHPてあんた

322 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 23:37:17.38 ID:E+SEwayU.net]
>>316
HTML言語ってなんやw
HTMLに埋め込めるってだけでごく普通の
プログラム言語だぞ。

どれくらい普通かというと以下の機能が搭載されてる
・クラス
・インターフェース
・トレイト
・ラムダ
・クロージャー
・名前空間
・例外
・ジェネレーター
・ガベージコレクション

あと言語機能じゃないが、CLIプログラムの作成や
ウェブフレームワークなどもある。

323 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 23:43:45.09 ID:lrew/2ZZ.net]
>PHPってHTML言語
Perl厨は他の言語をロクに知りもしないで
敬遠してるんだろうな。
だからPerl厨はいつまで経っても
エンジニアとして半人前なのだろう。

324 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 23:47:10.52 ID:E5afqhTD.net]
309ではないがC言語。もちろんPerlもだ。
ついでなんで
s/ピログラム言語/プログラム言語/;

325 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 23:55:15.99 ID:gGnx4FL9.net]
Cって純粋なC?
ご冗談を。
あれは何も文字を扱ってないよ。
自分で作って下さい、ってね。

326 名前:デフォルトの名無しさん mailto:sage [2016/07/20(水) 23:58:27.03 ID:gGnx4FL9.net]
>>318
だからなに?
その機能'(笑)はわざわざ書かなくてはならないことなの?
だから文字の扱いに対してもおかしな考えを持つんだね。
文字を扱うのは言語の機能(笑)が大事なんだってね。

基本プログラムが出来ない人はスクリプトが持つ機能とやらに注目したがる。
自分でプログラミングできないからね。

327 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 00:13:43.65 ID:qEfVH42B.net]
普通のunix処理系にperlは入ってるけどPHPは入ってないでしょ。
Webプログラミングなんてどうでもいい。システムプログラミングとか
テキストマイニングしたいんだって動機から入るとぱっと見PHPは目に入らないよ。
紹介がWeb用ですなんだし。
幼児的に誹謗中傷しないで諭すコミュ力をつけたほうが。。

328 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 01:02:15.71 ID:eeWcI0WT.net]
PerlとPHPを比較するって事自体、CGIの定番としてPerlが使われはじめた15〜20年ぐらい前の話だから

329 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 02:09:41.10 ID:vaQfL518.net]
>>322
> その機能'(笑)はわざわざ書かなくてはならないことなの?

わざわざ書かないとわからないでしょ?w

これ以外に何が必要なんだい?
言ってみ。

330 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 02:18:26.64 ID:QEbE4SDT.net]
>>321
お前のいう文字は文字列のことか?



331 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 09:47:01.78 ID:oSsee0hG.net]
質問者が言う文字だ
質問じゃなくて子供の八つ当たりに見えたが

332 名前:デフォルトの名無しさん [2016/07/21(木) 10:12:11.24 ID:wN4yZ2B5.net]
普通のunix処理系wwww
普通てwwwwwwwwwww
こんな曖昧でいい加減な単語を使って反論になると思ってんのかwww

こんな客観的数値も示せない思い込みが根拠になるなら
普通の人間はPerlなんざ使わねーよwwwwwwwww
普通の人間はなwwwwwwwwwwwwwwwwwwwwwww

333 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 14:22:48.08 ID:+jQ9eKqj.net]
perl-5.24.0.tar.gz 開いて見てみたけど
ソースはC言語で書かれているんだよね

作った人は「自分で作って下さい」を実行したんだろうね

334 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 00:54:29.43 ID:ak+a/2Hs.net]
文字を扱うのは人間。Perlが扱っているのは文字コードな。

335 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 02:53:58.61 ID:jSbimIDf.net]
>>318
post/getがよしなにスーパーグローバル変数(笑)に入ったり
何もしなくてもエラーがブラウザで見られたり(言語がhttpプロトコルを理解できてる?)
iniファイルで挙動が変わったり
ごく普通のプログラム言語からはかけ離れてるだろ
Javascriptの方がよっぽど普通なんだけどなぁ

336 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 03:14:36.53 ID:7iYsigKa.net]
> post/getがよしなにスーパーグローバル変数(笑)に入ったり
それは10年以上前の話だよw
知識止まってんなぁ。

337 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 03:31:19.54 ID:jSbimIDf.net]
>>332
お前の使ってるナウ(笑)なPHPはquerystringに値いれてもvar_dump($_GET)するとnullなの?
言語って10年経とうが根本的な部分はそうそう変わんないだぜ

338 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 04:41:07.53 ID:7iYsigKa.net]
>>333
Perlでは グローバル変数$ENVの$ENV{'QUERY_STRING'} に
querystringが入るけど、それと何が違うん?

339 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 09:01:23.54 ID:jSbimIDf.net]
>>334
それはCGIとかがquerystringを環境変数へセットしてるだけであって(postは標準入力)
環境変数や標準入力、argsを読む機構はperlに限らずどの言語で備えてるでしょ。
デリミタも指定せずname[]のようなオレオレ仕様で勝手に解釈して予め変数に入れるのを
言語のレイヤーで行うのはphpぐらいしか思いつかない。

340 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 09:13:02.54 ID:7iYsigKa.net]
>>335
え?「思いつかない」ってだけ?w



341 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 09:14:42.73 ID:DCfhc9fh.net]
PHPの話してる時点でズレてるとは思わんのかね

342 名前:デフォルトの名無しさん [2016/07/22(金) 13:21:21.28 ID:9lWfzFCE.net]
いきなりなんの前触れもなかったし、何言ってんだ?と思ったら、PHPのdisりかよ。
知らんがな…

343 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 14:07:48.50 ID:jisYPSD0.net]
>セットしてるだけ
だけw

344 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 14:50:50.79 ID:jisYPSD0.net]
言い訳が苦しくなってくると、最後に「だけ」を付加するPerl厨
窃盗犯が「ちょっと借りただけだろ」と言い訳するのと同じ
犯罪者と同じ思考パターンを有するPerl厨

ちなみに犯罪者と同じ思考パターンを持つヴァカがPerlを選ぶのか
Perlを使ってるうちに犯罪者と同じ思考パターンを持つようになるのかは不明

どちらにせよPerl厨はヴァカで犯罪者予備軍ということに変わりはない
まともな人間はPHPを選ぶ

345 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 19:55:10.85 ID:d984b3j7j]
Perlと同程度に時代遅れなPHPを出してくる辺りが面白い。
2chという時代遅れな掲示板に、これからも、ずっと変わらずに居て、PHPを推し続けるのだろうな。

346 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 22:02:06.14 ID:ZdAo90QB.net]
今時仕事にも趣味にも役に立たないPHP選ぶバカはいないだろ

347 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 23:10:31.36 ID:jSbimIDf.net]
>>336
php以外の該当する言語を一つあげるだけで完全に論破できるチャンスだよ!

348 名前:デフォルトの名無しさん mailto:sage [2016/07/22(金) 23:38:00.41 ID:SRU6z2ZT.net]
はいはい。犯罪者予備軍ね。NGにしときますわ。
やりたいことやりたい人は処理系にこだわりはないのにアホか。
コード書けない中学生がVBよりVCと言ってるのと変わらんわ。

349 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 01:01:50.42 ID:tWjtYIW6.net]
>>343
逆だろ?

PHPが他の言語と一緒だということを証明するために
他の言語でもあるような機能を言う。
PHPは他の言語と同じであることを示すことが、正しい論破の仕方だ。

PHPは「他の言語+αの機能」であるという事実に対して
それと同じものを出すことで、何を論破することになるのか?

350 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 02:01:49.49 ID:bOUqJlZz.net]
そろそろ邪魔くさくなったから消えてほしい
劣等感のかたまりは迷惑関係なく必死で長所をアピールしはじめるってね
適切なスレでやってくれんかね



351 名前:デフォルトの名無しさん [2016/07/23(土) 02:30:45.09 ID:Z+5onCph.net]
嫌なら見なければいいのに
他人にあっちいけとか指示する池沼っているよな。
自己中心的な池沼のお手本。

352 名前:デフォルトの名無しさん [2016/07/23(土) 08:35:47.91 ID:rC+TU0A1.net]
他プロセスでファイルをopenしているときにそのファイルをrenameしようとすると
renameできないみたいだけどうまくrenameする方法は?

353 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 10:06:58.15 ID:I+uJVTmO.net]
close

354 名前:デフォルトの名無しさん [2016/07/23(土) 11:14:44.62 ID:rC+TU0A1.net]
>>349
それだとopenとcloseする間にrenameが割り込むとだめ

そこで自分で方法を考えました
まずディレクトリにaccess_kinshi.datというファイルを作ります
このファイルが存在している間は他プロ

355 名前:Zスでこのディレクトリにあるファイルは全てアクセスできないものとする
そしてディレクトリ内にあるファイルを全てrenameする
そのあとaccess_kinshi.datファイルを削除すればいいということです
[]
[ここ壊れてます]

356 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 11:20:06.22 ID:I+uJVTmO.net]
前提条件が変わってますけど

357 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 15:21:23.54 ID:bOUqJlZz.net]
他のプロセスってなに?
どっちもPerlで自分の作った物なら、ファイルロックでも使うと良い。
自動待機してくれる

358 名前:デフォルトの名無しさん [2016/07/23(土) 19:27:38.24 ID:IQFGkMCr.net]
後方参照で教えていただきたいことがあります。
A 80 90
(空白の部分はタブかスペース)
と書いてあるファイルの80とか90の部分を書き換えたいのです。
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$2$3$4$5/' file で
マッチした部分を参照できるのはわかっているのですが、この場合$3の「80」を「1」にするには
どのような方法をとればよいでしょうか?
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$21$4$5/' file とすると
$21と解釈されるようで結果がA 90となってしまいます。

359 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 19:32:51.24 ID:sc8oJJPG.net]
シェルスクリプトと同じで、{} で変数名を明治する。
/${1}${2}1${4}${5}/

360 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 19:41:00.25 ID:IQFGkMCr.net]
>>354
出来ました!!
{}で囲むのは思いつかなかったです。



361 名前:デフォルトの名無しさん [2016/07/23(土) 20:22:22.12 ID:rC+TU0A1.net]
>>352
他プロセスとは同じプログラムを複数で同時実行したやつです
それとファイルロックだとディレクトリにあるファイル1つ1つにロックしなきゃならないので
ディレクトリにあるファイル全てにアクセス禁止するために
アクセス禁止用ファイルを作りました

362 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 20:22:25.35 ID:erGYoQ8z.net]
スクリプトを動かすときは、「動きますように」と昭和する。

363 名前:デフォルトの名無しさん [2016/07/23(土) 20:41:29.11 ID:KzTkH9Ph.net]
自分で考えているというのは大変良いことだと思うけど、聞きたいことがあるなら
環境くらいは書いてくれないと……
それに、使用中のファイルを rename することの何が問題なのかさっぱり解らない。
まず、何をするプログラムなのかを書いた方がいいと思うよ。

364 名前:デフォルトの名無しさん [2016/07/23(土) 22:25:30.57 ID:rC+TU0A1.net]
a

365 名前:デフォルトの名無しさん [2016/07/23(土) 22:36:22.09 ID:rC+TU0A1.net]
なんか書き込こもうとするとエラーが出て書き込めないわ

366 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 22:48:53.55 ID:rC+TU0A1.net]
ようするに
てすと1シージーアイ
OPEN(IN、”あああ.DAT”);
すりーぷ(5);
cLOSE(IN);


てすと2シージーアイ
リネーム(”あああ.DAT”、”AAA。DAT”);
これを同時実行してもリネームはできなかったってこと

367 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 22:51:17.71 ID:rC+TU0A1.net]
同時実行って言ったけど先にてすと1の方を起動して5秒以内にてすと2を起動です

368 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 23:18:44.54 ID:eYAwBGPh.net]
他のプロセスが開いているファイルを、更新できるわけないだろ

2つのプロセスで、ファイル共有できるのは、read & read、の組み合わせだけ。
read & write, write & read, write & write は、共有できない

369 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 23:40:01.25 ID:sc8oJJPG.net]
>他のプロセスが開いているファイルを、更新できるわけないだろ

何を前提に話してんだ?
更新出来るから、ファイルロックなぞの方法が開発されたんじゃねーの?
$ for i in 1 2 3 4 5 ; do
> perl -le 'open my $f, q{>>}, q{foo.txt} ; print $f q{foo} ; sleep 2' &
> done
$ cat foo.txt
foo
foo
foo
foo
foo

370 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 23:51:16.68 ID:tWjtYIW6.net]
>>364
更新 ”できないようにする" から
ロックなんだよ。アホかw



371 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 23:55:37.22 ID:sc8oJJPG.net]
>>365
ん?
(デフォの状態では)更新出来るから、
(更新出来ないようにするための)ファイルロックなぞの方法が開発されたんじゃねーの?

ってレスだったんだが、、、

372 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 00:40:44.17 ID:9mJaMPLw.net]
更新できるのは、同一プロセス内のマルチスレッドだろ

だから、マルチスレッド・プログラミングは難しい

373 名前:デフォルトの名無しさん [2016/07/24(日) 01:05:08.31 ID:IyAH6Xir.net]
ファイイルロックのモードは2より5のノンブロッキングの方が軽いですか?

374 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 01:16:29.25 ID:p8SJSbCV.net]
>>368
軽いかどうかで決めるんじゃない。
それが必要かどうかで考えろ。

ホント頭が悪いやつは、軽いかどうかの基準しか
持ち合わせてないんだよな。

375 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 02:10:22.95 ID:8SIezcUV.net]
上の2行は頭いいように見えたが
下の2行でホントに頭が悪い人だと思った。
誹謗癖はやめようね。嫌われるよ。というかすでに嫌われてると思うけど。

376 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 02:12:06.72 ID:p8SJSbCV.net]
>>370
正しいのか間違っているのかをいえよ。

377 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 03:52:51.83 ID:9mJaMPLw.net]
ノンブロッキングは、Node.js などが並行処理で、リクエストを受け付ける場合に使う。
こういうのは、プロ中のプロが使うもので、プログラムも順序通りには進まないから、
プログラミングが極めて難しい(イベントドリブン)

初心者は、ブロッキングを使え。
プログラムは一本道で、順序通りに進む

378 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 04:07:39.30 ID:p8SJSbCV.net]
※ただしマルチタスクOSじゃない場合に限る

379 名前:355 [2016/07/24(日) 10:28:35.84 ID:K5Ja97DP.net]
>>361
少なくとも Linux では問題なく rename できるよ。
rename できないというのはシステムコールのマニュアルに書いてあるの?
テストのやり方に問題は無かったの? こんなふうに同期させた方がいいと思うんだけど。

https://ideone.com/639PgP

380 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 22:44:38.60 ID:IyAH6Xir.net]
このようにflockをネストするのは問題ありますか?

open(IN, "< $datafile");
flock(IN, 1);

open(IN2, "< $datafile2");
flock(IN2, 1);
close(IN2);

close(IN);



381 名前:デフォルトの名無しさん [2016/07/25(月) 18:20:04.46 ID:tVy4ghQr.net]
>>374
windows環境だけどopen中のファイルのrenameはできなかった

例えばtestディレクトリがあって、プロセスAでtestディレクトリにあるファイルのrenameやファイルの作成、
プロセスBでtestディレクトリを削除するとした場合
testディレクトリにファイルが残っているとrmdirが成功しないのでtestディレクトリを削除できない
unlinkでtestディレクトリのファイルを全て削除してからtestディレクトリを削除しようとしても
その間にプロセスAでファイルが作成された場合ディレクトリを削除できない
だからディレクトリそのものをロックしたいっていうこと

382 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 08:16:09.27 ID:Yl3q3y9J.net]
>>375
問題ない

383 名前:デフォルトの名無しさん [2016/07/26(火) 13:18:10.17 ID:0CGOQrnU.net]
>>376
そういうことを先に書いてくれないと……
そうか、Windows ではできないのか……
プロセスAの処理が終わるまでプロセスBを待たせておきたいということなら
普通に mkdir でどうでしょう。可搬性も高い排他制御の定番です。

384 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 13:54:47.54 ID:M5KaPrwS.net]
>>376
File::Path -> remove_tree

search.cpan.org/~riche/File-Path-2.12/lib/File/Path.pm

385 名前:デフォルトの名無しさん [2016/07/26(火) 18:01:31.91 ID:0CGOQrnU.net]
何が目的でそのための何をしている状況なのかというのがいまだに理解できないんだけど、
そもそもそんな状況にしないやり方を考えた方がいいのかもしれない。
どうしても排他制御が必要なら例えばデータベースを使うというのは Windows でも出きると思う。
Windows のことは知らないからこれ以上はお役に立てそうに無い。

386 名前:デフォルトの名無しさん [2016/07/27(水) 02:23:44.17 ID:8IadtePG.net]
簡単に言うとディレクトリをmkdirで削除したいけど
削除しようとしている間にディレクトリ内にファイルを作られるとmkdirできなくて削除できないので
ディレクトリ内にファイル作成もディレクトリ内のファイル読み込みも禁止にしたかったってこと

387 名前:デフォルトの名無しさん [2016/07/27(水) 02:26:13.90 ID:8IadtePG.net]
mkdirじゃなくてrmdirだ

388 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 08:10:16.74 ID:yPkdt5ig.net]
任意のプロセスがアクセスできるディレクトリを削除したいという要求自体が間違っている

389 名前:デフォルトの名無しさん [2016/07/27(水) 08:32:01.24 ID:8IadtePG.net]
>>383
bbsディレクトリの中に各掲示板ごとのディレクトリがあって、さらにその中にログファイルや掲示板設定ファイルがある
削除したい掲示板は各掲示板のディレクトリごとに削除するしかないのでどうしても任意のプロセスがアクセスできる
ディレクトリを削除するしかない

test1掲示板の場合
ファイルはbbs/test1/logfile.datとbbs/test1/settei.datがあって
掲示板を削除する場合はまずこの2つのファイルを削除してtest1ディレクトリを削除するということです

390 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 09:49:12.77 ID:uNHlpX2c.net]
その掲示板とやらのディレクトリは本当に、自分のプロセスだけでなく任意のプロセスからもアクセスできるのか?

であれば、ディレクトリのパーミッションが間違っている。自分のプロセス以外のアクセスを禁止せよ。

自分のプロセスしかアクセスできない前提であれば、好きなように自分で排他制御を行えばよい。例えば>>378のように。



391 名前:デフォルトの名無しさん [2016/07/27(水) 15:57:37.43 ID:8IadtePG.net]
>>385
普通の掲示板やで
普通掲示板は誰でも観覧と書き込みができるので任意のプロセスからでも読み書きできる
それとディレクトリの削除はブラウザからperlで書いたcgiを起動して削除するので
パーミッションでのオーナーとかの判別はできないんや

392 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 16:17:33.22 ID:uNHlpX2c.net]
掲示板のcgiが動いてるプロセスは掲示板を閲覧しているユーザとは関係なかろうが。
これ以上はperlの話ではなく、そのcgi固有の話だ。
ここでやる話ではない。

393 名前:デフォルトの名無しさん mailto:age [2016/07/29(金) 21:21:45.34 ID:kdSSWeOo.net]
my(@aaa);
@aaa = sort {$b <=> $a} @aaa;

このとき$a,$bをmy($a,$b)やlocal($a,$b);と宣言するとエラーになります
$a,$bはどのように宣言すればいいんですか?

394 名前:デフォルトの名無しさん mailto:sage [2016/07/29(金) 22:20:02.88 ID:lqBNaMPB.net]
aとbはあらかじめ用意された特殊変数。
特殊変数は全部グローバル変数

395 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 00:48:59.27 ID:pBzYHnSl.net]
>>381
他のプロセスに使われる前にディレクトリ名をランダムな名前に変更
するとよい。変更後に rmdir する。

396 名前:デフォルトの名無しさん [2016/07/30(土) 08:47:55.59 ID:k05zeajW.net]
1:投稿ファイルをロックして書き込み
2:投稿数ファイルをロックして書き込み

1の排他ロックが成功して2の排他ロックが失敗してタイムアウトになり書き込みできなかった場合
投稿数が実際の投稿より少なくなりが整合性がとれなくなる
この場合下記のようにまとめてロックするのが普通?

まとめ排他ロック
1の処理
2の処理
ロック解除

397 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 09:56:42.41 ID:0Jkia02i.net]
>>391
そういう場合はまとめた単位でロックを取ることが多い
あるいはロールバックできるようにするしかないけど、それはたいてい難しい

398 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 09:21:12.12 ID:9W15s1XM.net]
1:投稿ファイルをロック
2:投稿数ファイルをロック
3:投稿ファイルを書き込み
4:投稿数ファイルを書き込み
5:投稿ファイルをアンロック
6:投稿数ファイルをアンロック

399 名前:デフォルトの名無しさん [2016/07/31(日) 14:54:33.71 ID:V3GimjB6.net]
PostgreSQLのTIMESTAMP形式の文字列を秒数(Perlのtime関数で取得したような状態)に直す関数教えて

400 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 23:49:48.17 ID:C1WIu1+e.net]
use DateTime::Format::Pg;
print DateTime::Format::Pg->parse_datetime( '2016-08-21 23:50:01' )->epoch;



401 名前:デフォルトの名無しさん [2016/08/05(金) 00:01:27.27 ID:RLQt/Rjs.net]
>>393
それだとロックの間に隙間ができる

402 名前:デフォルトの名無しさん [2016/08/05(金) 00:02:57.68 ID:RLQt/Rjs.net]
実行時間が0.15秒から0.2秒のperlスクリプトは重い部類ですか?

403 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 00:22:53.93 ID:/+BaQz+x.net]
>>393
データとは別にロック中か識別するためだけのロックファイルまたはディレクトリを用意するものなんじゃないの?>>392のように

404 名前:デフォルトの名無しさん [2016/08/05(金) 09:40:54.31 ID:rvcc+G4N.net]
1:投稿数ファイルをロック
2:投稿数ファイルを書き込み
3:投稿数ファイルをアンロック
4:投稿ファイルをロック
5:投稿ファイルを書き込み
6:投稿ファイルをアンロック

じゃだめなのかな。

405 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 09:49:56.50 ID:iMQ1FKDS.net]
それ投稿数と投稿が連動してないやん

ロック
必要な書き込み全部
ロック解除

が普通

406 名前:デフォルトの名無しさん [2016/08/05(金) 17:58:59.50 ID:rvcc+G4N.net]
それは「普通」というより「手抜き」だね。最初はそれでいいと思うけど。

407 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 21:06:28.92 ID:n2C4Ao5J.net]
>>401
普通じゃなくて天才だよ。
完璧な答え。

408 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 21:06:53.73 ID:n2C4Ao5J.net]
>>399
だめ。それはバグ。

409 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 00:52:14.83 ID:aSfsFG4F.net]
まあ質問の直後にいきなり答えが書いてある
それを分からないのが混ぜ返してるだけだ
>>391-392

410 名前:デフォルトの名無しさん [2016/08/06(土) 07:58:04.15 ID:nmoqGXlF.net]
(書き込み時)

1:まとめロックようファイルを作る
2:まとめロック用ファイルを排他ロックする
3:投稿ファイルにを投稿を書き込む
4:投稿数ファイルに投稿数を書き込む
5:まとめロックの解除

(観覧時)
1:まとめロック用ファイルを共有ロックする
2:投稿ファイルを読み込んで表示する
3;投稿数ファイルを読み込んで表示する
4:まとめロックを解除

これが正しい



411 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 01:43:06.25 ID:s2zPwIrc.net]
>>396
何のために数字が振ってあるのか分かる?

412 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 02:52:34.66 ID:d2ilw35z.net]
なんのため?
プロセス間の整合を取るのにプロセス内の順序は全く意味ない数字と思うけど。
うーん、なんのためだろ?教えてくれないかな?

413 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 22:13:03.27 ID:zWs+JfAu.net]
> プロセス内の順序は全く意味ない数字と思うけど。

え? 順番を入れ替えても同じなると思ってるの?
例えば5 → 1 → 4 → 3 → 2 → 6 の順番で
実行しても同じ結果になると?

ロックの話以前に、あんたが何が言いたいのかわからない

414 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:09:59.97 ID:d2ilw35z.net]
んでなんのため?

あと関係ない話しかしてないようだけど、同じになるって情報はどこから?
そしてその話になんの意味があると思い込んでますか?

415 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:36:26.59 ID:zWs+JfAu.net]
> んでなんのため?

順番が重要だからだろ。

416 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:38:43.66 ID:zWs+JfAu.net]
>>393が書いてあることは正しくて、
この順番通りの処理をすると不整合が起きない。

重要なのは書き込みを行う前に書き込むファイルすべてを
ロックする

417 名前:ニいうこと。最初にまとめて行う。

こうすることでロックの間に処理が割り込まれず
正しく書き込むことができる。
[]
[ここ壊れてます]

418 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:45:04.85 ID:d2ilw35z.net]
ここまで正しい回答が何度も出てるのに、そのあとから間違った回答を自身満々にするのもすごいと思う
ロックは常にプロセス間の整合のみ取るべし

419 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:54:26.10 ID:d2ilw35z.net]
ごめん。外部仕様としてはこの場合正しかった。
内部的にはやってはいけないお手本のような無意味なロックがされてて、それで勘違いした。すまんかった。

420 名前:デフォルトの名無しさん mailto:sage [2016/08/10(水) 08:11:51.04 ID:UJ0StgLg.net]
いいってことよ



421 名前:デフォルトの名無しさん mailto:sage [2016/08/13(土) 09:19:35.74 ID:Y2Ng1HRN.net]
確かにロックはプロセス間通信の一種で使う技術も同じか
こうゆうのはスクリプトをプログラムと思ってる人と、プログラムの基礎的な部分から学んだ人とでは差が出そうだね

422 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 20:05:32.69 ID:2GCPiaHi.net]
windows7で文字化けファイル名を取得するとショートファイルで得られるようですが、
ロングファイルのビットの並びをそのまま得たいです。
指定して得るにはどうすれば良いでしょうか?

ちなみにDOSなどでのコマンドは知っています。

423 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 23:45:40.07 ID:vzm1zF9k.net]
`dir /b *.*`
次スレのテンプレに追加するから

424 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 00:01:48.07 ID:GgtizVRn.net]
コマンドじゃなくてPerlでどうにかしたいのだけど

425 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 02:38:12.51 ID:a3VZWpnc.net]
バッククォートの意味が分からないのかな

426 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 07:59:22.61 ID:GgtizVRn.net]
コマンドだろ

427 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 22:48:28.92 ID:evJ0lXFt.net]
my @file = split(/\n/,`dir /b *.* 2>NUL`);
# あとは夏休みの宿題、な

428 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 08:59:06.43 ID:hHpNATWD.net]
すまん、回答してるつもりだろうけど、頭悪い人に用はないんだ。
わざわざ何度も書いてる様だが、一番最初に(も)言った通りコマンド使うやりかたはできるから。

あと全レス会話の繋がりもなく、堂々と好き勝手なこと書く人間もしんどい。

429 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 12:35:26.35 ID:CgBgF68oI]
search.cpan.org/~grian/Win32-FindFile/lib/Win32/FindFile.pm

などと挙げてみたものの、あまり信用できないモジュールだな、これ。

430 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 20:30:09.76 ID:fxHMMLTZ.net]
いや、君の記述能力が頭悪いんだよ。
流行の言葉で言うとコミュ力やプレゼン力がない。
コマンド知ってますなんて言い方じゃ伝わらない。
少しは自分の不徳を省みたらどうか。



431 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 20:38:10.41 ID:W4vM/rXO.net]
再現出来る環境無いんだけどWin32::GetLongPathNameはどうかな

432 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 20:59:49.53 ID:jqqoh+mK.net]
これは知ってるかい?→ <*>

433 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 23:20:14.12 ID:hHpNATWD.net]
>>426
すまないがそれでは得られる文字は同じで、文字化け文字にはショートが適用されます。
おそらくwindowsに対するアプローチを変えないとだめだと思うのです。

>>425
いけたよありがとう。
API叩いてやりくりしてたけど、暫定的にそれを使わせてもらうよありがとう。
windowsは外部的にもさっさとunicode使ってほしいと思う。


>>424
その無駄な4行必要か?なんか書きたいなら頑張って回答書けば?(俺としては書かないで頂きたいけどな)

434 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 23:31:21.73 ID:jqqoh+mK.net]
まあとにかく特殊な環境なんだね。もう少し前提条件を書いたほうが早く欲しい回答を得られたと思うよ。
>>4

435 名前:16の書き方じゃ>>424に文句を言う筋合いはないよ。 []
[ここ壊れてます]

436 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 17:11:38.79 ID:x3G6j3++.net]
どうでもいいけど特殊な環境じゃなくてwindows標準の仕様かと

437 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 21:33:30.70 ID:NQxKIK4Q.net]
文字化けが問題なんだろうね

438 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 21:40:22.45 ID:x3G6j3++.net]
なぜ化けるのか、と言う話だ
CP932とunicodeが混在してる場合はどうすりゃいいですかって話じゃね

439 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 19:27:50.30 ID:vCLh7LOG.net]
ココ参考にして ttp://hirobanex.net/article/2015/03/1425807814
こういう呼び出ししても
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)

Can't locate object method "insert_on_duplicate" via package "Teng::QueryBuilder"
で呼べないんだけどどうしたらいい?

440 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 19:29:20.37 ID:vCLh7LOG.net]
ちなみに
__PACKAGE__->load_plugin('+SQL::Maker::Plugin::InsertOnDuplicate');

でもダメ



441 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 20:39:24.43 ID:0j1lNnbm.net]
ブログ記事じゃなくてPOD読めよ

442 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 22:35:57.18 ID:vCLh7LOG.net]
PODに別パッケージから plugin生やす方法なんて書いてないでしょ

443 名前:デフォルトの名無しさん [2016/09/03(土) 20:53:36.76 ID:pSsdJ5JF.net]
マジレスするなら、
別の方法で呼べるか試してみる
何が起こっているのか調べてみる
ってところか。

444 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 12:53:46.35 ID:JRjUoSNq.net]
何を調べたらいいのかわからんので手が付かない

445 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 13:05:29.57 ID:JRjUoSNq.net]
はっきりしてるのはhirobanexのとおりに書いてもエラーで動かない事
それも $teng->->execute なんていうタイポレベルの話じゃなく
根本的にどこか間違ってるけど、どこだかわからんということ

$teng->sql_builder ってSQL::Makerを継承した状態でnewされてるんじゃないの?
Teng::QueryBuilder = SQL::Maker だから
これで動くんじゃないの?
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)

446 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 16:12:29.13 ID:yxgmGddx.net]
もう直接コード読めよ

447 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 16:58:05.37 ID:yxgmGddx.net]
$teng->sql_builderでTeng::QueryBuilderのオブジェクトが帰ってくる
これはほぼSQL::Makerを継承しただけなのでSQL::Maker::load_pluginを読むとどうやらクラスメソッドとして書かれている
実際SQL::MakerのPODにも継承したクラスでクラスメソッドとして呼び出す例が書かれている

つまり $teng->sql_builder->load_plugin('foo') という書き方はオブジェクトから呼び出してるので間違い(おそらくTeng::QueryBuilder=HASH(0x000000)みたいなところに生えてる)
Teng::QueryBuilder->load_plugin('foo') とするか ref($teng->sql_builder)->load_plugin('foo') とするか
もしくはブログの例にもある通り独自のQueryBuilderクラスを用意するか

>>433
この__PACKAGE__はどこに書いたんや?__PACKAGE__の意味わかってる?

448 名前:デフォルトの名無しさん [2016/09/09(金) 17:40:55.04 ID:iPoh5J1m.net]
もう、馬鹿過ぎて哀れだ。実際にやりたいことは

*SQL::Maker::insert_on_duplicate = \&SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate;

ってことでしょ? もうこれでいいでしょ。POD すら読まないんじゃ助けようがないよ。

449 名前:437 [2016/09/10(土) 11:47:34.76 ID:VYsCJTGt.net]
ごめん、言い過ぎた。とりあえず、正解が分らない段階で俺ならどうするかを書くよ。

まず、何をしているのかを POD で確認する。
POD では load_plugin についてはクラスメソッドとして使う例だけが書かれている。
ここで「おかしい」と思わなければならない。
オブジェクトメソッドとして使えないとは書かれていないのでソースコードを読む。
%INC を見ればソースコードの場所は分かる。
load_plugin は予想以上にシンプルだった。これで解決。

解決しなかった場合。
まず、SQL::Maker::Plugin::InsertOnDuplicate を明示的に use する。それで間違いなく呼べる。
SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate( $teng->sql_builder)
あるいは
$teng->sql_builder->SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate
好きな方でいい。これでうまくいくなら load_plugin で何かが間違っている。
デバッガを使うか、load_plugin を差し替えて動作を詳しく調べる。

450 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 18:20:16.29 ID:1M4Sozo+.net]
Tengを使うのかどうか自分で選べるのなら、自分が理解していないものを使わないという選択肢がある。
他の人が選んでしかも使わなければならないという状況なら、選んだ人にどう使うのかを聞くといい。



451 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 19:19:33.59 ID:7Wlp4jMr.net]
多分ブログ書いた人やその人に教えた人はTeng本体と混ざって勘違いしたんだろうな
Teng自体はインスタンスからもロードできるから

452 名前:デフォルトの名無しさん [2016/09/13(火) 17:44:13.57 ID:AYCTTYgO.net]
この記事、オレオレメモだって自分で書いてるからわざわざつっこむのも野暮だけどOR検索の例もちょっとひどい。
どうしてこうなった?

453 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 14:09:25.16 ID:ULuG4eTB.net]
Windows の Strawberry Perl で、「Parallel::ForkManager」は使えますか?

----------------------------------------
use LWP::Simple;
use Parallel::ForkManager;
...
@links=(
["www.foo.bar/rulez.data","rulez_data.txt"],
["new.host/more_data.doc","more_data.doc"],
...
);
...
# 最大30プロセスで並列的にダウンロードを行います
my $pm = new Parallel::ForkManager(30);
foreach my $linkarray (@links) {
$pm->start and next; # forkさせます
my ($link,$fn) = @$linkarray;
warn "Cannot get $fn from $link"
if getstore($link,$fn) != RC_OK;
$pm->finish; # 子プロセスをexitします
}
$pm->wait_all_children;
----------------------------------------
の様なスクリプトで、数万ファイルをダウンロードしようとすると、
  child process '-*****' disappeared.
  A call to `waitpid` outside of Parallel::ForkManager might have reaped it.
のエラーを出しながら、メモリを全消費・開放を何度か繰り返した後に、
最終的には、「Out of memory!」で異常終了します。

Cygwin の Perl では、「Cannot get $fn from $link」エラーを出しまくりますが、
メモリを全消費する事はありません(異常終了もしません)。

454 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 15:02:46.45 ID:EZPik98J.net]
windowsのForkは、表面上は同じように動作する仕様になっているが、
実際にプロセスやスレッド、CPUの動作が期待通りになってるかと言うとそれは違う。
ほとんどの場合が、unixとの互換性を保つための見せかけ。

455 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 16:23:36.65 ID:PQbGo3UU.net]
rulezの綴りがzの辺り、悪さしてそうだな

456 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 01:08:30.38 ID:Ay1vA5a9.net]
if($hoge=~/(\d+)$hoge3$/){$hoge2=$1}

これの意味は

$hoge3が数字のみなら$hogeに代入し、$hoge2にも代入するという意味でしょうか?

457 名前:442 mailto:sage [2016/09/23(金) 05:21:37.52 ID:CNgCRT2E.net]
>>447
「WindowsのFork」の意味は分かりませんが(Windows用PerlのFork?)、
Cygwin の perl は、
  C:\cygwin64\bin\bash --login -i -c "perl ...
等としなくても、Windows から直接起動出来るので、
あのスプリクトで直接起動しても、メモリエラーは出ませんでした。

Cygwin の perl を、Strawberry Perl の代わりに、、、と思ったら、


458 名前:ォなり chomp が、CR+LF を削除してくれなかった。


>>448
perldoc.jp からのコピペです。


>>449
if ( 文字列 =~ /パターン/ )
もし「文字列」の中に「パターン」が含まれていれば、

if ( $hoge =~ /(\d+)$hoge3$/ ) { $hoge2 = $1 }
もし「 $hoge 」の中に「 \d+$hoge3$ 」が含まれていれば、「 $hoge2 」に「 \d+ 」を代入
[]
[ここ壊れてます]

459 名前:445 mailto:sage [2016/09/23(金) 08:03:28.29 ID:Ay1vA5a9.net]
>>450
ありがとうございます。
他言語の底辺SEなので助かりました。

460 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 14:09:14.63 ID:eBfGtRhY.net]
普段それを読む文化にない人がいきなり読めたら逆にすごいと思う
PerlってPerlが分かる人だけの言語



461 名前:デフォルトの名無しさん mailto:sage [2016/09/26(月) 17:38:36.14 ID:ak8zLIw0.net]
Perl on Bash on Ubuntu on Windows10 での、
モジュールのインストールで、無駄に苦労した。
  解決法: Config.pm の修正


Windows10 のコマンドプロンプトでも、
エスケープシーケンスが使えるらしい。
  PROMPT $E[96m$T$E[3D $E[93m$P$G$E[37m$E[1C
懐かし

462 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 02:39:45.69 ID:sK8+jqCL.net]
ソースはサンプルコードな

463 名前:デフォルトの名無しさん mailto:sage [2016/10/03(月) 14:01:12.25 ID:OUfpKV3+.net]
C:\> prompt $e[1;36m[$d$s$t$h$h$h] $e[1;33m%USERNAME%@%COMPUTERNAME% $e[37m$p$_$g$s

464 名前:デフォルトの名無しさん [2016/10/03(月) 19:32:24.04 ID:tI+B9pP0.net]
ザメフォン元気?

465 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 18:37:40.82 ID:fMpg74pi.net]
ビット演算を多用したいんだけど、変数のサイズを指定したい。longとか。
とりあえず、16bitと32bitと64bitの整数が欲しい。
あと数値と文字が勝手に切り替わらないようにしたい。

ビット演算してるブロックだけでいいんで。
あと環境の保証も欲しい。どのマシンでどのbitのPerlとか関係なく。
俺が32bitのビット演算って言えばそれはもう絶対32nit演算。
もちろん不当に遅くなる方法は許さない。

466 名前:デフォルトの名無しさん [2016/10/06(木) 20:14:48.16 ID:rUXrZJG3.net]
C で書け。

467 名前:デフォルトの名無しさん [2016/10/06(木) 20:56:23.24 ID:Wdgc44Vq.net]
C++でもいいぞ

468 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 21:07:21.59 ID:ZdOAOk1u.net]
rubyで十分

469 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 21:31:39.42 ID:fMpg74pi.net]
Cとかでもいいけどdllの使い方分からないのだ

470 名前:デフォルトの名無しさん mailto:sage [2016/10/07(金) 03:14:09.37 ID:hiGL0oI+.net]
perldoc.jp/func/pack でOK



471 名前:デフォルトの名無しさん [2016/10/07(金) 07:25:20.66 ID:codMUtxm.net]
vec かな。それでも不満なら perlfaq3 を読んで C で書け。

472 名前:デフォルトの名無しさん [2016/10/07(金) 12:43:21.52 ID:codMUtxm.net]
実際に何をして、その結果何が問題だったの? そのくらいは書いてくれないと……

473 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 01:08:43.11 ID:hitB9rm0.net]
>>461
xsと言うのがあるが、一時的に値が複製されて良いなら標準入出力(メモリ渡し)のほうが絶対に楽だと思うのだ。
ま、perl使ってるなら複製されたメモリのほうが元のデータより圧倒的に小さいはずだが

474 名前:デフォルトの名無しさん [2016/10/08(土) 09:19:23.51 ID:ZgFPdp2t.net]
ビット演算したいなら普通にすればいいよ。
◯ビット変数がほしいといわれても、それは適切にマスクすればいいだけだし。
◯ビット変数のように振る舞うものがほしいということなら、Perl は C よりも期待に応えられると思うよ。
まずは C と同じ書き方をして速度を計ってみてよ。話はそれからだ。

475 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 22:30:15.59 ID:KfBpvv2w.net]
はぁ?
~0 この時点で同じになりませんがな

476 名前:デフォルトの名無しさん [2016/10/09(日) 00:00:21.79 ID:ja1MeL+I.net]
>>457 に言ってるんだよ?

477 名前:デフォルトの名無しさん [2016/10/10(月) 16:43:42.37 ID:zhEtfxQ/.net]
もう連休終わっちゃうんだけど結局何をしたかったのかな。

478 名前:デフォルトの名無しさん mailto:sage [2016/10/11(火) 00:06:06.59 ID:SYi+Wrc4.net]
その日のうちに解決したんじゃね?
木曜日の相手になに言ってんだか

479 名前:デフォルトの名無しさん mailto:sage [2016/10/11(火) 00:28:33.80 ID:SYi+Wrc4.net]
しかし普通の言語やったあとにPerlやると異常なほど即座に短く書き終えるからなにか書き忘れてるんじゃないかと不安になる。
正しく動くと分かると異常なほど楽で嬉しくなるし、C++とかが馬鹿らしくなる。
そして実行速度計ると結局全部納得してため息。

480 名前:デフォルトの名無しさん [2016/10/11(火) 19:01:16.50 ID:A+TNY00d.net]
stat($file_path);でファイルを作成したtimeは
atime,mtime,ctimeのどれなの?



481 名前:デフォルトの名無しさん mailto:sage [2016/10/11(火) 19:50:08.12 ID:Mt8tOIIr.net]
>>472

perldoc.jp/func/stat
> 8 atime 紀元から、最後にアクセスされた時刻までの秒数
> 9 mtime 紀元から、最後に修正(modify)された時刻までの秒数
> 10 ctime 紀元から、inode 変更(change)された時刻までの秒数 (*)

> 明らかに、ctime のフィールドは移植性がありません。
> 特に、これから「作成時刻」を想定することは出来ません

perldoc.jp/docs/perl/perlport.pod#Files32and32Filesystems
> ファイルシステムはアクセスタイムスタンプや変更タイムスタンプに
> 対応していないかもしれません (つまり移植性のあるタイムスタンプは
> 変更タイムスタンプだけです); またタイムスタンプは 1 秒単位では
> ないかもしれません (例えば、FAT ファイルシステムは時刻の単位は
> 2 秒単位です)。

>「inode 変更タイムスタンプ」 (-C ファイルテスト) は (Unix 以外では)
> 実際には「作成タイムスタンプ」かもしれません。

482 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 08:39:20.39 ID:9k51B2Do.net]
Perlのオブジェクト指向読んだばっかりで理解が曖昧なんだけど、
これだと、オブジェクトがオブジェクトなのか関数なのかって呼び出し側で決める事にならない?
コンストラクタもメソッドも。
ついでに、インスタンスのカプセル化どうこうも、呼び出し側の権利?

みたいに見えたのですが。

483 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 13:04:43.13 ID:kXFNS19K.net]
>>474
そうだよ
それはC++等でも同じ

484 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 14:33:18.63 ID:9k51B2Do.net]
>>475
ありがとう

以下みたいな感じの記述は使っても問題ない?
あと穴があった場合も教えて欲しい。
(複数回に分けて書くので途中で書けなくなるかも)



use utf8;
use strict;
use warnings;

#ただの実験
# 1: メソッドとインスタンスをカプセル化する。
# 2: クロージャを、あたかもオブジェクト指向と同じ記法で呼び出せるようにする。(クロージャとオブジェクト指向の同一視)
# 3: クロージャをクロージャのまま使いたければそうできるようにした。そもそもクロージャのほうが速いので。

485 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 14:33:37.13 ID:9k51B2Do.net]
{
package Class;

sub new{
my $class = $_[0] eq __PACKAGE__ ? shift : undef ; #オブジェクトとして呼び出されたかどうか
my $self = {
Name => shift,
};

my $method = {
NameGet => sub{ $self->{Name} },
NameSet => sub{ $self->{Name} = shift; },
};

return $method if(!$class); # 普通の関数(クロージャ)として呼ばれた場合
return bless $method, $class; # オブジェクトとして呼ばれた場合
}

sub AUTOLOAD {
our $AUTOLOAD;
my $method = shift;
ref($method) eq __PACKAGE__ or return("error");
my @load = split '::', $AUTOLOAD;
my $load = $load[-1];

$method->{$load}->(@_);
}
}

486 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 14:34:03.93 ID:9k51B2Do.net]
{
package test;

my $c = Class::new("Closure"); #クロージャとして呼び出すと、一般的な

487 名前:クロージャと同じように使える。
print $c->{NameGet}->() . "\n";

my $o = Class->new("Object"); #オブジェクト指向として呼び出すと、オブジェクト指向と同じように使える。(中身はクロージャ)
print $o->NameGet() . "\n";

print Class::NameGet(); #関数のように呼ぶとエラー
}

__END__

以上です
[]
[ここ壊れてます]

488 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 16:49:58.02 ID:HdFKT2Ip.net]
オブジェクト指向=カプセル化ではないし、perl5でももう少しスマートなカプセル化のやり方もあるが筋が悪いからおすすめはしない
perl6はオブジェクト指向に関してはかなりマシだけど、そもそも速度気にするならperlは向かない

perl5じゃないとダメなら規約などで上手く付き合うしかない
ちなみにそのコードだとまともに継承できないね

489 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 21:51:13.12 ID:9k51B2Do.net]
やりかたがあると言うのなら、提示して欲しいのだけど。(ただの俺は知ってるぞ自慢?)

事前に試しましたが、継承はできましたよー。
複数クラスを書くと長くなるので書きませんが、
まったく同じように別のクラスを書いて、ベースにしたいクラスを呼び出して更新すれば
とりあえずインスタンスもメソッドは継承されるですね。

あと穴は一つ発見しました。
これは後出しにしようかな。

490 名前:デフォルトの名無しさん mailto:sage [2016/10/13(木) 02:01:07.92 ID:Zro6GxWw.net]
こいつは何しに来たんだ?



491 名前:デフォルトの名無しさん mailto:sage [2016/10/13(木) 10:53:38.82 ID:O2Ch/Rp5.net]
perlでpcアプリケーションって作れますか?

492 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 12:30:24.58 ID:om26oWOX.net]
>>482 作れます。

493 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 22:56:09.64 ID:GnnBnQfG.net]
スーパーコンピューターのアプリケーションしか作ったことがないのですが、
そんな私でも作れるでしょうか?

494 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 02:02:31.11 ID:UBpH7j9p.net]
スパコンのSIMDやMPIの方が楽だから
無理しなくていい

495 名前:デフォルトの名無しさん [2016/10/17(月) 02:26:31.41 ID:WRe7I7Bu.net]
2つのテキストファイルを比較し、一致した文字列を取り出したいんですが、教えていただけませんか

496 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 03:43:08.25 ID:sXplblvU.net]
一致した文字列を穴なく完璧に厳格に定義して示して下さい。
そしてそれが出来ればプログラミングの8割は終了しています。

497 名前:デフォルトの名無しさん [2016/10/17(月) 09:06:26.12 ID:z3YwWHWS.net]
diff 系かなあ。CPAN で検索してみるといいよ。

498 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 09:12:40.23 ID:9EO0+SUA.net]
Perl使うまでもないような
cat fileA fileB | sort | uniq -d

499 名前:デフォルトの名無しさん [2016/10/17(月) 09:33:07.31 ID:z3YwWHWS.net]
いやいや、一致した「行」とは言ってないから。何を望んでいるのかを確認しないと。

500 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 20:34:47.85 ID:Denl80JP.net]
単語だと形態素解析が必要になるけどこいつにそんな課題出さないだろう



501 名前:デフォルトの名無しさん [2016/10/18(火) 22:42:04.03 ID:kO2WqMh/.net]
my $input = [];
CSVファイルを一行づつ配列にして多元配列にした後
for (my $i=0; $i<$#$input; $i++) {print Dumper($input->[$i]),"\n";}
で全データ出力するのですが、その後(?)関数内で同じく
for (my $i=0; $i<$#$input; $i++) {print Dumper($input->[$i]),"\n";}
とすると、1行目の内容が、$#$inputの数だけ繰り返し表示されます。
関数内でも全データを出力したいのですが、どうしたらよいでしょうか。
どなたか教えてください。よろしくお願いします。

502 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 23:56:04.56 ID:sMICGAt6.net]
1回ずつループしながら、デバッグして、使っている変数を見れば?

変数のwatch 機能、あるだろ?

503 名前:デフォルトの名無しさん mailto:sage [2016/10/19(水) 00:45:58.03 ID:cfM1WNHO.net]
>>493
アドバイスありがとうございます。VisualStudioCodeを素で使ってまして
perlの

504 名前:watch機能は無いようなのです。 []
[ここ壊れてます]

505 名前:490 mailto:sage [2016/10/19(水) 00:48:54.12 ID:cfM1WNHO.net]
watch機能はないのですが、添字の$iを具体的な数字を入れてはprintで確認して
1行目のデータになっていると気づいた次第です。

506 名前:デフォルトの名無しさん mailto:sage [2016/10/19(水) 08:22:02.29 ID:p26QOV7Y.net]
>>492
こういうこと?再現しないよ

use Data::Dumper;
my $input = ["abc", "def", "ghi"];
for(my $i=0; $i<=$#$input; $i++) {
print Dumper($input->[$i]), "\n";
}
&func;

sub func {
for(my $i=0; $i<=$#$input; $i++) {
print Dumper($input->[$i]), "\n";
}
}

507 名前:デフォルトの名無しさん mailto:sage [2016/10/19(水) 09:10:37.02 ID:cfM1WNHO.net]
>>496
要はそういうことなんだと思います。csvファイルを読み込んで
$input[[1, 2, 3],[4, 5, 6],[7, 8, 9]];
for (my $i=0; $i<$#$input; $i++) {print Dumper($input->[$i]),"\n";}
でDumperのフォーマットですが[1, 2, 3],[4, 5, 6],[7, 8, 9]を表示
sub funcの中で同じforをすると
Dumperのフォーマットですが[1, 2, 3],[1, 2, 3],[1, 2, 3]を表示します。

必要なところを抽出して現象がでたらソースをアップします。

508 名前:490 mailto:sage [2016/10/19(水) 13:56:56.14 ID:cfM1WNHO.net]
ループ内で行っていた条件分岐の間違いでした。お騒がせしました。
489さん、492さん、ありがとうございました。

509 名前:デフォルトの名無しさん mailto:sage [2016/10/22(土) 10:51:15.40 ID:NzADNRlY.net]
良い回答はないと思うんだけど、正規表現で指定する内容をランダムで作り出す方法ってないかな。

例えば
/^[0-9][0-9a-zA-Z]{4}[A-Z]$/;
だったら
5scDuZ
とかが得られますよ的な。

510 名前:デフォルトの名無しさん mailto:sage [2016/10/22(土) 11:26:59.02 ID:PD3z3WkO.net]
String::Random



511 名前:デフォルトの名無しさん mailto:sage [2016/10/22(土) 11:46:10.43 ID:NzADNRlY.net]
おいおいなんでもあるなPerlって

512 名前:デフォルトの名無しさん [2016/10/22(土) 17:34:20.47 ID:BSsXTeb9.net]
CPANのモジュールも更新されないものが増えてきた
もうオワコン

513 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 21:00:26.38 ID:EVpxycMx.net]
Windows環境でUnixのテキストファイルを処理します
改行LFがCR+LFに変換されてしまうのを防ぐために
perl -i.bak -p -e "BEGIN{ binmode STDIN; binmode STDOUT; } s/unko/manko/g;" hogo.txt
みたいな風に書いてるんですけど
もうちょっとスマートな書き方ありませんか?

514 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 21:11:38.78 ID:U4JQUv53.net]
binmodeしないと自動変換されるの?
まぁ試してないけど、ワンライナーをやめれば良いのさ

515 名前:デフォルトの名無しさん mailto:sage [2016/10/26(水) 00:45:00.36 ID:IJ0r6zMc.net]
perl -pe

516 名前:デフォルトの名無しさん mailto:sage [2016/10/26(水) 03:02:37.18 ID:1uI8N3VZ.net]
>>503
perl -mopen=OUT,:raw -i.bak -pe "s/unko/manko/g" hogo.txt

perldoc.jp/docs/perl/perlrun.pod
perldoc.jp/docs/perl/open.pod

517 名前:デフォルトの名無しさん [2016/11/10(木) 22:48:13.72 ID:SbD3rZb1.net]
perlの場合は文字コードがEUCのデータファイルがあって
入力フォームからハングル文字で書き込むと自動的に&#○○○;の形に変換されて書き込まれるのですか?

518 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 22:56:55.76 ID:Him+SRv0.net]
フォームってなに?

519 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 23:16:39.82 ID:e4bBCogG.net]
日本語と知能が不自由なあちらの人じゃない?

520 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 23:30:34.65 ID:XrxEtHdJ.net]
最近はフォームを知らない人がいるんだ
おぢさん、世代ギャップを感じるよ



521 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 00:26:38.27 ID:dQSao3i1.net]
うわ、知能障害者がまた来たよ。
それともゆとり世代の代表例かな?

522 名前:デフォルトの名無しさん [2016/11/11(金) 12:07:09.49 ID:PHyMHsut.net]
my $str = "aaa〹&bbb&ccc";
という文字列

523 名前:ェあって
&#以外の&を&に置換するやり方は?
[]
[ここ壊れてます]

524 名前:デフォルトの名無しさん [2016/11/11(金) 12:09:09.25 ID:PHyMHsut.net]
my $str = "aaa&#12345;bbb&ccc";
という文字列があって
&#以外の&を&に置換するやり方は?

#はここでは全角で入力したけど半角です

525 名前:デフォルトの名無しさん [2016/11/11(金) 12:09:58.95 ID:PHyMHsut.net]
訂正
my $str = "aaa&#12345;bbb&ccc";
という文字列があって
&#以外の&を&amp;に置換するやり方は?

#はここでは全角で入力したけど半角です

526 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 12:42:23.87 ID:Bnx4QB3I.net]
昨日の知能に問題がある人か

527 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 12:49:30.58 ID:mEGzssAg.net]
s/&(?!#)/&amp;/g

(?!...) 否定先読み

528 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 17:35:35.83 ID:KyOrnFnp.net]
こういう時日本語は全角文字を使えて便利だね
海外の人は&や#が入力できない時苦労しそう

529 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 17:40:50.55 ID:OyxHpcMK.net]
文字参照で書けばどうか?
s/&(?!#)/&amp;/g

530 名前:デフォルトの名無しさん [2016/11/11(金) 23:23:43.62 ID:PHyMHsut.net]
できました
それとこの文字列で
my $str = "&amp;&amp;&am";
それとこの文字列で&amp;でない&(この場合一番後ろの&)を&amp;に置換するには
どうすればいいんでしょうか?



531 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 23:38:03.46 ID:mEGzssAg.net]
それも否定先読みじゃないの
同じようにやってごらん

532 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 13:14:37.83 ID:AwnLgrFF.net]
すみません教えてください。
DBD::CSVというのは
標準モジュールに含まれるのでしょうか?

533 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 15:08:45.45 ID:eBB6Jpl7.net]
そもそもDBIが標準モジュールではない

534 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 15:12:26.59 ID:MGgEOjpT.net]
>>521
perldoc.perl.org/perlmodlib.html
Perl の標準モジュールではないが
Active Perl のようにバンドルされているディストリもある

535 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 15:13:12.93 ID:AwnLgrFF.net]
>>522
ああ、DBIは標準モジュールじゃないんですか。
ありがとうございました。

536 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 15:18:54.39 ID:AwnLgrFF.net]
>>523
なるほど納得です。
開発環境がAcrivePerlで、libに入ってるモジュールは標準と思ってました。
ありがとうございました。

537 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:16:28.52 ID:cBnztJW7.net]
perlの乱数生成器の内部状態を保存するにはどうしたらいいですか
seedだけ保存しても100万回 rand を呼んだところで中断したら再開するときまた100万回呼ばないとダメですよね

538 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:34:37.07 ID:bw+AbQq7.net]
そもそもrandはOS依存なので諦めてください。

539 名前:デフォルトの名無しさん mailto:sage [2016/12/14(水) 23:50:40.69 ID:6q3W8zza.net]
と言うか動作の保証が求められる乱数みたいなのはオブジェクトごとに専用で実装する

540 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 13:10:06.97 ID:ZL343Whf.net]
乱数用のモジュール使うしかないんだろうけど有名どころの Math::Random::MT は状態保存はできないみたいだな
pure perl実装の方は無理矢理シリアライズすればできそうだけど



541 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 15:50:25.81 ID:1Sd664ch.net]
自分で書いても3分以内に全部かけそうだけどな

542 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 21:33:21.20 ID:cgcGxE7wa]
>>526
前もこれ書いたな。

package _Rand;
use base 'Clone';
use base 'Math::Random::MT::Perl';

543 名前:デフォルトの名無しさん mailto:sage [2016/12/16(金) 20:29:42.48 ID:rLtLojZ+.net]
再現性が必要な乱数は、一旦作成してファイルに保存して利用する

544 名前:デフォルトの名無しさん mailto:sage [2016/12/17(土) 00:56:05.87 ID:G3Bk7Xtn.net]
乱数が無限に必要な場合は円周率で代用する

545 名前:デフォルトの名無しさん [2016/12/19(月) 00:17:41.32 ID:qsdLnaaR.net]
push pop shift unshiftが未だにどれがどうだったか覚えられません。
毎回ググるのも面倒なのですが、何か覚えるコツみたいなものはありますでしょうか。
ディスプレイに付箋を貼るのは嫌です。

546 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 00:26:18.79 ID:E/K4i5of.net]
毎回調べろ

547 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 09:49:32.88 ID:OP8mBN0W+]
shift   ←┌┬…┬┐← push
unshift →└┴…┴┘→ pop

548 名前: []
[ここ壊れてます]

549 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 16:34:48.89 ID:CDWthwTd.net]
あああ、オレも覚えるのに苦労した
だって、アセンブラの push 命令とは伸びる方向が真逆なんだよ

shift はバッチファイルにも同じ命令があるから分かるよね
前にズラす
はい、お次の方、どうぞ、って感じ
朝勤、昼勤、夜勤、って感じ

push は後ろから押す、背中から押す、ケツから押す、とにかく押すんだ
満員電車に乗るとき、押さないでください、押さないでください、って感じ

550 名前:デフォルトの名無しさん [2016/12/19(月) 18:32:42.82 ID:RxkoIqKm.net]
スマホかどうか判別するには
if(
$ENV{'HTTP_USER_AGENT'} =~ /iPhone/ ||
$ENV{'HTTP_USER_AGENT'} =~ /iPad/ ||
$ENV{'HTTP_USER_AGENT'} =~ /iPod/ ||
$ENV{'HTTP_USER_AGENT''} =~ /Android/
){
print "スマホだよ";
}

これでいいんですか?



551 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 21:42:52.71 ID:BI+h437s.net]
push,popは一般的なCPU命令のpush.popと同じだね。スタック末尾に積んだり取り出したり。
shift,unshiftは直感的とは言いがたいけど、まあ覚えるしかない

552 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 23:41:08.79 ID:iJGCCAlx.net]
対にして使うならば、push-pop、ないしpush-shift、unshiftはいったん忘れたほうがいい

553 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 23:58:59.01 ID:qsdLnaaR.net]
>>537,539-540
ありがとうございます。
pushは何とかそれで覚えられそうです。
何とかpush-shiftで覚えてみます。

>>535
レスしたいだけのゴミクズはさっさと消えろ。
まともに回答もできないクセに自己顕示欲だけは人一倍。
お前みたいな奴が社会のお荷物なんだよ。
お荷物=捨てるに捨てられないゴミ、だからな。
本当はさっさと処分したほうが社会のためだが憲法と法律によって処分できないだけ。

554 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 01:30:38.17 ID:vON4ZTDa.net]
>>541
自己紹介乙
簡単なことも覚えられない記憶障害者か?それとも統合失調症か?

555 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 01:58:29.63 ID:quKQ7lis.net]
一行レスにこれだけの長文で応えるのは愛があるからだと思うの

556 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 02:47:43.15 ID:sHqfd7is.net]
無理のある例えだが、配列がロケット鉛筆だとしたら
<0[1][2][3]

ケツに押し込むのが push
<0[1][2][3] ← [4]

ケツから飛び出ちゃうのが pop
<0[1][2] → [3]

芯を引っこ抜くのが shift
<0 ← <0[1][2]

先から無理矢理突っ込んじゃうのが unshift
→ <0[1][2][3][4]

557 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 03:25:48.63 ID:Wy6+Up2x.net]
まあどうせすぐ忘れるだろ
結局は染み付くまで調べるのを繰り返すしかない

558 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 04:26:14.23 ID:VxeGortQ.net]
>>541
いやいや、毎回調べるのも十分ありだと思うぞ。
俺はそのうちになんとなく覚えちゃったことけっこうあるよ。

559 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 05:58:50.42 ID:Wy6+Up2x.net]
うろ覚えで使うとバグの発見に苦しむんで
ほんのちょっとでも不安を覚える感じがしたら大丈夫だとは思ってても
必ず調べる方が良いよね

560 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 14:29:43.74 ID:GHwwkOBP.net]
俺も毎回調べてることは色々ある
同じことを100回調べた疑いすらある



561 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 18:25:40.76 ID:JPbALvOm.net]
そんなこと言ってるとまた精神障害者の>>542に記憶障害とか言われるぞw

562 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 00:24:41.66 ID:nmy+aY6o.net]
毎日のように使ってりゃそりゃ忘れることは無いだろうけど
数ヵ月とか間を空けると忘れてて調べなおすことはままある
記憶障害って言われるのはちょっときつい

563 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 00:30:32.60 ID:lo ]
[ここ壊れてます]

564 名前:5qcp8D.net mailto: 記憶障害じゃなくてゆとり世代なのか? []
[ここ壊れてます]

565 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 09:29:14.01 ID:Xe+zsvfF.net]
覚えにくいことは自分で一覧表を作ると良い
C#の宣言一覧とか目につく所にファイルしてある

566 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 10:11:56.10 ID:jV2urUkG.net]
shiftは考えてみたけど、底の抜けた箱に物が詰まってて、箱自体を上にシフトすると一番下の物がまろび出てくるってイメージかな

567 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 05:45:04.23 ID:NChqVw6n.net]
干草プッシュだけ覚えときゃなんとかなる気がするが、ロケットペンシル記憶術も捨てがたい

568 名前:デフォルトの名無しさん [2017/01/01(日) 16:43:08.52 ID:YnMirTCR.net]
配列のスライスとリストのスライスは微妙に仕様が違うんだな。最近まで気づかなかったよ。

569 名前:デフォルトの名無しさん [2017/01/04(水) 00:26:26.84 ID:9INFfbdp.net]
モジュールのインストールすらできないPerlはマジでゴミ
膨大な依存関係を調べて手作業でインストールすればできないことはないのかもしれないが、
そんな暇があるのはニートくらいだろ

ゴミニート専用言語Perl

570 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 01:41:34.64 ID:9INFfbdp.net]
>>829
今ケツの穴が痛くてそれどころじゃない



571 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 01:41:41.45 ID:9INFfbdp.net]
>>829
今ケツの穴が痛くてそれどころじゃない

572 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 02:01:46.64 ID:Z6+Vp8du.net]
菊初めか
お大事に

573 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 06:53:29.45 ID:Em4GHsJE.net]
今ケツの穴が痛くてモジュールのインストールができない

・・・まで読んだ

574 名前:デフォルトの名無しさん [2017/01/06(金) 01:50:49.12 ID:0ickO96c.net]
HTTP::Liteモジュール使うのと、ソケットでガチアクセスするのと、systemでwgetを実行するのではどれが一番速いですか?

575 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 02:02:58.42 ID:lcjjTGwJ.net]
HTTP::Liteは余計な処理がある分遅い、wgetはネイティブだがforkする分遅い。よってsocketかな

576 名前:555 mailto:sage [2017/01/07(土) 04:12:05.32 ID:8FKpQ8GY.net]
>>562
ありがとうございます。
それではソケットでガチアクセスします。

577 名前:デフォルトの名無しさん [2017/01/09(月) 03:46:03.29 ID:Ba0Z9f3i.net]
ネトゲで寄生してくる香具師まじでウザい
レベルも装備も明らかに足りてないくせにパーティー入ってくるんじゃねーよ

前半はやる気を見せるためか最前線で敵に突っ込んでいって何度も即死
蘇生スキル持ちの職がいるとはいえMPも有限だし、死ぬと分かってるのに突っ込んで手間かけさせるな

後半は後ろからついてくるだけ
パーティーの人数によって敵の強さが変わるから、攻撃も回復もしない寄生虫一匹分、敵が強くなってるんだよ
まじでお荷物なんだが

578 名前:デフォルトの名無しさん [2017/01/09(月) 03:57:16.67 ID:Ba0Z9f3i.net]
そういう糞雑魚がパーティーに入れない(入ったとしてもデメリットが大きい)MMORPG作りたいんだけど、
PerlでMMOサーバー作れる?
そうした寄生のできないちゃんとしたMMORPGを作りたい

579 名前:デフォルトの名無しさん mailto:sage [2017/01/09(月) 04:02:21.88 ID:09YuDyyp.net]
君には無理

580 名前:デフォルトの名無しさん [2017/01/09(月) 06:19:53.73 ID:Ba0Z9f3i.net]
誰とは質問言わないが、明後日の方向向いたレスしてる知的障がい者がいるな
Perlで作れるかどうかという質問なんだがな
Perl使ってると日本語すら理解できなくなるのか、それとももともと日本語を理解できない朝鮮人が紛れ込んでいるのか



581 名前:デフォルトの名無しさん mailto:sage [2017/01/09(月) 06:23:50.50 ID:09YuDyyp.net]
どっちにしろ君には無理

582 名前:デフォルトの名無しさん [2017/01/09(月) 08:24:01.83 ID:Ba0Z9f3i.net]
自分にできないものだから、それをこじらせて
自分以外の人間全員できないと思うようになったのか
ここまでくると哀れだな

583 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 05:46:20.71 ID:JXAVAbFC.net]
ID:Ba0Z9f3i

俺もこいつには無理って意見に全面的に賛成する

584 名前:
そもそもPerlで作るって発想が馬鹿。
[]
[ここ壊れてます]

585 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 08:17:16.04 ID:lvul3mgx.net]
それ以前にそもそもPerlなんてゴミを使おうと思う時点で馬鹿。
使い物にならない時代遅れの言語が候補に出てくる時点でプログラマとして致命的。

586 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 01:38:41.68 ID:cSn92SSs.net]
サーバーサイドをPerlで作ってるところはそこそこあるだろう

587 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 02:22:42.88 ID:TF26KoMK.net]
mmoでか?
インタプリタを?

588 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 18:54:09.92 ID:FfNyKWnK.net]
だから君には無理だって
perlでmmoサーバ作れないどころか想像すらできないみたいだし

589 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 18:59:46.49 ID:9Pm7248G.net]
俺は作れるかどうかを疑問視してるんでは無いと思うんだがな
>インタプリタを?
これをどういう風な意味に受け取ってるのかだろう

590 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 19:22:57.19 ID:TF26KoMK.net]
言語としてはPerlはチューリング完全を満たしています
最初に調べることだと思われますが



591 名前:デフォルトの名無しさん [2017/01/12(木) 16:15:10.55 ID:5aplhP3Q.net]
mmoサーバも作れないゴミ乙
言語がゴミなのか、perl厨がゴミなのか、それとも両方か

592 名前:デフォルトの名無しさん mailto:sage [2017/01/12(木) 18:08:05.48 ID:taUnzxu5.net]
     (´・ω・`)
   /     `ヽ.   お薬増やしておきますねー
  __/  ┃)) __i |
/ ヽ,,⌒)___(,,ノ\


     (´・ω・) チラッ
   /     `ヽ.   
  __/  ┃  __i |
/ ヽ,,⌒)___(,,ノ\


     (´・ω・`)
   /     `ヽ.   今度カウンセリングも受けましょうねー
  __/  ┃)) __i |
/ ヽ,,⌒)___(,,ノ\

593 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 01:30:45.41 ID:84sZuYo8.net]
オンラインゲームを支える技術、中嶋謙互、2011、技術評論社

サーバの構築・運営、通信量など、
オンラインゲームのほぼ全工程を、説明した本です
大人数用MMOと少人数用P2Pの、両方について書いてある

確か言語は、C++ だったかな?

594 名前:デフォルトの名無しさん [2017/01/13(金) 11:59:30.05 ID:lAI6bANo.net]
そらそうだろ、Perlなんて電子産廃なんだからC系とかPHPになるだろうよ。
Perlで何かを作ろうってほうがおかしい。

595 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 16:26:16.86 ID:w9nZHjQ8.net]
PHPに代えたって意味無いじゃん
同様の理由でPythonも却下

596 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 17:31:55.77 ID:knj8G1ZF.net]
下らないことにはレス率が増えるこのレベルの低さよ

597 名前:デフォルトの名無しさん [2017/01/14(土) 01:50:24.44 ID:dLK6O0iv.net]
ウザいゴミ

598 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 14:17:17.64 ID:pfhmv7nO.net]
>>579
大規模なオンラインゲームだと
むしろJavaを使うんじゃないかな?
人集めしやすいし

599 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 18:16:40.64 ID:dzrBWFk0.net]
そんな重いことまずしない

600 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 22:44:51.61 ID:axnp1ig/.net]
>>565
おれなら作れる



601 名前:デフォルトの名無しさん [2017/01/22(日) 21:26:40.74 ID:xYSgWZ/D.net]
寄生できないmmoとか簡単そうだけどな

(1)死ぬたびに獲得経験値1/10
(2)3回死亡でダンジョンから強制排出&所持金半減&獲得経験値ゼロ
(3)経験値はパーティーメンバーの敵に与えたダメージ比率

(3)があれば身の丈に合ってないダンジョンの時点で経験値はほぼゼロ
ほぼゼロなところへ(1)があるから限りなくゼロに近くなる
寄生でダンジョンクリアだけしようにも(2)のハイリスクがある

602 名前:デフォルトの名無しさん [2017/01/24(火) 18:17:56.63 ID:wudREosA.net]
>>587
回復職やサポート職の経験値もなしということでしょうか。

603 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 18:48:47.54 ID:tYWypKKw.net]
昔はこれでアラーにならなかったのですが、perl5.8でこれを実行すると @{$_[2]}が原因でこけてるらしいです。
どのように変えればよいでしょうか
my ( @WdayArr ) = ( $_[2] )? @{$_[2]} : ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );

604 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 22:39:27.02 ID:zqYaLnZ2.net]
>>589
# perldoc.perl.org/5.8.9/Scalar/Util.html
use Scalar::Util qw(reftype);

my @WdayArr = reftype($_[2]) eq 'ARRAY' ? @{$_[2]} : qw(Sun Mon Tue Wed Thu Fri Sat);

605 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 23:38:20.96 ID:LKVAQWtm.net]
>>589
$_[2]には何が入ってんだよ

606 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 08:15:46.34 ID:1MVxS70E.net]
>>590
ありがとうございます。やってみます。

>>591
曜日の文字を配列に指定する部分です。なければ、英語の曜日が入ります

607 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 09:09:34.94 ID:WOhX0mTt.net]
違う、そうじゃない

608 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 09:15:19.78 ID:dJNPI+cJ.net]
>>592
Perl 5.16.3 だが、下のスクリプトで1行目を入れても
消しても、きちんと動くぞ。
$_[2]に配列のリファレンス以外のものを入れたのだろう。
(エラーメッセージにそう書いてあるはずなんだが)
-----------------------------------------

$_[2] = [qw(a b c d e f g)];
my ( @WdayArr ) = ( $_[2] )? @{$_[2]} : ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
print @WdayArr;

609 名前:デフォルトの名無しさん [2017/01/25(水) 09:30:32.20 ID:1MVxS70E.net]
>>594
use strict;を指定すると参照ダメみたいなエラーが出るので
とりあえずuse strict;を外して応急処置しています。

参照渡しができなくなったんでしょうか

610 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 10:03:41.94 ID:WOhX0mTt.net]
こういう時はエラーメッセージをそのまま貼るのが正解



611 名前:デフォルトの名無しさん [2017/01/25(水) 10:20:22.46 ID:1MVxS70E.net]
このようなエラーが
Can't use string ("ARRAY(0x10b0458)") as an ARRAY ref while "strict refs" in use at obj.cgi

612 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 10:29:15.16 ID:WOhX0mTt.net]
ARRAY(0x10b0458) というのは配列リファレンスを文字列として評価した時に出てくる
関数の呼び出し元で配列をそのまま渡さずにダブルクォートで囲うなどして文字列化してしまっているのだろう

613 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 10:31:24.85 ID:1MVxS70E.net]
ありがとうございます。関数の実行側のほうを確認します。

614 名前:デフォルトの名無しさん [2017/01/28(土) 20:27:36.04 ID:t13qO4X2.net]
Perlはマジで糞だな
リファレンスはリファレンスで同じじゃねーの?
バックスラッシュ付けたリファレンスでも種類によって違うとか意味不明

615 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 20:37:05.87 ID:7oV/H97Q.net]
・・・?

616 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 08:35:21.14 ID:CkOT0sBx.net]
Cの共用体のようなことしなければ、
ある「型」のリファレンスは
その「型」のリファレンスのままでよい。
それ以外の使い方をすれば、「間違っている」として
エラーを吐いてくれるのが有難いではないか。

ただ、リストのリファレンスをハッシュの
リファレンスとして使いたい時(またはその逆)
がたまにあるが、それは可能にしてほしいと思う。

617 名前:デフォルトの名無しさん [2017/01/30(月) 15:21:11.69 ID:MjhEgZic.net]
# こういうのじゃいかんか?

my $ref_to_hash0 = +{ @{ $ref_to_array0 } };
my $ref_to_array1 = [ %{ $ref_to_hash1 } ];

618 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 21:42:50.47 ID:kKFFvpaa.net]
>>603
無駄なものがあって読みづらい

my $ref_to_hash0 = { @$ref_to_array0 };
my $ref_to_array1 = [ %$ref_to_hash1 ];

何がしたいのかわからん。
キーと値が交互に出てくるものを
ハッシュかリストに変換したいのか?

619 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 23:42:02.11 ID:XappdU+s.net]
my $ref_to_hash0 = { $ref_to_array0->@* };
my $ref_to_array1 = [ $ref_to_hash1->%* ];

620 名前:デフォルトの名無しさん mailto:sage [2017/01/31(火) 09:30:03.69 ID:t4jOK5r8F]
>>604
括弧を「無駄」な物とは、恐れ



621 名前:入る。

ベストプラクティス11.2 中括弧で囲まれた参照を読むべし。
[]
[ここ壊れてます]

622 名前:デフォルトの名無しさん [2017/02/04(土) 21:52:52.06 ID:rb4WR6H/.net]
Javaのクラス周りに慣れるとPerlのクラス周りは本当に不自由だと気付く

623 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 22:07:55.97 ID:ydMztSgS.net]
比較例に出すのにJavaのクラスなんぞを持ち出すのもどうかと

624 名前:デフォルトの名無しさん [2017/02/06(月) 09:40:35.12 ID:ZiMti5cO.net]
xp 32bit

xp対応のアクティブパール(ActivePerl)がダウンロードできないです

旧バージョンはどこからダウンロードできますか?

625 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 12:24:16.94 ID:dMFd7Yq5.net]
>>609
active perl old version
でググると、色々出てくるぞ。
実際、どれが使えるのかは知らんが。

626 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 14:58:39.49 ID:q20moLVF.net]
$str = "LIST( '2016123456','2015123456','2017987654',…)

という$strがあった時に、シングルクオートに囲まれた部分だけを取り出して
@listに突っ込みたいんだけどどう書いたらいい?
splitの正規表現でいけるかと思ったけどどう書いていいかわからない。

627 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 16:15:55.36 ID:gLbpEFqIL]
>>611
my @list = ($str =~ /'([0-9]+)'/g);

628 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 19:57:05.35 ID:YzSDBsjI.net]
>>609
5.16なら間違いなく使えてる
5.18と5,20はファイル名に64intがくっついてて動くかどうかはわからない

629 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 20:08:36.65 ID:B4iHWGCu.net]
今activesite見てきたら、まあ流し読みしかしてないけど、古いバージョンは有料で提供してやるよって買いてあった

630 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 20:13:46.71 ID:B4iHWGCu.net]
Need Perl on production servers or access to Perl 5.6, 5.8, 5.10, 5.12, 5.14, 5.16, 5.18 or 5.20?
Learn more about ActivePerl Business Edition

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

Get the language version you need on the platform you want. The following versions are available for purchase with Business Edition+:

ActivePerl 5.8, 5.10, 5.12, 5.14, 5.16, 5.18, 5.20, 5.22, 5.24
ActivePython 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5
ActiveTcl 8.4, 8.5, 8.6



631 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 20:41:32.21 ID:r2wSMn/A.net]
>>611
push @list, $1 while $str =~ /'([0-9]+)'/g;

632 名前:デフォルトの名無しさん [2017/02/06(月) 20:55:17.22 ID:oG8S/cPb.net]
>>611
$str = "LIST( '2016123456','2015123456','2017987654',…)

$str =~ s/LIST/@list=/;
eval($str);

でいいんじゃね?

633 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 23:15:15.61 ID:n09J3oc8.net]
eval 怖ひ

634 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 00:35:10.28 ID:S1oxUZhq.net]
>>616
> push @list, $1 while $str =~ /'([0-9]+)'/g;

惜しいね。それやるならこうだよ

@list = $str =~ /'([0-9]+)'/g;

635 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 08:04:04.27 ID:0+g59X+8.net]
>>619
読みやすさなら上の方が良くね?

新人に引き継ぐ時の事考えると

636 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 08:39:30.86 ID:5nFcePp/.net]
>>609
2014年にダウンロードした
ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi
を持っている。

ただ、Active State が古いバージョンを有償でのみ提供
しているのに、勝手に古いバージョンをうpしていいものか解らん。
そのあたり、クリアにしたら、どこかにうpしてやってもいいが。

637 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 10:26:02.92 ID:NmaWW75y.net]
m//g の形式でグローバルマッチの意味がないように思うが

638 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 12:23:47.76 ID:5nFcePp/.net]
>>622
m//g をリストコンテキストで使うと、
全てのマッチ部分のリストが返され

639 名前:驕B []
[ここ壊れてます]

640 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 16:36:45.75 ID:pJfTbQRq.net]
あると高速化できるようなrecommendsだけどインストールされていないモジュールを一覧出来る方法を教えて下さい



641 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 17:46:12.43 ID:TrN1jB3j.net]
>>609
googleでググったらすぐに見つかったけど?
https://xray-engine.org/index.php?title=ActivePerl
(このサイトは開くとき継続しますかって警告が出たんで
 ルート証明の認証に問題があるかも知れない
 一応Java ScriptとActiveXの実行は切ってアクセスしたほうがいいだろう)
一応俺が使ってる(XP 32bit)
ActivePerl-5.20.3.2003-MSWin32-x86-64int-299574.msi
をダウンロードして保存していたファイルと比較してみたけど一致したから問題ないと思う
あと、5.22.1も試してPerlとしては動いたので
現行ダウンロードできる5.22.3も大丈夫じゃないかな?
(インストーラがexeに変わってるけど)
あと俺が使えると言った5.22.1を何故使ってないかと言うと
WSHから何故か正常に使えなかったので、使える5.20.3を使ってる

642 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 20:35:38.79 ID:k/sR8nQd.net]
https://amaten.com/
こんなサイトの情報をテキストか何かで取得したい
LWP::Simple とかでは取ってこれない
何を使うと一番簡単にできる?

643 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 20:58:27.25 ID:NmaWW75y.net]
use IO::Socket;

644 名前:デフォルトの名無しさん mailto:sage [2017/02/08(水) 01:47:50.85 ID:lrXbOWPO.net]
>>609
XPで動くかは試してないけど、Strawberry Perlっていうのもあるよ
どうしてもActivePerlじゃないとだめなの?

645 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 00:36:47.60 ID:MB7d2iTo.net]
おれ XP で Strawberry Perl つかってる
ActivePerl はモジュールの対応が遅いから乗り換えた

646 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 00:50:56.06 ID:9TbyVJRb.net]
むしろなぜXPを使ってるのか知りたい

647 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 01:09:37.56 ID:EjItGpsn.net]
>>625のところでActive Perlの古いのから最新まで全部ダウンロードできるじゃん
それで解決だろ

648 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 12:20:55.28 ID:awPX9+44.net]
>>630
M$に金を払うのが嫌だからだろう。

649 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 22:13:19.02 ID:CNUBJX7I.net]
>>632
それだけだったらLinuxやFreeBSDなどを使うって方法もあるだろ?

だからM$に金を払うのがいやだけど、MSのOSが好きという理由であるはずだ
もしくはMS以外のOSがクソだっていう可能性もあるけど

650 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 22:22:13.62 ID:4ZcYgl3B.net]
>>626
perlはもう進化が止まってるので、あんまり新しいことは出来ない
自分で作るなら別だけど

rubyやpythonなら整ってる筈



651 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 23:43:38.97 ID:NyKrJWYT.net]
進化が止まっている #とは

652 名前:デフォルトの名無しさん [2017/02/10(金) 07:05:20.49 ID:SVdyXXtN.net]
>>626
もう見てないだろうけど
HTML::TreeBuilder
HTTP::Daemon
LWP::UserAgent
WWW::Scripter
くらいでなんとかなると思うよ。簡単かどうかは知らんけど大体なんとかなってる。

653 名前:デフォルトの名無しさん [2017/02/10(金) 10:48:54.81 ID:tdAYPVUl.net]
最近はperlは余り聞かないな
中学生の時にはブームだったけど……。(何十年も前)

学校ではpython とかだと思う。C# java が主力?

とにかく、滅多に聞かないな

654 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 15:05:42.76 ID:j8ygGIFR.net]
Perlを罵倒したい人は、こちらにどうぞ

Perlについての罵倒スレ 63箱目
echo.2ch.net/test/read.cgi/tech/1392639772/

655 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 22:06:13.34 ID:+KYQgfiL.net]
Perlは全然進化しないからな
一年ちょっと前に6がでて音沙汰なし
7はいつ出るんだ?って状態

656 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 22:29:17.89 ID:pJ/oSP18.net]
ナイスジョーク

657 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 09:59:05.70 ID:pXj4BwQB.net]
まともな学校はcだろ。

658 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 11:05:50.36 ID:ffoIlYEu.net]
実用性を重視するならJava一択

659 名前:デフォルトの名無しさん [2017/02/11(土) 14:50:19.58 ID:N4/UY6wx.net]
>>639
6出てたのか?
知らなかったわ

660 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 15:18:36.75 ID:p/3UeWk3.net]
>>642
> 実用性を重視するならJava一択
それって言語の実用性じゃなくて
人材的な意味での実用性だよな

つまりJavaは色んな所で使われてる言語だから
Javaできますって言っておけば採用されやすい。
自分が実用性がある人間になりたいならJava一択



661 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 15:23:34.94 ID:H7Znugc/.net]
いい加減スレチ

662 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 15:50:08.46 ID:ffoIlYEu.net]
言語なんかいくつ修得してもいいんだから、大人しくJava勉強しとけ

663 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 17:33:33.41 ID:tLczzgrK.net]
何がなんだか仕様に混乱するから3つまでしか習得出来ません
4つめ覚えるとなにかを忘れます

664 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:11:41.56 ID:y7nchZP8.net]
621
> むしろなぜXPを使ってるのか知りたい

動作確認だよ
XPと10で動くならVistaでも7でも8でもでも動く可能性が高いから
いちいち全OSを揃えて動作確認すると
シロウトの趣味でアプリケーション開発するには荷が重すぎる

665 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 22:46:04.81 ID:p/3UeWk3.net]
いちいち全OSで動作させたいと思う理由は何?

サポートが終了しているXPで動作する必要はないし
Vistaも2017年4月までだ。シェアから考えれば切り捨てても十分だし

7と10で動作確認すればいいじゃん

666 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 23:02:42.86 ID:ffoIlYEu.net]
XPはまだ結構現役で残ってるぞ

667 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 23:33:55.67 ID:p/3UeWk3.net]
俺の周りに見たことない

668 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 12:16:27.67 ID:vLa3XGqC.net]
俺の周りでは、いまだにNT3.5.1を使ってる取引先があるのだが。

669 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 18:59:46.87 ID:VKyPIbro.net]
用途を特定した専用マシンみたいなのは、特にOSを入れ替えずにずっと使うな
測定機器や実験機器の一部とか、何かの制御用とか

ただ、そんなマシンは新しいソフトを入れたりもしないから、
互換性とかどうでもいい世界だけど

670 名前:デフォルトの名無しさん mailto:sage [2017/02/17(金) 23:51:32.63 ID:QUNiBjhs.net]
以前こちらでお世話になった顔文字のど素人です。

$ perl -p -e 's/(..)/$1 /g;'
123456

12 34 56

恐縮ですが上記の逆(スペースの削除)をご指導願います。
00 06 fc 25 58 50 0a 00 54 92 31 03 49 46 88 d0 c6
    ↓
0006fc2558500a0054923103494688d0c6

よろしくお願いいたします _(_^_)_



671 名前:デフォルトの名無しさん [2017/02/18(土) 00:14:42.65 ID:eUOj9Lyv.net]
>>654
s/\s//g

672 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 00:53:08.66 ID:UURjaLCm.net]
>>654
死んだ方がいいレベル

673 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 00:58:30.39 ID:np+iCDRO.net]
とにかく学習しようという気がまったく見えないのが凄い

674 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 01:09:34.78 ID:oWVhdX8p.net]
普通1時間以内に学習を完了してそうなものを、10日以上経ってるぞ

675 名前:646 mailto:sage [2017/02/18(土) 08:59:07.57 ID:64GKa0+N.net]
>>655
ど素人に有難うございました。

676 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 21:00:13.31 ID:3ABB/Pla.net]


677 名前:セから土曜日に書いたと []
[ここ壊れてます]

678 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 10:31:20.73 ID:cj/RoW+L.net]
active perlで、長いファイル名のあるフォルダに対して readdir すると、
エラーになって止まるんだけど、どうやって回避すればいいんだ

エラーが返るとかじゃなくて実行自体が止まるので、とりあえず読んでみて、
とかが出来ない

679 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 10:39:23.76 ID:OmTNhTRr.net]
windowsのエラーじゃねぇの?
とりあえずevalすれば実行は止まらないと思うけど

680 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 08:34:03.50 ID:hOw/b7i/.net]
>>661
ひょっとして、ファイル名にユニコード文字が混じったりしてない?



681 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 08:44:24.40 ID:hOw/b7i/.net]
readdirのユニコード版なら、こうゆうモジュールもある。

search.cpan.org/~xaicron/Win32-Unicode-0.26/lib/Win32/Unicode/Dir.pm

682 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 18:47:01.31 ID:dx1g9tP+.net]
unicodeは入ってない
単に長いだけ

683 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 22:36:40.65 ID:8LXDZxYt.net]
Win32::LongPathは?

684 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 22:51:51.90 ID:dx1g9tP+.net]
それを使うと、既存のreaddir の挙動が変わるの?

685 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 23:21:59.22 ID:/TfvNrk0k]
最大パス長260バイト制限に引っかかってるなら、
Win32APIのW系(Unicode)を利用するモジュールを使えば、260文字までは行ける。

686 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 08:31:44.98 ID:ECHoSeWI.net]
>>667
「長い」って何文字なん?260文字以下だと問題ないはず。

687 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 18:54:26.71 ID:Gbg+HMKR.net]
それ以上あったので問題があった

688 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 08:44:35.66 ID:RfMjQxG+.net]
Windowsで260文字以上のファイル名を普通に作ろうとすると、
「ファイル名が長すぎる」とエラーが出るが、
ネットワークドライブを使うと、作れてしまうようだ。
ただ、それを実際に使おうとすると、ドツボに嵌るみたいだな。

689 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 21:51:27.16 ID:KTTjixcr.net]
ファイル名っていうか、パスを含めた長さな

690 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 00:13:47.26 ID:hhHVIZUN.net]
@file = split(/\n/,`dir /s /b *.* 2>NUL`);
な。次スレのテンプレに追加するから。



691 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 15:57:50.73 ID:des1Iukd.net]
forkするのOKなら何でもありじゃん

692 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 23:48:39.27 ID:0EPJtM8y.net]
シェルとカーネルを縦横無尽に使いこなすのがPerlプログラミングの醍醐味。

693 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 15:21:10.67 ID:lYcZyteE.net]
print 1+(2+3);
print (1+2)+3;

この二つの文の違いを使いこなすのが、Perlプログラミングの醍醐味。

694 名前:デフォルトの名無しさん mailto:sage [2017/03/14(火) 00:58:03.78 ID:mRCDOzFa.net]
awk 由来の 0+ ハックや "". ハックは常識として使いこなすのが、Perlプログラミングのたしなみ。

695 名前:デフォルトの名無しさん mailto:sage [2017/03/15(水) 23:38:07.63 ID:WjEGzhMP.net]
ハックと言ってる時点で使ってはダメなものだ

696 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 00:17:10.27 ID:a1z6pXZc.net]
工夫できないなら何を使ってもダメ
sub to_s { $_[0].'' }
sub to_i { $_[0]+00 }

697 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 06:54:07.57 ID:t2soddN5.net]
>awk 由来の 0+ ハックや "". ハックは
そもそも、常識でないといいたげな、このレスは何?
まともな参考本読めば、最初の方に書いてある。
ハックでもなんでもない

698 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 17:47:23.90 ID:5loIUxX7.net]
Win-7、Active Perl 5.16です。Unicode文字を含むperlの処理結果を
utf16leで出力しようとしています。下のようにやってみましたが、ダメでした。
出力をバイナリエディタでみると、改行コードが変な風にいじられていました。

binmode STDOUT =>

699 名前:":encoding(utf16le)";
print "ユニコード文字を含むテキスト\n";

色々試した結果、下のスクリプトのようにすると、概ね動くことが解り
ましたが、動かない場合もあります。下の例では、「aaaaa」は出力され
ますが、「bbbbb」は出力されません。どうするのが正しいでしょうか?

use utf8;
binmode STDOUT;
use Encode qw/ encode decode /;

sub wprint{
 foreach(@_){
  s/\n/\r\n/g;
  print encode('utf-16-le', $_);
 }
}
wprint "a"x5, "\n";
foreach (1..5){
 wprint "b";
}
wprint "\n";
[]
[ここ壊れてます]

700 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 19:53:29.20 ID:SJAmj6b4.net]
>改行コードが変な風にいじられていました
perlではどのOSでも改行をLF(\n, 0x0a)として扱っている
Windowsでは通常出力する際に自動的にLFをCRLFに変換している

0x0a (perlの\n)
0x0a 0x00 (utf16にエンコード)
0x0d 0x0a 0x00 (0x0a を 0x0d 0x0a に変換、正しくは 0x0d 0x00 0x0a 0x00 にしたい)

wprint関数のやり方が上手くいくのは
0x0a (perlの\n)
0x0d 0x0a (s/\n/\r\n/g で置換)
0x0d 0x00 0x0a 0x00 (utf16にエンコードし、自動変換も無効にしているのでこのまま出力される)


>「bbbbb」は出力されません
様々な事情で特殊変数 @_ の各要素やループ時に設定される一時変数 $_ は元の値の別名として扱われる
つまり同じ値を参照しているため、それらに代入や置換などを行うと元の値も変更されてしまう
元の値が変数ならそれが変更されるだけで問題はないが、定数の場合変更できないのでそこで死んでしまう

wprint関数では @_ でもループ内でも変数として受け取っていないため置換処理で引数の値を変更しようとしている
'a' x 5 は評価されたときに変数に入れられたように扱われるので問題はないが、直後の "\n" はまさしく定数なので変更できず死に、以降の処理が止まる
関数内で最初に my @args = @_; のように一度変数で受け取るのが意図しない変更を防ぐ意味でも良いだろう



701 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 08:41:14.27 ID:RAznfVax.net]
>>682

672です。
よく解りました。
ありがとうございました。

702 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:10:56.36 ID:I7SB2jha.net]
print (1+2)+(4+5)+6+7;

3

703 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 21:37:50.01 ID:lffYMjCi.net]
print print (1+2)+(4+5)+6+7;

3
23

print print print (1+2)+(4+5)+6+7;

3
23
1 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


704 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:38:54.66 ID:PsuuxH/N.net]
$hash{'aaa'}{'bbb'}{'ccc'} = 1;

みたいなことをしても、普通に通るのが凄いよな
それでいて、仕様としては別に多次元ハッシュなんか対応してない

705 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 08:51:48.01 ID:AF9KLm8F.net]
なにをするんでもいちいちチェックが入って膨大な自動操作が裏で行われてる証拠。
さらに変数と実体を結びつけるデータテーブルもかなりの容量を使用してる。
木構造の探索などをやると、動作がCの10倍程度違うと言われるけど、やってみたらメモリ容量が100倍以上違うことも確認された。(将棋の盤面探索)。

まあ一時的にスクリプトが欲しいときとか、それが良い時はそれで良いけど、
通常のソフトウェアを作る時内部でそんなことが起きれてば完全な欠陥なわけであって。

706 名前:デフォルトの名無しさん [2017/04/01(土) 17:07:22.61 ID:y/H ]
[ここ壊れてます]

707 名前:Ezjsw.net mailto: そうか、100倍以上違うのか。試してみたいからソースコードを見せてくれ。 []
[ここ壊れてます]

708 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 17:19:36.13 ID:aXA7htV2.net]
>>687
えーと、インタプリタとコンパイラって知ってるかい?

709 名前:デフォルトの名無しさん [2017/04/02(日) 11:42:32.36 ID:W390vP7B.net]
1 ビット × 8000000 のビットマップって Perl でどうやるんだろう? こうかな?

$perl -e '$h{ $_ } = 1 foreach 0 .. 7999999; system("bash","-c","ps -p \$PPID -F");'
UID    PID PPID C  SZ  RSS PSR STIME TTY     TIME CMD
i     5240 4743 96 253250 997920 1 11:18 pts/4  00:00:05 perl -e $h{
$

みたいなことでもしたんだろうか。

710 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 12:21:59.20 ID:n1w2M1cg.net]
>>689
インタプリタとコンパイラの速度差は2倍未満と言われてるけどな
この場合は自動型変換などの暗黙の処理とデータテーブルが問題。
もちろん自動型のコンパイラを使用しても同じ結果になる。



711 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 13:25:59.95 ID:zGspEIRF.net]
お前の情報源はえらくあやふやだな

712 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 14:35:50.91 ID:n1w2M1cg.net]
「そう言われてる」ってやつだからな。
ただ有名なんで検索すればいろんなところで出てくる。
10倍遅くなるのは、自動処理が8でインタプリタが2、合計10

713 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 14:37:05.43 ID:n1w2M1cg.net]
別に正確な情報どうこうじゃなくて、
おそいのがインタプリタのせいだと思ってるよりずっといいでしょって話

714 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 15:56:48.17 ID:s5HPpPnI.net]
>>690
1行目とその先の関連がよく分からんが
perldoc.jp/func/vec

715 名前:デフォルトの名無しさん [2017/04/02(日) 16:44:24.11 ID:W390vP7B.net]
ろくに知らなければこういうことをするかもな、という想像なんだが。わかりにくかったのならすまん。
なにしろ何をしたのかまったく解らないから適当に想像するしかないんだよ。

716 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 03:58:55.24 ID:vTxJoJiF.net]
Cでも
伸び縮みを含めた動的なメモリ宣言と開放と、呼び出しの度そのチェックと、管理情報の保存.
動的な値の自動変換と、呼び出しの度そのチェックと、管理情報の保存.

たったこんだけでも超遅くなるか
つか動的な宣言って超遅いよね

717 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 04:02:38.36 ID:vTxJoJiF.net]
それはそうと俺も稀にPerlやるんだが、

use utf8;
use strict;
use warnings;

binmode STDIN, ':encoding(utf8)';
binmode STDOUT, ':encoding(utf8)';
binmode STDERR, ':encoding(utf8)';

これ毎回書くんだが、全部省略できないかの
すぐこれ書くの忘れて文字コード関係でおかしくなるし、書いたら書いたで無駄に目障りなんだが・・・

718 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:45:22.06 ID:DbxhuG0l.net]
# Hoge.pm
package Hoge;
use strict;
use warnings;
use utf8;

binmode STDIN, ':encoding(utf8)';
binmode STDOUT, ':encoding(utf8)';
binmode STDERR, ':encoding(utf8)';

sub import{
  strict->import;
  warnings->import;
  utf8->import;
}

1;

# script.pl
use Hoge; # ただし@INCからHoge.pmが見つかるようにする

719 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:52:14.57 ID:DbxhuG0l.net]
そういやutf8なら
binmode STDOUT, ':utf8';
で良かったか

720 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 20:57:19.56 ID:GBtgusH0.net]
>>686
参照の -> を参照に対しては省略できるってだけだが。



721 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 21:19:29.96 ID:4y1tBhnC.net]
それが凄いところ
オブジェクト指向だって、ほんの小手先でちゃんと実用になるものを実装しちゃってる

722 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 23:53:13.69 ID:k4jkkg7x.net]
>>702
最低レベルな。
小手先で済ませちゃったから、それ以上の
便利な機能はライブラリ任せになっちゃって
いつまでも標準が生まれなかった。
Perl6にさっさと移行すればいいのに

723 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 23:58:43.13 ID:4y1tBhnC.net]
言語なんてそれでいいだろ
標準に拘っても何も得しない

724 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 00:42:48.16 ID:cCOM2/u0.net]
>>704
可読性の問題だ。
意味は全く一緒なのに、書き方を変えてどうする?
言語を変えるのと一緒だぞ

725 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 00:57:54.05 ID:h3ZKvGOL.net]
どうせ定番の奴がデファクトスタンダードになるんだから同じことだ

726 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 01:01:17.12 ID:cCOM2/u0.net]
その定番が生まれなかったんだろ

727 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 06:42:15.56 ID:h3ZKvGOL.net]
それは目的がニッチ過ぎたか利用者が少なすぎたからで、
どっちにしろ標準になんかならない

728 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 20:48:25.04 ID:6ZaZCTR2.net]
Perl6 ? そういえばそうゆうものもあったな。ググると、
1年半前に正式安定版がリリースされたのか。知らなかった。

誰も、その事を話題にすらしていないし。
tamae.2ch.net/test/read.cgi/php/1162721943/
「 Perl6/Parrotスレ - Part2 」

729 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 21:37:11.61 ID:3zMwUShO.net]
Perl6は別の言語だからな

730 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 22:48:25.36 ID:QXbdV/cO.net]
pythonもバージョンが上がって別言語になった



731 名前:デフォルトの名無しさん [2017/04/20(木) 22:52:03.43 ID:NBs+Bll8.net]
>>711
なってないわ

732 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 23:04:27.00 ID:Viw0Nzyo.net]
>>698+699
PERL5OPTと組み合わせれば全て解消。

733 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 19:39:54.82 ID:W+YLVZyj.net]
>>697
そうか?ディスクI/Oが絡まないようなメモリ上だけの操作ならさほど遅い感じしないけど。
まあ、単純なのと比べたら遅いけどね。

734 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 19:56:30.69 ID:W+YLVZyj.net]
>>698
use encoding は?

735 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 10:11:15.92 ID:zwl8qhxW.net]
>>714
理論上完全に最適化できたとしても速度差は5倍以上あるよ

736 名前:デフォルトの名無しさん [2017/05/03(水) 00:40:52.14 ID:M+hoQd/o.net]
$str = "みかん りんご ぶどう";
を・みかん ・りんご ・ぶどうというように文字の最初に・をつけるには
どう置換すればいいんですか?

737 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 00:56:20.79 ID:weHSRqvf.net]
join '', map { '・' . $_ } split ' ', $str;

738 名前:デフォルトの名無しさん [2017/05/03(水) 01:07:15.97 ID:Qv6lwwF1.net]
$str =~ s/(\w+)/・$1/g;

739 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 01:13:44.21 ID:i0PT5y6P.net]
試してないだろ

740 名前:デフォルトの名無しさん [2017/05/03(水) 02:22:37.42 ID:0sDWrHda.net]
linux mint18
perl6のインストールについて

$ sudo apt install rakudo
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ rakudo が見つかりません

どうしたらインストールできます?



741 名前:デフォルトの名無しさん [2017/05/03(水) 02:40:51.60 ID:0sDWrHda.net]
$ perl6 -v
This is perl6 version 2015.11 built on MoarVM version 2015.11

すいません、解決しました

742 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 19:50:38.19 ID:nIm7OIQv.net]
POD書いてる?

743 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 23:25:04.61 ID:nen5x9dT.net]
メモリリーク検出になに使ってる?
とりあえず昔からTest::LeakTrace使ってるんだけど
いまはもっと便利なものがあったりするのかな?

744 名前:デフォルトの名無しさん [2017/05/24(水) 13:05:14.66 ID:9utV0RoM.net]
Perl/Qt は癖があるね、Perl/Qtとクラスを同時に使おうとするとなかなか大変。

745 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 12:56:56.81 ID:+Ey6Jlm8.net]
テキストファイルを読み込むときに

746 名前:
// (例えばfile://...)
があると、そこから行末まで読み込めない現象が起きるんだけど
どうしたらちゃんと読み込める?
binmodeにしても解決しなかった
[]
[ここ壊れてます]

747 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 13:01:09.18 ID:+Ey6Jlm8.net]
>>726
open fp, "<$file";
while(<fp>){
print $_;
}
みたいな感じで読み込んでる

748 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 14:02:42.07 ID:0c9kwMSl.net]
そんな訳ない

749 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 14:05:21.98 ID:9RwfEHwH.net]
ファイルハンドルからダブルスラッシュが含まれる行を読み込もうとするとダブルスラッシュが行末と誤認されるという解釈でいいんですかね

750 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 14:33:51.85 ID:eFuC5yco.net]
絶対になにかカンチガイしてるだろう。
単に出力のバッファリングで単に表示されてないだけとか。
もしくは自分で"//"以降を削除するような処理をしているとかだな。
正規表現の書き誤りがあやしい。



751 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 14:59:23.09 ID:0c9kwMSl.net]
実際に、>>726の方法で読ませればちゃんと読む筈
怪しい箇所を削っていって試せばいい

752 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 15:01:31.81 ID:/dM5Kslk.net]
>>726
再現コードを

753 名前:717 mailto:sage [2017/05/28(日) 16:52:39.75 ID:+Ey6Jlm8.net]
カンチガイでした
別のところでCのコメント削除をしていて
そこで消えてました
テヘペロ

754 名前:デフォルトの名無しさん [2017/05/28(日) 18:05:45.48 ID:DFLy+ixu.net]
ま、そんなもんよ
いい経験したな
次に活かせよ

755 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 20:22:17.89 ID:4xPNWoV3.net]
C/C++のソースコードを読んで
コメント削除したソースコード
ifdefとかのプリプロセスしたソースコード
typedef, struct, unionとかを抽出した結果
を得たいんだけどどうするのがいいだろう

プリプロセスしたソースコードをcflowに渡すと
関数コールツリーを得られるから
それらを使ってCのソースコード理解に役立てたい

756 名前:デフォルトの名無しさん [2017/05/28(日) 21:37:34.83 ID:QPUrPhGM.net]
>>735
何が難しいのか、なんでそんなことをしたいのかよくわからん。

757 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 22:39:53.18 ID:H3cdg50W.net]
>>735
自前で作るって話からは外れるけど、Doxygenに突っ込むとかじゃダメなの?

758 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 06:06:36.99 ID:iFMZQ+Zt.net]
>>736
Cのソースコード理解のため

難しいのは例えばif x>=10 && (defined(y) || z==1)とか
ifdef elif else endifとかの入れ子とか
を正しくパースしたりすること

structを抽出したあと
それらの参照関係も図示したい

759 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 06:07:01.52 ID:iFMZQ+Zt.net]
>>736
簡単なら作ってgitとかにあげてほしい

760 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 06:09:33.49 ID:iFMZQ+Zt.net]
>>737
プリプロセスする前のコードだと重複したりすると思う

gcc -Eとかだと
#defineとかまで展開されるからそれは抑えたい



761 名前:デフォルトの名無しさん [2017/05/29(月) 06:15:46.76 ID:1pPkP4QE.net]
gcc -E じゃだめなのか。
cpp のソースコードを読んでみるのがいいと思うよ。
昔、LSI-C 86 のプリプロセッサのソースコード読んで勉強したなあ。

762 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 07:11:36.94 ID:7MORbIbH.net]
>>735
cflowの中でプリプロセスするから事前にする必要はないと思うけど

763 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 17:52:39.84 ID:aFd0yPA1.net]
>>742
一部だけプリプロセスさせたいんです
マクロとかはそのままの方がわかり易いので

764 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 18:14:45.54 ID:aFd0yPA1.net]
例えば
#define ERRLVL 5
#define WARLVL 3
とかなってるのをプリプロセスすると
数字に置き換わるので意味が判りにくくなる

だけど#ifdefとかはプリプロセスしないと
例えば32ビット版の関数や構造体と
64ビット版の関数や構造体が重複してしまう

765 名前:デフォルトの名無しさん [2017/05/30(火) 04:54:25.56 ID:Al54U2am.net]
CPAN に Text::CPP なんてのがある

766 名前:諱B
そのままではご要望どおりじゃないと思うけど参考にはなるかも。
[]
[ここ壊れてます]

767 名前:デフォルトの名無しさん [2017/05/30(火) 20:58:34.87 ID:Al54U2am.net]
言いたいことはよく解る。
とりあえず、プリプロセッサの通常の動作から変更したいのは
・C ソースの中のマクロ置換はしない
・#define ディレクティブは用済みになっていないのでそのまま出力する
といったところ?
もし Text::CPP の作者がそれを有意義だと思ってくれたら、
なんとかしてくれる可能性もなくはないかもしれないな。
連絡先は README に書いてあるよ。

768 名前:デフォルトの名無しさん [2017/05/30(火) 21:10:46.26 ID:Al54U2am.net]
cpp をそのまま使うという方法もなくはないよ。

#define ディレクティブの前と C ソーステキストの前の行に
#line ディレクティブを入れる。
cpp の処理結果には #line ディレクティブがあるから
それを手がかりに元のファイルからコピーする。

この程度のことなら出来そうじゃない?

769 名前:726 [2017/06/01(木) 00:33:15.15 ID:mVcFCi6e.net]
作ってみたけどバグがあるだろう
https://github.com/bran1219/mycpp

770 名前:デフォルトの名無しさん [2017/06/04(日) 17:04:48.43 ID:JLuePf+9.net]
あまり野暮なことはいいたくないけど、ファイルハンドルから行を読むんじゃなくて
トークンを読んだ方がシンプルに書けるんじゃないかな。そうすれば

while(( my $tokentype,my $str) = gettoken( $fh)){
if ( $tokentype == 'comment'){ case_comment;}
elsif ( $tokentype == 'string'){ case_string;}

みたいなやり方が出来る。気を悪くしないでほしい。本当にそう思ったんだ。



771 名前:デフォルトの名無しさん [2017/06/05(月) 23:40:47.35 ID:AlRALdx8.net]
gettoken()を作ってread()で一文字ずつ読み込んでトークンを返すのは良さそうだけど
トークンタイプはその時の状態が判らないと判別できないと思う
//は普通の状態で現れたらコメント開始だけど
"の中だと文字列
/*の中だとコメント文字列

772 名前:デフォルトの名無しさん [2017/06/09(金) 13:39:22.36 ID:jmjGKHXw.net]
tcpのIO::Socket使ってサーバーに対してconnectした後、closeせずに親プロセスは接続を維持したまま、
forkした子プロセスでサーバーから受信した大量の文字列をファイルに書くとかするには子プロセスが継承したソケットをどう破棄したらいいの?
現状では当然の事ながら親プロセスの受信待ちが完全に止まってしまって困ってます

773 名前:デフォルトの名無しさん [2017/06/09(金) 14:33:09.33 ID:1EhRpyQk.net]
なぜ子プロセスでコネクトしないの?

774 名前:デフォルトの名無しさん [2017/06/09(金) 14:41:19.37 ID:jmjGKHXw.net]
>>752
客先のサーバーの仕様とやらで複数の接続(connect)に対応していない模様(爆)

775 名前:デフォルトの名無しさん [2017/06/09(金) 19:57:08.76 ID:ipZEdn/U.net]
>>753
親プロセスの接続を切れば複数接続じゃなくなると思う

776 名前:742 mailto:sage [2017/06/10(土) 02:10:59.82 ID:6TQL4PKJ.net]
解決しました
fork()してから普通に子プロセス側で$socket->close();すれば良かったのですね。
ありがとうございました

777 名前:デフォルトの名無しさん mailto:sage [2017/06/13(火) 00:27:54.86 ID:5t+GNw1N.net]
>>676,684-685
なぜこうなるの?

778 名前:デフォルトの名無しさん mailto:sage [2017/06/13(火) 02:06:41.19 ID:Z49xlslC.net]
ヒント:
print"Hello world!\n";
print "Hello world!\n";
print("Hello world!\n");
print ( "Hello world!\n" );

779 名前:デフォルトの名無しさん mailto:sage [2017/06/13(火) 06:02:24.69 ID:TrwiR2C4.net]
1. print 文は実行が成功するとTrue(1)を返す
2. すべての引数を括弧で括るのでなければ、print というキーワードの 次に開き括弧を書いてはいけません

ってだけの話。

print print print (1+2)+(4+5)+6+7;
は、
print (1+2) を実行したあとに
print 1+(4+5)+6+7実行して、
その戻り値1をプリントしてるだけ。

780 名前:デフォルトの名無しさん mailto:sage [2017/06/14(水) 00:2 ]
[ここ壊れてます]



781 名前:6:46.99 ID:J0vYxrWi.net mailto: >>758
なるほど、すっきりしたありがとう。

>>757
これは逆に何のヒントか分からなかった。
[]
[ここ壊れてます]

782 名前:デフォルトの名無しさん [2017/06/14(水) 07:10:52.51 ID:nXcqV3BV.net]
>>750
そんな面倒なことを考えなくてもいいように gettoken を書くんだよ。
普通は C の文字列定数の中でわざわざ // を認識しない。どんなやりかたを考えてるの?
興味があるなら flex とかやったみたらどうかな。

783 名前:デフォルトの名無しさん [2017/06/14(水) 08:00:33.67 ID:XYhnRuER.net]
>>760
文字列定数の中か外かはどうやって判別するの?

784 名前:デフォルトの名無しさん [2017/06/14(水) 23:53:09.01 ID:nXcqV3BV.net]
ずいぶん前のことなのに反応があって嬉しいよ。
とりあえず、行継続もプリプロセッサディレクティブの処理もエラーチェックも無し、
コメントと文字列だけでいいなら flex ならこう書ける。
https://ideone.com/NbLVjc
本当は '"' みたいな文字定数も想定しなきゃまずいけどね。

もちろん、flex を使わなくてもできる。
yylex を手書きするなら、まず 1 バイト読んで

switch ( c){
case '"': read_string(); break;
case '/': read_comment(); break;

みたいにするのが伝統的な方法だったりする。
この方法では switch から出る前にトークンを完結させる。
コメントや文字列定数の中と、それ以外の部分で文法が違うから
別の処理になっていると理解してほしい。
こうしなければならないわけではなく、テーブル駆動とかステートマシンが好みならそうすればいい。
重要なのは、yylex を 1 回呼べばトークンが 1 個完結しているということ。
もちろん Perl でも同じやり方はできる。できるけど…… Perl ですよ?
助けてくれるモジュールがあるんだから使ってみない? Parse::Lex とか。
flex をかじっておけば理解しやすいと思うよ。

785 名前:デフォルトの名無しさん [2017/06/16(金) 07:59:43.13 ID:ULLUKZU9.net]
>>762
それはcase文の文字で状態遷移してるのと等価

"があったら文字列の中の状態
/があったらコメント開始の1文字目の状態

モジュールを使ったのがネットにあったから使ってみたけど
期待と違ったから自作した

786 名前:デフォルトの名無しさん [2017/06/16(金) 08:02:46.40 ID:ULLUKZU9.net]
>>762
あとread_commentの中で*が直後にくる場合はコメント内だけど
別の文字が来たらコメントじゃない

read_commentとしてるけどコメントとは判別できない

787 名前:デフォルトの名無しさん mailto:sage [2017/06/23(金) 23:36:24.65 ID:jQG6z3fn.net]
ネストしたブロックを正規表現でとりたくてperlreにある再帰パターンというのつかおうとしているですが(?>[^()]+)の部分うまくかきかえられません。
loop〜end loopの形にしたいのですが、 (?!)の使い方がわるいのかヒットしないorz

788 名前:デフォルトの名無しさん mailto:sage [2017/06/26(月) 23:50:27.94 ID:zIACp4Pg.net]
(?>¥b(?!end loop|loop)で行けました。

ヒットしなかったのは再帰始まりのloopと干渉していたらしく、始まりをちゃんと書いたら動きました。

789 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 23:50:10.85 ID:eZnf2YJC.net]
FW使わずにpsgi/slackを使おうとしてて、モジュールの名前と言うか場所に悩んでます(´・ω・`)

pathがperl -I /hoge/lib/として、
/hoge/lib/Controller.pmみたいのを置きたいけど名前被りが嫌なので避けるための手法として

/hoge/lib/myController.pmとか
/hoge/lib/MyApp/Controller.pmとかあると思うんですが

perlでこういう場合の命名規則?というかお約束みたいな名前ってあるんでしょうか。
/hoge/lib/作ってるサイトのドメイン/Controller.pm
みたいにしようと思ったけど、
use 作ってるサイトのドメイン::Controller.pm
こんなの使いまわし効かなさすぎて嫌

790 名前:キぎる []
[ここ壊れてます]



791 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 06:52:20.07 ID:jqMU9B7T.net]
お約束はない。

>こんなの使いまわし効かなさすぎて嫌すぎる
ん?
スクリプト内で動的に変更したいとか、そこらへん?
じゃなきゃ普通に use XXXX::Controller で作っちゃうけど?

あとは、物理的にパス切らない。くらいだよね?
$ cat Hoge.pm
package Hoge::Foo;
sub hoge{ "hoge" }
1 ;
$ perl -MHoge -le 'print Hoge::Foo::hoge'

myController.pm 一個作って、中で切り分けちゃえば?

792 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 15:18:22.72 ID:/7f1HAmp.net]
どもです。
URLで言うexample.comみたいな不可侵領域?的なのが無いのかなぁと思った感じでした。

793 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 17:00:57.00 ID:sULhhpBu.net]
>>769
この辺一通り読むと参考になるかもね
perldoc.jp/docs/perl/perlmodlib.pod#Guidelines32for32Module32Creation

794 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 17:25:38.71 ID:/7f1HAmp.net]
>>770
> もしプライベートな内部やプロジェクト固有の用途のために開発中のモジュールが 決して公開されることがないなら、
> 将来の公開モジュールと名前が 衝突しないことを確実にしてください。
> これは、予約済みの Local::* カテゴリを使うか、 Foo_Corp::* のように 名前にした戦を含めることで行えます。

これだあああ
戦ってのが謎ですが、Localディレクトリに入れることにします。
ありがとうございます!

795 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 17:51:43.29 ID:MlIjnXqh.net]
たぶん「した戦」→「下線」アンダーラインのことかと

> Foo_Corp::* のように 名前に下線を含めることで

796 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 18:03:16.93 ID:/7f1HAmp.net]
なるほど…
ちゃんと訳した上で漢字を変な読み方した状態でのタイポとはw

797 名前:デフォルトの名無しさん mailto:sage [2017/06/30(金) 20:59:30.86 ID:O3ckt/Q4.net]
今とあるスクリプトを見たら
1 while(s/[\012\015]$//);
こんなん書いてあったんだけど、
たぶん改行とおぼしきものは全部消すってことだと思うんだけど、
いらんもんまで消しすぎたりしてない?

798 名前:デフォルトの名無しさん mailto:sage [2017/06/30(金) 21:30:32.10 ID:nK8Rv+fa.net]
スカラー末の改行(の連続)を外す。
スカラー内の改行は外さない。
作者の意図通りに、余分なものは消さないと思うよ。

普通に、s/[¥012¥015]$//g ; すりゃいいと思うけど、、、

799 名前:デフォルトの名無しさん mailto:sage [2017/06/30(金) 23:49:28.02 ID:5o89YkXB.net]
スカラー?

800 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 06:06:23.31 ID:756r6lLe.net]
whileとgは同じじゃない



801 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 06:27:43.88 ID:756r6lLe.net]
文字の末尾が012か015だったら消すんじゃない?
文字コードもわからないけど

802 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 06:43:42.49 ID:LXXRZ/Ka.net]
動作は >>778 の通りだと思うけど
1 while が意味不明だな

803 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 06:50:18.42 ID:756r6lLe.net]
while 1 はマニュアルにも記載されてる基本的な手法
条件だけで実行が完了する

804 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 09:11:09.64 ID:vTsOeFgm.net]
もっとくやしく

805 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 09:24:13.31 ID:B+Q6GXxH.net]
1は無視していいよ

806 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 10:05:39.83 ID:756r6lLe.net]
勉強し始めて1日で覚えるようなことを全然分からんようなやつが回答者ぶってるのかよ

807 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 10:10:49.16 ID:756r6lLe.net]
とりあえず一通り調べたけど、末尾に改行を使う文字コードはなかったから、
1 while(s/[\012\015]$//);
これは本当に改行を削除したいならあらゆる方法の中で最善だと思われる
本当にかたっぱしから消したいのなら、だけど…

808 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 10:11:51.33 ID:756r6lLe.net]
と言うより $ が自動でその判定してるから、関係ないものは消えないはずなんだよね

809 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 11:23:51.39 ID:Enayuk ]
[ここ壊れてます]

810 名前:TL.net mailto: 取り敢えず、ベンチマーク。

$ cat bench.pl
#!/usr/bin/perl
use Benchmark qw( cmpthese timethese ) ;
my $f = +( "42¥r¥n" x 1000 ) . +( "¥r¥n" x 10000 ) ;
sub _gm { my $f2 = $f ; $f2 =~ s/[¥012¥015]$//gm ; }
sub _while { my $f2 = $f ; 1 while $f2 =~ s/[¥012¥015]$// ; }

cmpthese(timethese (undef, {
while => '_while',
gm => '_gm',
})) ;

$ perl bench.pl
Benchmark: running gm, while for at least 3 CPU seconds...
gm: 3 wallclock secs ( 3.36 usr + 0.01 sys = 3.37 CPU) @ 356.68/s (n=1202)
while: 3 wallclock secs ( 3.06 usr + 0.00 sys = 3.06 CPU) @ 152.94/s (n=468)
Rate while gm
while 153/s -- -57%
gm 357/s 133% --
[]
[ここ壊れてます]



811 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 11:26:08.99 ID:EnayukTL.net]
あ、単純に変数最後の CRLF 削りたいだけなら、比べ物にならん程
chomp の方が早い。

local $/ = “¥r¥n” ;
chomp $_ ;

812 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 12:14:31.52 ID:B+Q6GXxH.net]
ActivePerlとCygwinの両方で動くようにしようと思うと、chomp使えないんだよな

813 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 12:31:21.77 ID:EnayukTL.net]
ん?
どっちが悪いか知らんが、
local $/ = “¥012¥015” ;
も効かんの?

814 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 12:36:32.24 ID:756r6lLe.net]
\rだの\nだの使ってることに神経を疑っちまうぜ
と言うかutf8にさえ文字とみなされない文字を使ってる時点で…

ところで以下の3つは全部挙動が違いので並列にベンチとっても無意味
chomp;
s/[\012\015]$//gm;
1 while(s/[\012\015]$//);

特に真ん中のは色々とひどいことになると予想した

815 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 12:40:25.72 ID:756r6lLe.net]
>>789
I/Oと言うのはその名の通りIとOがあってだな

816 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 12:48:39.37 ID:EnayukTL.net]
>>790
ご指摘の通り俺が間違ってたわ。
chomp が違うのは同意

#!/usr/bin/perl
use Benchmark qw( cmpthese timethese ) ;
my $f = +( "42¥012¥015" x 1000 ) . +( “¥012¥015" x 10000 ) ;
sub _gms { my $f2 = $f ; $f2 =~ s/[¥012¥015]$//gms ; }
sub _while { my $f2 = $f ; 1 while $f2 =~ s/[¥012¥015]$// ; }
cmpthese(timethese (undef, {
while => '_while',
gms => '_gms',
})) ;

Benchmark: running gms, while for at least 3 CPU seconds...
gms: 4 wallclock secs ( 3.24 usr + 0.03 sys = 3.27 CPU) @ 391.13/s (n=1279)
while: 3 wallclock secs ( 3.01 usr + 0.03 sys = 3.04 CPU) @ 155.26/s (n=472)
Rate while gms
while 155/s -- -60%
gms 391/s 152% --

817 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 12:51:34.83 ID:EnayukTL.net]
>>792 は上手く動いてねーw
すまん。全面的の俺のレスは脳内から消してくれ。

818 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 13:05:38.92 ID:EnayukTL.net]
連レスすまん。これを最後に消える。

s/[¥012¥015]¥Z//gm

出力を od -d -a で確認したから合ってると思う。
でベンチマーク取ったけど、記憶にある通りのベンチになった。
通りで>>786>>792が遅いわけだわ。

819 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 15:21:02.94 ID:iaxNT7Vw.net]
しかしなんで8進数?
これが普通なの?

820 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 20:55:02.68 ID:LXXRZ/Ka.net]
うーん いくら考えても 1 while() と書いてる意味がわからん
gオプションついてないから while の意味ないし
結果知りたいなら s/// の値を直で調べりゃ済む話だし
何故なんだ 誰か教えてください



821 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 02:22:16.04 ID:ucaUnn+J.net]
量指定子の存在しない世界線なのか。

#!/usr/bin/perl -w
use strict;
sub hd { print '[', join(' ', map uc unpack('H2', $_), split //, $_[0]), "]\n" }
my($lf, $cr, $n) = ("\012", "\015", "\n");
my $str = "$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$

822 名前:cr$n";

$_ = $str; 1 while s/[\012\015]$//; hd($_);
($_ = $str) =~ s/[\012\015]$//g; hd($_);
($_ = $str) =~ s/[\012\015]+$//; hd($_);
__END__

なお改行が \015 でも \012 でもそれらの組み合わせでもない環境があるので、
$ と \Z と \z の意味するところは元のコードが使われていた環境に依存する。
http://perldoc.jp/docs/perl/perlport.pod#Newlines
[]
[ここ壊れてます]

823 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 08:10:30.13 ID:cmIXSukt.net]
ありがとう すごくよくわかった
1 whileの挙動をなにか勘違いしていたみたい

そしてベンチマーク取ってみたら
1 while s/[\012\015]$//; よりも while(s/[\012\015]$//){} の方が微妙に速かった
(すごく微妙なんだが 毎回1を評価しないでいい分の差??)
そして s/[\012\015]+$//; は1桁近く遅かった そうだったんだ…

824 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 12:35:43.14 ID:9IiniyIy.net]
オレ速度はあまり気にしないから、いつも素直に s/(?:¥r?¥n)+$//; の感じだな。
¥b入れた方がいいのかもしれないけれど入れたことはない。

$とって、gつければ、改行全部きえるはずだよ。
(行単位に分離されてそうだけど。。。)

825 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 14:53:25.87 ID:ucaUnn+J.net]
>>798
一体どんな計り方をしたんだ。
perldoc.jp/docs/perl/perlperf.pod
perldoc.jp/docs/perl/perlcompile.pod#The32Decompiling32Back32End

#!/usr/bin/perl -w
use strict;
use Benchmark qw(cmpthese);

my($lf, $cr, $n) = ("\012", "\015", "\n");

for my $str ("$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n", "abc$n", 'abc') {
   cmpthese(-5, {
    ws => sub { $_ = $str; 1 while s/[\012\015]$//; 1 },
    wb => sub { $_ = $str; while (s/[\012\015]$//) {} 1 },
    qu => sub { $_ = $str; s/[\012\015]+$//; 1 },
  });
print "\n";
}
__END__

これぐらいシンプルな正規表現なら
エンジン内でのバックトラック >> 文自体の反復 >= ループ構造
文字列内に [\012\015] にマッチする文字があればあるほど qu の方が速くなる。

826 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 17:06:13.22 ID:cmIXSukt.net]
こんな計り方↓

#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/:all/;

my ($lf, $cr, $n) = ("\012", "\015", "\n");
my $str = "$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n" x 100;

cmpthese -5, {
'1while' => sub {$_ = $str; 1 while s/[\012\015]$//;},
'1while_g' => sub {$_ = $str; 1 while s/[\012\015]$//g;},
quantifier => sub {$_ = $str; s/[\012\015]+$//;},
while_g => sub {$_ = $str; while (s/[\012\015]$//g){};},
while => sub {$_ = $str; while (s/[\012\015]$//){};},
};
__END__

同じwhileでもgオプションつけると微妙に速くなる
面白い

827 名前:デフォルトの名無しさん mailto:sage [2017/07/03(月) 04:18:38.68 ID:7bJtUMTI.net]
>>801
自分の感覚と真逆の結果なんで -Mre=debug して調べたら、 [\012\015]$ だと
固定長だからエンジンが動作を最適化して最初から末尾しかみないんだな。
だから文字列自体が長くなると逆転が起こると。勉強になったよ。

#!/usr/bin/perl -w
use strict;
use Benchmark qw(cmpthese);
my $n = "\015\012";
my $sa = $n x 500; # 全文字にマッチ
my $sf = ($n x 250) . ('a' x 500); # + の場合前半に長くマッチした上で失敗する
my $sl = ('a' x 500) . ($n x 250); # 後半に長くマッチ
my $sn = 'a' x 1000; # マッチしない
my $su = ('a' x 998) . $n; # 末尾のみ

cmpthese(-5, {
  wa => sub { $_ = $sa; 1 while s/[\012\015]$//; 1 },
  wf => sub { $_ = $sf; 1 while s/[\012\015]$//; 1 },
  wl => sub { $_ = $sl; 1 while s/[\012\015]$//; 1 },
  wn => sub { $_ = $sn; 1 while s/[\012\015]$//; 1 },
  wu => sub { $_ = $su; 1 while s/[\012\015]$//; 1 },
  qa => sub { $_ = $sa; s/[\012\015]+$//; 1 },
  qf => sub { $_ = $sf; s/[\012\015]+$//; 1 },
  ql => sub { $_ = $sl; s/[\012\015]+$//; 1 },
  qn => sub { $_ = $sn; s/[\012\015]+$//; 1 },
  qu => sub { $_ = $su; s/[\012\015]+$//; 1 },
});
__END__

828 名前:デフォルトの名無しさん mailto:sage [2017/07/03(月) 21:35:51.52 ID:88Z7s+4Q.net]
こちらこそ勉強になりました
まぬけな質問 >>796 やとんちきなベンチマーク >>801 でも
役に立つ(?)こともあるんですな

829 名前:デフォルトの名無しさん [2017/08/15(火) 19:10:26 ]
[ここ壊れてます]

830 名前:.36 ID:mGHj5vlw.net mailto: Perlに向いてるIDE教えて
デバッグ機能とかはいらない
補完と文法チェックとオートインデントが欲しい
[]
[ここ壊れてます]



831 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 00:53:07.53 ID:83B6OrrB.net]
一番要るのはCPANとの連携機能だろ

832 名前:デフォルトの名無しさん [2017/08/17(木) 08:11:08.69 ID:3rgoYIbT.net]
CPANとの連携機能はどっちでもいい
みんなメモ帳レベルのテキストエディタで書いてるの?

833 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 08:48:00.96 ID:ewlyrxLm.net]
IDEといいつつエディタでいいのか?

834 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 21:40:11.78 ID:DvPmzIRV.net]
vscode

835 名前:デフォルトの名無しさん [2017/08/17(木) 22:05:58.41 ID:3rgoYIbT.net]
どこまでがエディタでどこまでがIDEなのか分からないが、それなりの機能は欲しい
自作関数とかも補完して欲しいしなあ

サンクス
vscode調べてみる

836 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 14:13:33.64 ID:zbaxfQ1B.net]
これ誰が使うの?

https://docs.perl6.org/type/atomicint#Operators

837 名前:デフォルトの名無しさん [2017/08/27(日) 20:38:24.57 ID:SUXQdIaA.net]
Perl6?

838 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 21:17:36.95 ID:l5ljwsJk.net]
6は別物らしいね

839 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 22:40:07.20 ID:eg2XZFIG.net]
pythonもVBもバージョン上がると別物になる
そして大抵古い方が使いやすい

840 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 22:55:26.24 ID:l5ljwsJk.net]
pythonはそろそろLinuxのデフォルトが3になりそうだけど
Perlはそんな気配全く無いよねw



841 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 23:11:43.20 ID:QvkIPToQ.net]
システム付属のスクリプト言語っていう立ち位置がかつてのPerlからPythonに変わったからなあ

842 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 23:14:14.93 ID:eg2XZFIG.net]
過去の資産が多いほどおいそれとは変えられない

843 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 00:32:32.45 ID:MFSwZwGT.net]
Perl は5.005まで。5.6からは別物。

844 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 18:35:08.35 ID:rhRVTFDq.net]
<?=>

845 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 18:35:53.37 ID:rhRVTFDq.net]
>>810
なにそれどうやって書くの?

846 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 09:00:08.40 ID:Lglrs9g0.net]
>>819

Unicode Character 'ATOM SYMBOL' (U+269B)

おいらのPCでは、コピペしてもフォントが対応していないので出てが。

847 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 19:42:59.46 ID:bbdqdnnx.net]
環境によってはどうやってもアトミックにならんのでは

848 名前:デフォルトの名無しさん mailto:sega [2017/08/31(木) 15:10:50.45 ID:zaIZgwYc.net]
$_ って正式名称はなに?

849 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:40:54.54 ID:3/js14c9.net]
>>822
特に決まっていない
use English した時の名前は ARG
perldoc.jp/docs/perl/5.22.1/perlvar.pod#General32Variables
perldoc.perl.org/perlvar.html#General-Variables

850 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 21:06:33.50 ID:kksFNuyJ.net]
日本だとparameterもargumentもどっちも引数と訳して区別しないから、
何故ARGなのかピンときにくいな



851 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:02:37.51 ID:j9yVEoD5.net]
引数は単に引数ってだけ。その使われ方は決まっていない。

例えば言語によっては関数の引数で戻り値を返すことだってできる。
つまり引数=パラメータではない

また関数の引数の多くはパラメータになるが、
引数だけがパラメータではない。
環境変数でパラメータを渡すことも有る

つまり「この関数の引数はすべてパラメータであり、引数以外のパラメータは取らない」
のような使い方をする

852 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:05:02.71 ID:j9yVEoD5.net]
なぜ $_ が ARGなのかというと
正式名称が「デフォルトの引数」だからである。

853 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:17:16.68 ID:kksFNuyJ.net]
そういう理解なんだねとは思うけど、何も正しくない

パラメータは、数学の媒介変数から借りてきた言葉

854 名前:で、
それを変化させると結果がいろいろ変わる変数

argumentは訳語が無いのでアーギュメントとするけど、
これは仮引数とも訳されて、関数を定義する時に便宜的に使われる名前

y = f(a)
と使うけど、定義では
f(x) = x*x
みたいに違う名前で書く

ここで、aがパラメータで、xがアーギュメント
[]
[ここ壊れてます]

855 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:45:26.64 ID:j9yVEoD5.net]
それは数学での定義でしかない

856 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 15:00:43.14 ID:H3SYi0Xx.net]
引数として使ってるものが引数
パレメータとして使ってる物がパラメータ

857 名前:デフォルトの名無しさん [2017/09/02(土) 10:40:48.32 ID:u6TVALzz.net]
パレパレ

858 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 12:32:02.45 ID:xOFD7X9t.net]
パレメータでぐぐると600件くらいヒットするから、
それなりに認知された用語だ

859 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 01:01:13.45 ID:93btyWjA.net]
ネイティヴ風の発音だね

860 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 11:11:45.08 ID:DIhXI1rF.net]
たまにいるよな。
大抵のカタカナ英語は日本語風に書いているのに
特定の単語だけネイティブ風に書くやつ

より正確な英語の発音にこだわってるんだー風を
だしていながら、その他のよく知られたカタカナ英語は
そうやってないから、ものすごく恥ずかしい



861 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 12:13:05.99 ID:9X5Pxl9y.net]
何言ってんだかさっぱりわかんないな。
これじゃ駄目なん? 普通にパラメータに聞こえますけど。
ejje.weblio.jp/content/parameter

元凶は日本のマスゴミなんだから逆らって
アイフォーンをアイフォンとかは全然いいんじゃない?

862 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 17:26:43.87 ID:B/+QCXTV.net]
そして突然迷い込む馬鹿二人(うち一人が発狂)

863 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 02:55:51.13 ID:wDfrhDJb.net]
パリミラァ

864 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 05:58:32.53 ID:jkNKu/s3.net]
なんてネイティヴな発音!

865 名前:デフォルトの名無しさん [2017/09/06(水) 01:01:55.01 ID:G3iCmUe0.net]
アイフォーンはアイフォーンだろうがゴミ
日本企業の商標を無視するとか朝鮮人かよ

866 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 19:33:55.21 ID:sdZlzdoG.net]
先にアイホンがあったから、アイフォンって名乗れないだけだけどな

867 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 01:22:55.82 ID:Sk+IOtsg.net]
>>834
おれには「フラメトル」としか聞こえん

868 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 07:54:03.77 ID:J7Os68O5.net]
disableをディセーブルだと判ってるのに、どうしてもディザブルと読んでしまう

869 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 19:11:13.56 ID:PWIqhoXm.net]
ディスエイブル

870 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 19:11:55.89 ID:PWIqhoXm.net]
deny はデニーではなくディナイ



871 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 19:13:03.02 ID:PWIqhoXm.net]
alias はアリアスではなくエイリアス

872 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 21:23:32.99 ID:ktr8CX3U.net]
dosは土座

873 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 21:58:39.86 ID:a0beitbE.net]
>>845
お前PCニュース板で荒らしって叩かれてるやつだろw

874 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:16:27.00 ID:xDlOGQNS.net]
質問ですが required.plをtest.plからrequire './required.pl'としたとき、
required.plの中でuse strict;と書いてもtest.plがstrictにならないのに
required.plの中でuse CGI;と書くとtest.plでmy $q = new CGI;できてしまうのは何で?
use xxxx;にスコープの違いがあるとして、何読んだらワカル?
ちなPerl 5 (v5.16.1)

875 名前:デフォルトの名無しさん [2017/09/15(金) 23:33:11.49 ID:du4uxrUm.net]
>>847=ゴミ言語に合理性や整合性を求める知恵遅れ

社会のお荷物だよお前

876 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:43:23.66 ID:quely ]
[ここ壊れてます]

877 名前:H0d.net mailto: 訳: わかりません []
[ここ壊れてます]

878 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 00:35:28.29 ID:r+6Dx5B1.net]
>>847
perldoc.jp/docs/perl/5.16.1/perlmod.pod
プラグマは大体ブロックスコープだけどものによるから個別に調べて
perldoc.jp/index/core

879 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 10:28:48.29 ID:ykCZuND/.net]
>>850
レスdくすあり〜

Perl 4時代のCGIをメンテ中なう、、
new CGI;すると何かページの挙動が変わってしまうので結局CGI使わずに調査することにすた、

880 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 10:40:43.15 ID:eVQeLfYm.net]
>>847
そもそも概念が全く違うな
CGI->new が呼び出せるように strict->importは呼び出せるようになっているし

パッケージの定義がグローバルな名前空間に行われてるのは同じ
strictの有効化はコンパイル時のperl内部のスイッチの切り替え
同じ use でもやりたいことが違うからスコープの違いという視点で整理しようとすると混乱しそう



881 名前:デフォルトの名無しさん [2017/09/21(木) 20:27:42.42 ID:BpkTXd/3.net]
文字列$str2から文字列$str1に含まれている文字以外を全て削除する
例えば$str2="あaかbさcたdなe";$str1="あかさたな";ならば
absdeが残るということです
モジュール使えない環境なのでモジュールなしのやりかたで

882 名前:デフォルトの名無しさん [2017/09/21(木) 20:29:23.07 ID:BpkTXd/3.net]
間違えたabcdeが残るではなくあかさたなが残る

883 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 21:26:21.38 ID:YjUNPIX/.net]
$str2="あaかbさcたdなe";
$str1="あかさたな";

$str2 =~ s/[^$str1]//g;
print $str2; # あかさたな

884 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 23:33:40.68 ID:8ncmvgKd.net]
正規表現は書けても実行しようとするとむちゃくちゃ遅くなったり
メモリ足りなくなったりして、結局ループに開いたりする

885 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 05:44:52.27 ID:gzrtSK/2.net]
あああああああああまははあああああああああああああああああああああなやたはあああああああああああああああなはわたはなたかかなななななああああああああああああああああああああああああああああかかかかあああああああああああああかささやなさはななけなわまややゆか

886 名前:デフォルトの名無しさん [2017/09/22(金) 09:19:14.94 ID:fe+2x70v.net]
>>855
そのやり方だと
$str2="あaかbさcたdなe";が
$str2="あaかbさcたdなはe";
だったら結果が文字化けする

887 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:42:25.43 ID:45DIhC0E.net]
utf8に変換して処理しなさい

888 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:45:38.48 ID:AEpp9yrH.net]
常識ですな

889 名前:デフォルトの名無しさん [2017/09/22(金) 12:47:50.13 ID:gMAmIwCv.net]
>>856
それは大抵バックトラックのせいだからバックトラックを減らしなさい。
たとえば、単に \s* ではなく (?>\s*) と書く。

890 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 15:14:55.50 ID:J7EIO5I9.net]
Perlは正則言語を最左導出に変換していないとか一体…
まあ一般に状態数が増えてメモリ食うけど



891 名前:デフォルトの名無しさん mailto:age [2017/09/30(土) 21:35:00.65 ID:cxuNJ5cw.net]
ファイルロック用のファイルを使ってロックしている最中に
他プロセスでそのロック用ファイルを削除すると
ロック解除されてしまうの?

892 名前:デフォルトの名無しさん [2017/10/01(日) 00:30:05.86 ID:/pIW5dK5.net]
す、す、すみません、どなたか教えてくららい。

893 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 02:02:03.44 ID:aVSvWtqd.net]
ロックしているファイルを、他のプロセスは削除できないだろ

試してみれば?

894 名前:デフォルトの名無しさん [2017/10/01(日) 04:19:01.01 ID:ZfVcefoU.net]
見事にヴァカが釣れたw
腹痛いwwwwwwwwwww

895 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 06:50:57.38 ID:h9mcOQPA.net]
10/1は裏エイプリルフール
何をしても許される

896 名前:デフォルトの名無しさん [2017/10/01(日) 23:10:23.34 ID:y8Okh59a.net]
試してみたけどwindowsサーバーだとロック中のファイルは削除できないけど
unixサーバーだと削除できてしまってロックが解除される
だからロック用ファイルは削除しないでそのまんまの方がいい

897 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 07:04:29.29 ID:4i2RkMyIt]
勧告ロック

898 名前:フ場合、いくらでも操作できちゃうので
ロックファイルなどというものを使ってる時点で脆弱性を作り込んでる。
[]
[ここ壊れてます]

899 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 13:19:40.10 ID:7H/ud9Uk.net]
>>868
unixでファイル削除してもロックは解放されない

900 名前:デフォルトの名無しさん [2017/10/02(月) 13:31:28.69 ID:SGi8KvwU.net]
>>870
それどころか同名のロックファイルを作れるから 面倒なバグを生むよな

初心者がほんとによく作るバグが
「ロックを解放したらロックファイルも削除する」



901 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 18:11:00.25 ID:zZtvHqX+.net]
perl6についてスレすらないけどみんな無関心なの?

902 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:15:38.66 ID:7PTk8Wzs.net]
違う言語だからなあ
そんなんに慣れるくらいなら別の言語やる

903 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:19:54.66 ID:zZtvHqX+.net]
とんくす
やっぱそういう認識なんやね

904 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:54:37.34 ID:W4ke7gLE.net]
使えるとこではPerl使いたいけど
いよいよとなったら次はpythonかなぁ

905 名前:デフォルトの名無しさん [2017/10/02(月) 20:13:00.81 ID:xxT2R/Bt.net]
(lock_test1.cgi)
test.lockを排他ロック
sleep(10);
ロック解除

(lock_test2.cgi)
test.lockを削除
test.lockを排他ロック
ロック解除

lock_test1.cgiを実行した3秒後にlock_test2.cgiを実行して試したら
lock_test2.cgiの方はロック待ちにならなかった
test.lockを削除しない場合はロック待ちになった
だからロック用ファイルを削除するとロックが解除される

906 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 20:14:57.29 ID:7PTk8Wzs.net]
pythonも新バージョンへに移行したくない同じ現象になってて、
次の言語が待たれている

perlからpythonはいろいろ新しいアイディアが追加されて、
より面白い言語になったけど、
次の言語では何が追加されるんだろう

907 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 20:19:16.81 ID:W4ke7gLE.net]
>>877
個人的にpythonは3から入ったから、
早く移行完了して欲しいw

908 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 13:20:15.84 ID:inJ+8qV1.net]
>>876
それはロック解除されてない
それは、毎回新しくロックファイル作ってロックする方法なら
常にロック出来るというだけ

909 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 23:33:51.09 ID:1JBojDVn.net]
ロック状態を示すファイルを削除したら、その擬似的なロックが、解放されるのは当たり前だとおもうのだけど、結局何がしたいんだ?

910 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:15:23.63 ID:6wQnopu1.net]
基本的なことだったと思うのですが、忘れてしまって調べても見つけられなかったので質問させてください。

print関数のFHのようなスペースを伴わずに渡す第一引数って
* なんていう名前でしたっけ
* どうやって定義するんでしたっけ



911 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 11:13:34.60 ID:lC4cuCCD.net]
>print関数のFHのようなスペースを伴わずに渡す第一引数
???
何を指しているのかよくわからないし、定義するってどういうことだ?

print FH "hoge", "fuga";
print "hoge", "fuga";

912 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:02:43.75 ID:6wQnopu1.net]
>>882
自分で定義する関数にprintのFHような渡し方をする引数を定義するということです。
スロットとかいう名前だった気がしたのですが、どうも違うようで

913 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:05:55.88 ID:6wQnopu1.net]
あ、スペースを伴わずに、じゃない
カンマを伴わずに…

914 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:33:54.72 ID:lC4cuCCD.net]
間接オブジェクト構文
ttp://perldoc.jp/docs/perl/5.8.8/perlobj.pod#Indirect32Object32Syntax

new Hoge 'foo', 'bar';
Hoge->new('foo', 'bar');

普通にメソッドを定義すればよく、呼び出す時の書き方が違うだけ

915 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 13:02:49.57 ID:5L99WECK.net]
>>885
そうだったー!!
ありがとうございます!!!

916 名前:デフォルトの名無しさん [2017/10/09(月) 21:30:40.03 ID:EtpsZHXA.net]
で、何をしたのかね?

917 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:33:56.63 ID:EtpsZHXA.net]
うう。リロード忘れ。

918 名前:デフォルトの名無しさん [2017/10/12(木) 16:28:32.59 ID:5XRwFLPd.net]
WWW-Curl-4.17.をインストールしたいと思っています。

919 名前:
perl Makefile.PLを実行して以下のエラーが出力されました。
原因と対応方法が分かる方、ご教示ください。

Locating required external dependency bin:curl-config... found at /usr/local/bin/curl-config.
The version is libcurl 7.19.6
Found curl.h in /usr/local/include/curl/curl.h
No working cpp (ファイルもディレクトリもありません。). Parsing curl.h in Perl at Makefile.PL line 105.
Building curlopt-constants.c for your libcurl version
Building Easy.pm constants for your libcurl version
Building Share.pm constants for your libcurl version
Generating a Unix-style Makefile
Writing Makefile for WWW::Curl
Writing MYMETA.yml and MYMETA.jso
[]
[ここ壊れてます]

920 名前:デフォルトの名無しさん [2017/10/12(木) 22:11:19.78 ID:5bT9xlHu.net]
そのモジュールのことは知らないけど、とりあえず「cpp が無い」と言ってるようだね。
make と C をインストールすればいいと思うよ。



921 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 22:58:50.94 ID:4iOww/iD.net]
makeがちゃんとした文法になる日は来るんだろうか

922 名前:デフォルトの名無しさん [2017/10/13(金) 09:46:32.50 ID:BQhKbAsH.net]
880さん、ありがとうございます。
cppがインストールされていないのですね。。

pkginfoでみるとそれらしいものが入っているのですが、下記とは違うものでしょうか。
# pkginfo -i |grep cpp
system SUNWcpp Solaris cpp
GNOME2 SUNWsigcpp Libsigc++ - a library that implements typesafe callback system for standard
C++
GNOME2 SUNWsigcpp-devel Libsigc++ - a library that implements typesafe callback system for standard
C++ - development files

923 名前:880 [2017/10/13(金) 21:28:27.18 ID:4p1OUNBb.net]
問題は解決しましたか? Solaris のことは分からないのでこれ以上お役に立てそうにありません。
まだ解決していないのなら perlsolaris というマニュアルがあるはずですから読んでみてください。
その上で、Solaris のことをよく知っている人に聞くのがよろしいかと思います。

924 名前:デフォルトの名無しさん [2017/10/14(土) 22:03:44.55 ID:7hq5DvWK.net]
ダメですね。。
もうちょっとネットで調べてみます。

925 名前:デフォルトの名無しさん [2017/10/20(金) 15:42:18.30 ID:1xv6Ebpc.net]
流れを切ってすみません。
半角カタカナを全角カタカナにしてファイルに書き込みたいです。
Cannot decode string with wide characters at...
のエラーになります。どこをどう修正すればよいでしょうか。
use utf8; use Encode; use Encode::JP::H2Z;
open(IN, "<:encoding(cp932)", "src.txt");
open(OUT, ">:encoding(cp932)", "dst.txt");
...
#$strはファイルから読み込んだ文字列
Encode::from_to($str, "utf8", "euc-jp"); #どうもここでひっかかる
Encode::JP::H2Z::h2z(\$str);
Encode::from_to($str, "euc-jp", "utf8");
...
といったコードなのですが・・・。
Shift-JISのコードだと上手く動くのですが・・・。
utf8で標準モジュールの利用で行いたいです。どなたかよろしくお願いします。

926 名前:デフォルトの名無しさん [2017/10/20(金) 17:53:57.14 ID:P8duaFnv.net]
目的がそれだけなら、こんな感じになるかな。

open( IN,'<','src.txt')
open( OUT,'>','dst.txt')

Encode::from_to( $str,'cp932','euc-jp');
Encode::JP::H2Z::h2z(\$str);
Encode::from_to( $str,'euc-jp','cp932');

どうしてかというと、from_to に渡すのは Perl の用語で言うなら文字列ではなくバイト列。
だから入力時にデコードする必要は無い。
日本語でのパターンマッチなどのためにデコードしてある場合は
from_to ではなく encode を使う。
Encode のマニュアルを読んでください。
標準モジュールしか使えないわけじゃないのなら Unicode::Japanese を使って

927 名前:ンてはどうでしょう。 []
[ここ壊れてます]

928 名前:885 [2017/10/21(土) 02:31:17.21 ID:JUnyPSe2.net]
>896
返信ありがとうございます。
他に日本語の処理があるのでencoding(cp932)としています。
$str=Encode::encode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str);
$str=Encode::decode('utf-8',$str);
としても
#$str=Encode::encode('utf-8',$str);#これの有無に関わらず
$str=Unicode::Japanese->new($str)->h2zKana->get;
(ためしにUnicode::Japaneseを使ってみましたが、標準モジュールで行いたいです)
"\x{xxxx}" does not map to cp932 at ....
とワーニングだらけで>:encoding(cp932)がうまくいっていないというか
それ以前の変換がうまくいっていないようです・・・。

929 名前:855 [2017/10/21(土) 02:40:01.52 ID:JUnyPSe2.net]
連投すみません。encodeとdecode間違ってるなと思い
$str=Encode::decode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str);
$str=Encode::encode('euc-jp',$str);
とすると、
Wide character in subroutine entry at...
で出力が0バイトとなってしまいます・・・。

930 名前:885 [2017/10/21(土) 03:03:22.99 ID:JUnyPSe2.net]
何度もすみません。できました。
$str=Encode::encode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str);
$str=Encode::decode('euc-jp',$str);
でした。
> 886
encodeを使うアドバイスありがとうございました。助かりました。



931 名前:デフォルトの名無しさん [2017/10/28(土) 14:12:24.45 ID:86e9E3uL.net]
#!/usr/local/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);
print <<"EOM";
Content-tyoe: text/html; charset=shift_jis\n\n
<html><body>
EOM

eval {require DBI;};
if($@) {
print "DBI NG<br>\n";
} else {
print "DBI OK<br>\n";
}

undef $@;
eval {require DBD::SQLite; }
if($@) {
print "DBD::SQLite NG<br>\n";
} else {
print "DBD::SQLite OK<br>\n";
}

print "</body></html>";

sqlchk.cgiの19行目の構文エラー。 "){"
と出るんですが何が原因か分かりません。もしよろしければ教えていただけないでしょうか?

932 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 14:36:19.07 ID:yzxLOqe0.net]
>>900
eval {require DBD::SQLite; }
の最後に ; が無い

933 名前:デフォルトの名無しさん [2017/10/28(土) 15:04:21.68 ID:86e9E3uL.net]
助かりました。ありがとうございました^−^

934 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 19:40:06.83 ID:FhCkv10M.net]
^−^

935 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:59:57.34 ID:uQFQAfJE.net]
(^_^;

936 名前:デフォルトの名無しさん [2017/11/22(水) 19:37:11.64 ID:kPeZVcC+.net]
(^────────────^)

937 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:55:47.27 ID:oTRzAO+2.net]
(^________________^;

938 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 00:10:28.02 ID:kTaFEskE.net]
:-)

939 名前:デフォルトの名無しさん [2017/11/23(木) 18:54:17.85 ID:8ru0xFWh.net]
:────────────)

940 名前:デフォルトの名無しさん [2017/12/05(火) 14:22:42.29 ID:nNRKwkIq.net]
APIアクセスでのレスポンスをDumperしたら下みたいに返ってきたんだけど
'https://hogehoge.hoge/'を取得するにはどうアクセスしたらいいです?

$VAR1 = bless( {
'url' => bless( do{\(my $o = 'https://hogehoge.hoge/')}, 'URI::https' )
}, 'Entity::Tag' );



941 名前:デフォルトの名無しさん mailto:sega [2017/12/07(木) 10:28:22.13 ID:OnTOXu6z.net]
ファイルに書くときに、closeをせず明示的にフラッシュしたいんだけど
どうしたらいいの?

selectやautoflushは明示的ではないのでできれば使いたくない

942 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 10:57:31.26 ID:ULPWPGO9.net]
>>910
perldoc.jp/docs/perl/perlfaq5.pod#How32do32I32flush47unbuffer32an32output32filehandle63-32Why32must32I32do32this63
> IO::Handle オブジェクトには flush メソッドもあります。

#!/usr/bin/perl -w
use strict;
for (1..10) {
  print '.';
  sleep 2;
  STDOUT->flush;
}
print "!\n";

943 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 21:57:47.00 ID:PAyaH1Yv.net]
=~ 正規表現で中身を置換ができる事は理解できたんですが、
中身を入れ替えたいん

944 名前:カゃなく別の変数に入れたいときはどう書けばいいんでしょうか?

現在の自分の知識だと、例えば引数にとった文字列を置換してある変数に入れるとき
$_ = $ARGV[0];
$_ =~ s/mukimuki/mukemuke/;
$hoge = $_;
こんな風に無駄に $_ を経由した書き方になってしまいます。
ほかの言語風に言うと
$hoge = $ARGV[0].replaceWith(s/mukimuki/mukemuke/);
こんな感じで書きたいのですが。
[]
[ここ壊れてます]

945 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 22:06:02.40 ID:Vj82fll/.net]
($hoge = $ARGV[0]) =~ s/mukimuki/mukemuke/;
こう書くのがセオリーかな

946 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 22:37:33.36 ID:3f/g1GW0.net]
>>912
Perl 5.14.0 以降なら /r も使える
perldoc.jp/docs/perl/5.14.0/perl5140delta.pod#Non-destructive32substitution

947 名前:902 [2017/12/27(水) 03:38:54.44 ID:885vGvc2.net]
>>913-914
的確なご回答ありがとうございます。
試してみます。

948 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 15:34:07.71 ID:yY2jVcTO.net]
perlスクリプトの稼働率は今どれくらいなんだろうか?

PHP流行から、徐々にフェードアウトしてるし
PHPオワコン説が流れだした頃から、perl6が登場したけど
存在感がないんだよなー

949 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 19:01:25.94 ID:Rj9CQ2gH.net]
DeNAとかmixiとかがPerIだけど、置き換えが進むだろうし
新規でメインスクリプトでってのはもうなかなか無いだろうね

950 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 19:28:49.86 ID:tmtXLaBC.net]
ちょっと何かするときはperl使うよ。慣れてるので何も見ずに書けるから。
phpがなぜ出てくるのかわからん。使ったことないけどあれwebアプリ用でしょ



951 名前:デフォルトの名無しさん [2017/12/27(水) 19:55:51.39 ID:bfruSbpL.net]
ま、しかし、PerlはWebでしか使われてないわけではないからな。

952 名前:デフォルトの名無しさん [2017/12/27(水) 19:56:46.60 ID:bfruSbpL.net]
>>918
多分Webプログラムでの事しか思い浮かばなかったのだろう。

953 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 23:26:51.61 ID:+qI9wAl8.net]
素人に毛が生えたレベルの低スキル層でも実用的なwebアプリ作れる点でPHPは凄いよ。
フレームワークの種類も情報量も多いし。
CLIも作りやすくなってる。一からCLIアプリ作るときにPHP使う優位性は無いけど
webアプリに付随するものとかなら十分。

954 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 00:19:43.19 ID:O5Tikz8c.net]
フォーマット変換とかテキスト一括処理系は、perlでなれるとどれもしっくりこないんだよなぁ。
shを補完する感じで使ってる最近は。

cとセットで使いたくなったらpython?を勉強するかもしれない。

955 名前:ゆっきー mailto:sage [2017/12/28(木) 03:17:44.94 ID:NczIEmFQ.net]
10年ぐらい前の入門書で、カンマとドットを間違えて
人工衛星が明後日の方向に飛んで言ったとか何とか、小中学生ぐらいの時に読んだ記憶が有る。

956 名前:デフォルトの名無しさん [2017/12/28(木) 09:29:38.01 ID:wX0EFIYP.net]
そういやそんなことあったなあ。

957 名前:デフォルトの名無しさん [2017/12/28(木) 18:55:35.20 ID:Er3In3fn.net]
こんなのあったのな。知らなかったよ。
https://qiita.com/AnnPin/items/5f868f0c7cb5d1af306b

958 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 19:24:59.40 ID:Ur1ocpFu.net]
粗太陽センサーと精太陽センサーの取得先を取り違える

959 名前:デフォルトの名無しさん [2017/12/28(木) 20:38:10.17 ID:9xNc6XZe.net]
【IS自爆テロ】「死んだら天国へ行ける」 <九条は必要> 「死んだら靖国に祀られる」【神風特攻隊】
https://rosie.5ch.net/test/read.cgi/liveplus/1514253929/l50
【東海アマ】安倍晋三はどんな殺され方 <祖父の代りに絞首刑> 公約反故は自殺に繋がる【世界教師】
rosie.5ch.net/test/read.cgi/liveplus/1514425832/l50

960 名前:デフォルトの名無しさん [2017/12/31(日) 12:51:33.73 ID:6G2PkezB.net]
>>923
それ、打ち上げ延期



961 名前:デフォルトの名無しさん [2018/01/01(月) 05:59:15.42 ID:4wMbPbHX.net]
>>928
あ、それで済んだの?そうか、じゃあ都市伝説か。

962 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 12:14:32.50 ID:rcsYJFXY.net]
>>918
PHPが重宝されてるのはDB連携のPDOが便利すぎてハゲるから
PDO一つあれば、オラクル、ポスグレ、mysql、sqlサーバー、DB2、SQLITEなんでも
同じ記述で接続できるからな

ただ、関数定義に一貫性がない、変数スコープのグローバル化が面倒、
型変換で楽しいバグが発生するなど

素人向けと思って甘く見ると大火傷する諸刃の剣

963 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 12:30:16.97 ID:zAUlE2YO.net]
手に馴染んだ道具として今後もperlを使うだろうな
rubyに持ち替えた方が使い勝手はいいんだけど、
そもそもrubyが無い環境が多いので使えなくては意味がない

964 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 18:55:01.09 ID:FPPCegVg.net]
perlの持ち替えならpythonがいいと思う。
特に最近のlinux系はpythonものが増加傾向だし。
でもまあ、perlあればokじゃね?というのが正直なところ

965 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 12:32:50.81 ID:Q+9WD3Xu.net]
今年の目標は、新たに言語を勉強することなんだが
Perl、Python、Rubyの違いとそれぞれのメリットを
教えてくだされ

966 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 12:41:01.44 ID:UbsIsL+c.net]
perl どこにでもある
python 人工知能に強い
ruby Railsが使える

967 名前:デフォルトの名無しさん [2018/01/02(火) 16:34:43.56 ID:pQ/3ped7.net]
>>930
DBはPerlでもDBIと各DB用のDBIモジュールがあれば同じようにアクセスできるよ。
てか、その辺は他の言語でもだいたい同じようにできないか?みんなJavaのJDBCの影響受けて接続部分で違いを吸収してなんとかしてるように思うんだが。

968 名前:デフォルトの名無しさん [2018/01/02(火) 16:36:32.56 ID:pQ/3ped7.net]
>>935訂正

> 各DB用のDBIモジュール

じゃなくて

各DB用のDBDモジュール

969 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 00:47:07.06 ID:0mS9Giqv.net]
>>935
なるほど、どこも似たような機能を実装してきてるわけか

970 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 01:45:39.60 ID:mxmMGWxl.net]
ORM使えば各DBのSQLの差異も気にせず使えるぜよ



971 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 20:21:48.88 ID:vVUVg3Hi.net]
Perl習得も今年の目標の一つなんだけど
Linuxの環境構築しておいた方がいい?

それともwin64でもサクサク動かせる?

972 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 11:48:53.39 ID:vxw86c0g.net]
windows環境でperlなんてまず使わないだろうし、linux環境構築したほうがいいんじゃない?shも覚えるし。。。

webページ作りたいならperlはやめとけ

973 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:26:44.77 ID:Eqt08FX4.net]
>>939
どうしてもっていうならWindowsでもいいとは思うがいまいち面倒かも知れない。
知っての通りファイルシステムやその他細かい点が色々違うから。

かといってわざわざ Linux 動く環境を作るのは面倒だという場合は
Windows Subsystem for Linux 使えばいい。これだと Kernel は
Linux のふりをして動く Windows になって、その他は Linux とほぼ同じだ。
Windows 内のファイルは /mnt/c/ にマウントされていて Windows 用の
コマンドも(全てではないと思うが)使える。

974 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:30:15.45 ID:Eqt08FX4.net]
参考
https://qiita.com/Aruneko/items/c79810b0b015bebf30bb

975 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:51:32.73 ID:M2GmV8ZJ.net]
要はダクトテープだから
それを必要とする環境で使うのが一番

日常的にいろんな作業をlinux上でしてるなら、きっといろいろ役立つ
そうでないなら用途が見つからない

976 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 21:49:12.83 ID:bZ/07R3T.net]
ありがとう、こっちの住民は親切で助かったよ
WSLはもっと調べて導入検討するわ

>>943
仕事でかなりLinuxは使ってるよ。特にVMは仕事で必須なんで
一からセッティングしてる

どうしても起動系とかハード周りになると
Perlの知識ないときつい部分が出てきたんで

977 名前:デフォルトの名無しさん [2018/01/05(金) 19:25:38.46 ID:T2NhU/kF.net]
WSLは結構便利だと思うよ。何せWindows側のコマンド動くし、起動時にWindows側のPATHを /mnt/c 以下のディレクトリとして引き継いでくれるし。
前にKotlinをインストールした時はWindows側で C:\kotlinc 以下にインストールしてその下の bin に PATH 通しておいたら WSL の方でもそのままそれが使えた(JavaVMは別途インストールしたけどね)。
こんな感じで共有が当たり前のようにできる。

まあしかし今のところサーバー用のプログラムは完全には動かないだろうからサーバーとしての動きを期待するならやはり VirtuslBox とかで Linux 動かした方が良いだろうね。
または古いPC等に本当にインストールする。

978 名前:デフォルトの名無しさん [2018/01/05(金) 22:44:53.33 ID:2xeG2hRa.net]
ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて
flockだとロックかけちゃうのでだめです

979 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 23:02:38.22 ID:/B3nNmE2.net]
アトミックが保証されてるコマンドが必要とかそんなことになるような

980 名前:デフォルトの名無しさん [2018/01/06(土) 06:45:30.55 ID:MH4bKWED.net]
fcntl のマニュアルには、できるようなことが書かれてるけどどうか。
申し訳ないが実際に試してみるほど暇じゃないから、役に立つかどうかは自分で判断してほしい。



981 名前:デフォルトの名無しさん mailto:sage [2018/01/06(土) 11:11:20.45 ID:3YD8ke1c.net]
ロックしていないのに、ロックしていることを調べるとはこれ如何に。

まぁ、一般には、pidを別ファイルに保存しておいて占有するプロセスをはっきりさせるんじゃないかな〜

ハードリンクとkill -0あたりで調べてみるとよろし??

982 名前:デフォルトの名無しさん mailto:sage [2018/01/06(土) 11:27:28.32 ID:uhIItiyd.net]
セマフォの処理はてきとーに作ってもだいたい動くんだけど、
極まれにおかしくなる
完璧に作ろうと思うとなかなか大変
っていうか、OSが提供してなかったら無理

983 名前:デフォルトの名無しさん [2018/01/06(土) 23:54:48.69 ID:aO8vJyO+.net]
>>946
ちょっとぐらいロック掛かってもいいじゃん。
F_SETLKなら他がロックしてたら待たずに即エラーになるんだし。
エラーにならずにロックできたら他にロックしてるやつは居なかったってことだよ。

984 名前:デフォルトの名無しさん [2018/01/06(土) 23:56:53.89 ID:aO8vJyO+.net]
あ、ごめん。fcntl()でのロックのはなしじゃなかったか。じゃあfcntl()使って。
使えないOSの場合は何かテクニックがあると思うがその場合はOSを書いてくれないと誰も答えられないと思う。

985 名前:デフォルトの名無しさん mailto:sage [2018/01/07(日) 02:29:51.54 ID:6djc4wO2.net]
>>946
あっ、もしも、今使っているかどうかを調べたいならfuserコマンドかな?
windowsはしらぬ

986 名前:デフォルトの名無しさん [2018/01/07(日) 06:11:20.40 ID:VUVSKv67.net]
まあ落ち着け。まずは何のためにしたいのかということが重要だと思うよ。
ロックを試みることで他のプロセスの邪魔をしたくないというのも目的によっては理解できる。
目的によってはデータベースを使うのが最善かも。

987 名前:デフォルトの名無しさん mailto:sage [2018/01/07(日) 12:06:33.05 ID:esrWpXaw.net]
>>946
> ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて

不可能だよ

なぜなら、仮にそういう関数が有ったとしても
ロックされていると判断した1ナノ秒後には
ロックが解除されてるかもしれないから
もちろんその逆もありうる

つまり関数を実行している時点では正しかったかもしれないが
関数から結果の戻り値を取得した段階では
間違った結果になってるかもしれない

988 名前:デフォルトの名無しさん mailto:sage [2018/01/07(日) 13:16:21.35 ID:9kbWRuZM.net]
だから不可能では無いんだよな
その時点でそうだったことは判る
でも、その情報を元に何かをすることが出来ないので、
情報の使いみちが無い

989 名前:デフォルトの名無しさん [2018/01/07(日) 17:39:55.82 ID:xuWfGrV5.net]
>>953
fuserはオープンしてるプロセス出すだけなのでロックしてるかどうかはわからない。
lsofだとそこまで出る。

990 名前:デフォルトの名無しさん [2018/01/07(日) 17:43:16.42 ID:xuWfGrV5.net]
>>956
使い道は単に確認するだけならあると言えるんじゃないか?
lsofコマンドみたいな確認するだけのコマンドもあるしな。

まあでもほとんどない事は確かだな。やはり自分でロックして成功するかどうかで見た方が良い。



991 名前:938 [2018/01/07(日) 17:58:29.25 ID:VUVSKv67.net]
そのファイルに対して何かしたいとはどこにも書かれていないんだけどな。
彼が充分に説明しないのが悪いというなら確かにその通りだが。

992 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 02:39:29.72 ID:3kxjIyqg.net]
コマンドプロンプトを自動で開いてperl aaa.txtを自動起動させることはできませんか?
OSはwin7です
目的は複数のperlファイルを数秒で起動することです
日に何度かやるので、手間を省くために1個のperlプログラムを実行すれば10個のコマンドプロンプトが開かれてaaa1からaaa10まで全部実行、みたいにしたいです

993 名前:デフォルトの名無しさん [2018/01/08(月) 03:02:25.00 .net]
>>960
できるっちゃできるけど、その起動をPerlでやる必然性あるの?
バッチファイルでやればよくね?
perl_start.batに
start perl aaa1.txt
start perl aaa2.txt
みたいに書き連ねりゃいいだけじゃん

994 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 16:46:09.77 ID:QsqxlxVF.net]
そのbatファイルをタスク登録(ログオン時実行)とかにしとけば自動実行されるしね

995 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 18:09:00.53 ID:uJ83jHj4.net]
perl関係ねえ

996 名前:デフォルトの名無しさん [2018/01/23(火) 09:36:50.60 ID:vYqw+N7N.net]
open(ロック用ファイルハンドル,ロック用ファイル);
flock(ロック用ファイルハンドル,2);
unlink(ロック用ファイル);
close(ロック用ファイルハンドル);  #ロック解除

このようにロックを解除する前にロック用ファイルを削除するのは何か問題ありますか?
ロック解除したあとにロック用ファイルを削除するとロックに隙間ができるので

997 名前:デフォルトの名無しさん [2018/01/23(火) 10:33:50.77 ID:ytLWcXDj.net]
>>964
flock使うならファイル削除しなきゃいいんだよ。そうすれば隙間はできない。
ファイル削除したいならopenの時のモードで O_EXCL | O_CREAT も指定しておいてエラーが出るかどうかで判別する。
エラーなくオープンできたら成功で、必要な処理が終わったらファイルをクローズする。
ただしこの方法はUNIX系OS以外では通用するかどうかわからないのと、NFS越しのファイルでは使えないかも知れない。
NFS越しでも使えるファイルロックは多分fcntl()のF_SETLKとかだろうと思う(しかしこれもまたOSしだいだ)。

998 名前:デフォルトの名無しさん [2018/01/23(火) 10:34:51.22 ID:ytLWcXDj.net]
ごめん。訂正。

ファイルクローズするではなくて削除だ。

999 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 12:02:42.65 ID:N8Mjx+M1.net]
>>964
flockで相互排他する場合

1000 名前:普通はファイル削除しない
削除で隙間はできない。但し別プロセスがファイル作成するなら
隙間が生じるように感じるかもしれない
[]
[ここ壊れてます]



1001 名前:デフォルトの名無しさん [2018/01/23(火) 12:28:01.19 ID:f+jO8q2F.net]
>>967
感じるではなくロックとして機能しないよね?

1002 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 19:08:17.77 ID:N8Mjx+M1.net]
>>968
ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる
排他処理は同じファイルを使ってるもの同士なら出来る
例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る

1003 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 20:56:31.43 ID:wO1dM6nx.net]
>>969
3つ以上のプロセスで必ず破綻するように思うが。
いや2つでも2回目でダメになるか。

1004 名前:デフォルトの名無しさん [2018/01/23(火) 22:04:43.15 ID:ZqrAOfGF.net]
あ、ずっとオープンしっぱなしならその後削除されても大丈夫ってことか。
それはそうだな。なんか危うさを感じるが。

1005 名前:デフォルトの名無しさん mailto:sage [2018/01/30(火) 21:14:29.11 ID:SNmuV+Ws.net]
ヒアドキュメントをファイルに出力する時に、

print $out <<"EOC";
ならokで、
print $out << "EOC";
だと駄目なのは何故?

1006 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 01:11:29.08 ID:ajZ2gLGd.net]
>>972
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。

1007 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 01:46:30.10 ID:PKL4UNme.net]
<<の直後が空白文字だと空白文字自体が識別子とみなされる
と、とある本に書いてあった

1008 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 03:10:45.37 ID:ajZ2gLGd.net]
<<964
perldoc.jp/docs/perl/perlop.pod#Regexp32Quote-Like32Operators
> <<EOF
<略>
> 識別子がクォートされていない場合は、<< と識封ハ子の間に 空白を入れてはいけません。
> (もし空白を入れると、空識別子として扱われます; これは有効で、 最初の空行にマッチ
> するようになります。)

昔は
print <<;
document here.

print "foo";

みたいにできたけど、今これやると警告が出る。<<""; なら OK。

#!/usr/bin/perl -w
use strict;
sub E { print "\n6\n" }
open my $out, '>&STDOUT' or die $!;
print $out <<"";
1

print $out (<< 'E', "3\n", <<'');
2
E
4

print $out << 'E'; # Argument "E" isn't numeric in left bitshift (<<)
"5"; # Useless use of a constant ("5") in void context
E

1009 名前:デフォルトの名無しさん [2018/01/31(水) 09:25:45.73 ID:H6iQ2Lk/.net]
>>972
<<の直後のスペースの有無?
そりゃシェルスクリプトみたいな <<EOL のような何もクオートしない形式も許している都合でシェルの文法に合わせたからではないかな。

1010 名前:デフォルトの名無しさん [2018/01/31(水) 09:27:00.94 ID:H6iQ2Lk/.net]
あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。



1011 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 19:05:43.73 ID:vCtk0IVE.net]
スペース空けるの禁止ならそれでいいんだけど、
ファイルハンドラが無いならスペースがあってもokなのが納得行かない

1012 名前:デフォルトの名無しさん [2018/02/01(木) 07:25:10.05 ID:Msx4nr7P.net]
気持ちは分からなくもないが、変数の場合はしょうがない。>>973 に書かれてるとおりだ。

1013 名前:デフォルトの名無しさん [2018/02/01(木) 12:35:16.66 ID:Msx4nr7P.net]
誰もつっこまないが、
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに

1014 名前:マむというところで助かっている。 []
[ここ壊れてます]

1015 名前:デフォルトの名無しさん [2018/02/02(金) 07:43:01.24 .net]
ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源

1016 名前:愛知人 [2018/02/02(金) 12:10:04.50 .net]
Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。

1017 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 08:12:51.87 ID:hZgGNvq2.net]
Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば
無理なら、代わりに何を使えばいい?

1018 名前:デフォルトの名無しさん [2018/02/03(土) 09:38:14.14 ID:nCUOym6+.net]
rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。

1019 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 10:13:43.25 ID:hZgGNvq2.net]
Listはファイル名一覧しか渡してくれないんだよな

1020 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 10:20:52.21 ID:hZgGNvq2.net]
-alldata を指定すれば、->{size} で見えるのか

どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった



1021 名前:デフォルトの名無しさん [2018/02/03(土) 14:48:15.33 ID:nCUOym6+.net]
マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。

1022 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 11:13:30.15 ID:22FJuDW8.net]
出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな

1023 名前:デフォルトの名無しさん [2018/02/09(金) 18:18:02.60 ID:U+AwHosU.net]
>>981
KENT WEBの見にくさを見てから言ってくれ

1024 名前:デフォルトの名無しさん [2018/02/09(金) 20:07:25.83 ID:VqU2EMqO.net]
ヒヤー

1025 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 20:21:39.58 ID:67QUQBJT.net]
他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…

1026 名前:デフォルトの名無しさん [2018/02/09(金) 20:58:36.22 .net]
>>989
printはもっと読みにくいに決まってるだろ
テンプレートしかあり得ん

1027 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 21:23:05.06 ID:ukY4fsl4.net]
   here => <<~EOM
   インデント
   出来る
   EOM

これ出来るようになって昔書いたソースが結構綺麗になった

1028 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 11:06:08.61 ID:b5aNFBbA.net]
ソースにhereドキュメントが多量に含まれてる時点で
キレイじゃねーよw

1029 名前:デフォルトの名無しさん [2018/02/13(火) 21:01:03.94 .net]
それな

1030 名前:デフォルトの名無しさん [2018/02/13(火) 21:31:52.97 ID:RM6vxbUw.net]
ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。



1031 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 01:07:32.41 ID:eq6pqk6J.net]
全てのスクリプト言語には、ファイルを一つに結合する機能と
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね

1032 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 02:24:43.93 ID:kFW7p5Uz.net]
SQL使うときだなヒアドキュメントは
ORM嫌い

1033 名前:デフォルトの名無しさん [2018/02/14(水) 09:08:25.15 ID:1w/9kxzB.net]
ああ。そういやSQL文に使ったなあ。
長くなるのが普通だもんなあれって。

1034 名前:デフォルトの名無しさん [2018/02/14(水) 13:42:37.08 ID:eEfPvNoj.net]
$str = <<'EOF';
エスケープの必要性から解放されたい場合もあるんだよなあ。
これに相当することを C でやるには別ファイルに分けて Makefile で

str_escaped : str_raw
sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped

みたいにして C の方で

str[] =
#include "str_escaped"

とする必要がある。Perl は本当に便利だ。
EOF

1035 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 13:50:00.92 ID:L6K2VJP2.net]
Pealで正規表現なら、デミリタ変えるだけでいいじゃん
可読性下がるけど

$hoge =~ m!/!;!g;

みたいな

1036 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 19:56:29.61 ID:JCOq4GRt.net]
終わりを示す文字列にQEDを使う

1037 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 20:05:36.90 ID:eq6pqk6J.net]
それが厨二病

1038 名前:990 [2018/02/14(水) 22:39:20.53 ID:eEfPvNoj.net]
>>1001
何を言いたいのかさっぱり解らないが、ひょっとして >>1000 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>1000 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>1000 に対してじゃなかったのならごめんね。自意識過剰だったね。

1039 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 09:02:00.83 ID:8SUVFt/S.net]
> 自意識過剰だったね。

そのとおりだろうなw

1040 名前:デフォルトの名無しさん [2018/02/15(木) 23:40:07.21 .net]
Perlコードでもレスでも変わらない真実

ぎっしり長文書くやつは無能



1041 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 23:41:00.25 ID:8SUVFt/S.net]
短文なら有能!俺とか!

1042 名前:デフォルトの名無しさん [2018/02/16(金) 10:21:33.25 ID:OW1usLwi.net]
俺も俺も

1043 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 18:54:42.22 ID:ZDCA61/e.net]
die;

1044 名前:デフォルトの名無しさん [2018/02/16(金) 20:51:22.93 ID:YSXjevvC.net]
ひでぶ

1045 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒

1046 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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