2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

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

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

1 :デフォルトの名無しさん:2014/11/30(日) 05:11:36.58 ID:F+8+iHjq.net
ここは長い間使われ今も有名企業で多数使用実績のある
Perlに関する質問スレです。

最新 Perl 5.20.1 2014年9月22日リリース
http://www.perl.org/

最新版のPerlのダウンロード
http://www.perl.org/get.html

Perlに関することならなんでも質問してください。
以前はCGI関係はWEBプログラミング板とのことでしたが、
厳密に分けられることでもないので区別するのをやめようと思います。


【キチガイ荒らし警告】荒らしはスルーが一番です。
近頃キチガイが出没しています。普通の質問や回答に対して
頭が悪いなどという嫌がらせレスを短時間に数回行うのが特徴です。
またこのキチガイがいう「向こう」は存在しませんので
相手にせず、スルーして質問、回答をしてください。


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


▼前スレ
Perlについての質問箱 63箱目
http://peace.2ch.net/test/read.cgi/tech/1392906213/

リンク集は >>3-4
Perl 日本語処理の基礎の基礎 >>5

2 :デフォルトの名無しさん:2014/11/30(日) 05:12:30.77 ID:F+8+iHjq.net
Perlの歴史
http://ja.wikipedia.org/wiki/Perl#.E6.AD.B4.E5.8F.B2

1.0 1987年12月18日 誕生
2.0 1988年6月05日 正規表現ライブラリ導入
3.0 1989年10月18日 バイナリデータ対応
4.0 1991年3月21日 O'Reilly&Associates, Inc. Programming perl 発売記念
5.0 1994年10月17日 リファレンスおよびオブジェクト指向に対応。
5.5.0 1998年7月22日 正規表現の拡張、JPerl がサポートする最後のバージョン
5.6.0 2000年5月22日 our文やウィークリファレンス、warningsプラグマの導入など。Unicode のサポートを開始
5.8.0 2002年7月18日 Encode が標準ライブラリに加えられ、Unicodeおよび Shift_JIS などの様々な文字エンコーディングに正式に対応した
5.10.0 2007年12月18日 静的変数を宣言する state 文や、switch文に相当する given 文、say などの導入
5.12.0 2010年4月13日 演算子(ヤダヤダ演算子)、後置の when 修飾子などの導入
5.14.0 2011年5月14日 Unicode 6.0 にほぼ完全に対応。push、pop、unshift、shift、each、keys、values などがリファレンス受け取れるようになった
5.16.0 2012年5月20日 Unicode 6.1 対応、デバッガ、CORE名前空間、XSインターフェイスなどの機能強化
5.18.0 2013年5月18日 レキシカルサブルーチンの追加、Unicode 6.2 への対応
5.20.0 2014年5月27日 スライス表記の強化、subキーワードのprototype属性サポート、64ビットプラットフォーム対応、Unicode 6.3 対応

3 :デフォルトの名無しさん:2014/11/30(日) 05:13:18.39 ID:F+8+iHjq.net
【本】
初めてのPerl 第6版(リャマ)[2012年07月 発行]
http://www.oreilly.co.jp/books/9784873115672/

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

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

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

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

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

【オンラインマニュアル】
最新のドキュメント: http://search.cpan.org/dist/perl/
perldoc.jp: http://perldoc.jp/
perldoc.perl.org: http://perldoc.perl.org/

4 :デフォルトの名無しさん:2014/11/30(日) 05:14:10.58 ID:F+8+iHjq.net
[少し古めの良書】

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

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

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

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

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

5 :デフォルトの名無しさん:2014/11/30(日) 05:15:04.87 ID:F+8+iHjq.net
【日本語、Unicode関連】

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

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

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

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

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

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

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

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

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

6 :デフォルトの名無しさん:2014/11/30(日) 05:16:03.39 ID:F+8+iHjq.net
【Windows向け情報】

※PerlはLinuxで使うことをおすすめします。
使用実績はLinuxがほとんどでしょうし、Windowsの場合は
Windows特有の不具合が発生したりします。

今は仮想マシンでWindowsを使っていてもその上で
無料でLinuxを使うことが可能です。

Windowsでの利用は大変なだけでメリットがありません。

↓それでもWindowsを使いたい場合人向け

# [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 :デフォルトの名無しさん:2014/11/30(日) 05:17:30.41 ID:frlGdpGZ.net
以上、テンプレ終了です。



質問をどうぞ

8 :デフォルトの名無しさん:2014/11/30(日) 10:49:51.30 ID:XYqV7W5h.net
Windows上で手軽にPerlを使いたい場合は以下のバイナリがあります

【ActivePerl Community Edition】
http://www.activestate.com/activeperl/downloads
直近2つのバージョンしか公開されておらず、再配布もできないので個人的な
学習用に使用

【Strawberry Perl】
http://strawberryperl.com/
Larry Wallも使っていて、長期的なプロダクトでも安心して利用できる

9 :デフォルトの名無しさん:2014/12/04(木) 02:19:44.71 ID:TDiayB+/.net
Windows上のPerlの質問も分かる範囲で回答します。関連するソフトがあるならば
その名前とバージョンを書いてください。また説明に使う用語は可能な限り調べて
正しい用語を使ってください。質問文の用語がでたらめな場合、正しい回答が得
られず、お互いに無駄になってしまいます。
アンチPerlのレスは無視します。

10 :デフォルトの名無しさん:2014/12/05(金) 13:23:17.10 ID:o40hdMhH.net
文字コードは「UTF-8」です。

aa/bb/cc → aa/bb
としたいので(切り取り)
s/\/\w+$//;
とすると  aa/bb と切り取りできます。

しかし、aa/bb/cc() だと文字列に記号が入ると
当然切り取りできなくなります

s/\/.+$//;のようにすると、全部切り取れます。

記号入りの
aa/bb/cc() → aa/bb にするにはどうすればよいでしょうか?

11 :デフォルトの名無しさん:2014/12/05(金) 18:36:13.30 ID:wsf0zRCt.net
s/\/[^/]+$//;

12 :デフォルトの名無しさん:2014/12/05(金) 18:37:00.37 ID:wsf0zRCt.net
s|/[^/]+$||;

13 :デフォルトの名無しさん:2014/12/06(土) 15:23:32.16 ID:Oq8ILO6C.net
s{^(.*/).*}{$1};
ユニコードで \w は使いものにならなくなったと申し添えておく

14 :デフォルトの名無しさん:2014/12/06(土) 17:18:16.00 ID:dYckGB2S.net
遅レスすんなら、案件に従えや、
イージーミスだけに、かっこ悪いぞ

15 :デフォルトの名無しさん:2014/12/06(土) 18:34:56.22 ID:GPtOp1dg.net
前スレ埋めてから使ってくれ。

重複スレ:
Perlについての質問箱 63箱目
http://peace.2ch.net/test/read.cgi/tech/1392906213/

本スレ:
Perlについての質問箱 63箱目
http://peace.2ch.net/test/read.cgi/tech/1392820583/

16 :10:2014/12/07(日) 11:54:39.44 ID:CEiqcgxp.net
split使っちゃいました・・・・

配列 = SPLIT(”¥/”) "aa/bb/cc/dd()”;

作業用文字列

ループ(配列 [配列個数-2] ){
 作業用文字列 .”$_” . ”¥/”;


作業用文字列 =^ s/¥/$//g #最後の/を消す

な感じで・・・・

17 :デフォルトの名無しさん:2014/12/07(日) 13:38:36.08 ID:EVS/iDzZ.net
作業用文字列つかうとかありえねーw

18 :デフォルトの名無しさん:2014/12/12(金) 00:56:09.11 ID:/vyLMUki.net
モジュールが使える環境に限定されちゃうけど
use File::Basename;
print File::Basename::dirname('aa/bb/cc/dd()');
# s|/[^/]*$||; デモイイヨ!

19 :デフォルトの名無しさん:2015/01/03(土) 03:35:55.08 ID:z4sjuxFo.net
Perl の TMTOWTDI が好きだわ。

20 :デフォルトの名無しさん:2015/01/03(土) 10:11:29.32 ID:9yXYqvm6.net
ゴミが好きってどういうこと?

21 :デフォルトの名無しさん:2015/01/03(土) 11:04:10.67 ID:Ukcf8MFp.net
そりゃ使うひと次第でゴミにもなれば有用なツールにもなるわけだけど
T-SQLでどんなアプリケーション書いてるのかそろそろ教えてよ

22 :デフォルトの名無しさん:2015/01/03(土) 11:09:33.00 ID:9yXYqvm6.net
T-SQLなんて使ってないよ

23 :デフォルトの名無しさん:2015/01/03(土) 13:33:21.01 ID:b/9bEf+N.net
もはやcgiプログラムってperlじゃないの??

24 :デフォルトの名無しさん:2015/01/04(日) 09:37:16.26 ID:w9Cj0tkO.net
PerlじゃないCGIプログラム見たことないけどな
なんか、CGI自体下火とか抜かしてたやつもどっかで見かけたが

25 :デフォルトの名無しさん:2015/01/04(日) 09:58:06.99 ID:JDtmWI5y.net
そりゃぁ下火だろう。CGI.pmがCOREから落ちるんだから。
PythonやC++で書かれたCGIは未だに存在する。

26 :デフォルトの名無しさん:2015/01/04(日) 10:28:22.33 ID:d5IQgmaJ.net
>>23-24
今はPSGIを使うんよ。

http://gihyo.jp/dev/serial/01/perl-hackers-hub/000101

27 :デフォルトの名無しさん:2015/01/05(月) 09:23:06.57 ID:NRlwke4r.net
「PerlじゃないCGIプログラム見たことないけどな」という文字列が通過するPerlじゃないCGIプログラムがあるよね?w

28 :デフォルトの名無しさん:2015/01/05(月) 20:43:23.81 ID:KQNQflUf.net
>>27
2ちゃんってPerlで書かれてないの?

29 :デフォルトの名無しさん:2015/01/05(月) 20:48:10.26 ID:dcVDuqIP.net
>>28
Perl+C+JSじゃないっけか

30 :デフォルトの名無しさん:2015/01/05(月) 22:29:53.84 ID:HnMh9gyS.net
俺はファイルサーバーの複数台のディスク容量を調べるために
シェルスクリプトでCGIプログラム書いているよ。

Windows 7のガジェット(HTML+CSS+JS)から
アクセスすると残り容量をJSONPで返す。
そういうシェルスクリプト

31 :デフォルトの名無しさん:2015/01/06(火) 02:51:10.39 ID:gxyFRR6U.net
@rem そういうバッチファイルのサンプル
echo Content-Type: text/plain
echo.
echo.
dir c:

32 :デフォルトの名無しさん:2015/01/13(火) 02:35:51.69 ID:WJdHMFeU.net
Ipアドレスとホスト名を表示させ、テキストドキュメントに記録したいのですが
#!/usr/bin/perl
use strict;
use warnings;
my $ip = $ENV{‘REMOTE_ADDR’};
my $host = gethostbyaddr(pack(“C4″, split(‘\.’, $ip)), 2) || $ip;
print “Content-type: text/html\n”;
print “\n”;
print “$host”;
print “\n”;
print “$ip”;
my $file = ‘output.txt';
#書き込みモードでファイルオープン
my $fh;
open ($fh,”>”,”$file”);
or die “Cannot open $file: $!”;
#ファイルへかきこみ
print $fh “$host\n”;
print $fh “$ip\n”;
close $fh;
この様にしてもエラーになってしまいます。どこに問題があるのでしょうか?

33 :デフォルトの名無しさん:2015/01/13(火) 02:41:58.98 ID:fYHyjqVd.net
エラーメッセージに書いてある所に決まってるだろ

34 :デフォルトの名無しさん:2015/01/13(火) 04:54:39.25 ID:pEsQ+pp8.net
>my $file = ‘output.txt';
ここのどちらかの、クォーテーションが変?

35 :デフォルトの名無しさん:2015/01/13(火) 10:16:27.46 ID:Z0LRVUzM.net
ほぼ全部おかしい
ダブル "
シングル '
>>32のダブル “
>>32のシングル ‘

36 :デフォルトの名無しさん:2015/01/13(火) 19:44:14.94 ID:DywLXJJx.net
$str = 'abc';
$str =~ s/ab(.)/$1$1/;
print $str;

これだと、
cc
と表示されるのに、

$str = 'abc';
$rep = '$1$1';
$str =~ s/ab(.)/$rep/;
print $str;

こうすると、
$1$1
になってしまう

うまく動くオプションとかある?

37 :デフォルトの名無しさん:2015/01/14(水) 22:01:41.11 ID:bmsBHzdL.net
$rep = q("$1$1");
$str =~ s/ab(.)/$rep/ee ;

これが何をしてるか理解できないなら eval 使えばいいと思うよ。
eval したら $@ を確認しようね。
もっと柔軟にしたいならこんな感じか。

$func = sub { "$1$1" };
$str = "abc";
$str =~ s/ab(.)/ $func->() /e ;

38 :デフォルトの名無しさん:2015/01/15(木) 01:48:30.87 ID:KHeQBVOf.net
>>32
一般的にどの言語でも、ソースコードを書くときは、
コメント以外では、全角を使ってはいけない。
半角英数字記号のみを使う

" 半角のダブルクォーテーション
' 半角のシングルクォーテーション

>>36
>$str =~ s/ab(.)/$1$1/;

>$rep = '$1$1';
>$str =~ s/ab(.)/$rep/;

Perlをよく知らないけど、
たぶん上は、正規表現オブジェクトか何かで、
下は文字列になるのでは?

39 :デフォルトの名無しさん:2015/01/15(木) 02:22:21.67 ID:5irEx8LZ.net
>>38
文字列リテラルもあるでよ

40 :デフォルトの名無しさん:2015/01/15(木) 06:23:15.10 ID:l/H+BQr/.net
>>36
$str =~ s/ab(.)/qq{"$rep"}/ee;

置換パターンが大量にないならパターンに応じて関数を定義するのがお勧め。

41 :デフォルトの名無しさん:2015/01/15(木) 18:01:38.86 ID:BMxAFz1ca
>>36
37 で重要なことを書き忘れたよ。
$str =~ s/ab(.)/ $func->() /e ;
が最も安全だよ。
$str =~ s/ab(.)/$rep/ee ;
は本質的には eval だから何でもできる。
完全に安全だと確信できないなら、大事なファイルを破壊したり
決して見られてはならない物を全世界に公開するかもしれない。
そういう危険を避けたいなら Safe モジュールを使ってみてほしい。

42 :デフォルトの名無しさん:2015/01/17(土) 08:22:17.87 ID:ZvXMCZRd.net
eeは試したけど、それだけじゃダメだったのか
q()が鍵なのかな

43 :デフォルトの名無しさん:2015/01/18(日) 01:03:44.79 ID:WOJrRr7a.net
perlを覚えるのに良いサイト教えて下さいm(_ _)m

44 :デフォルトの名無しさん:2015/01/18(日) 02:04:23.51 ID:aSyqWTeb.net
ttp://perldoc.jp/ でもサイトだと新旧の情報が混在してて、初心者は混乱
しそうなので俺的には「初めてのPerl」がおすすめ
Perl5のリファレンスを使い始める前にPerl4部分をしっかり覚えて欲しい。

45 :デフォルトの名無しさん:2015/01/18(日) 02:38:31.68 ID:1HDk1G1l.net
Perl4? あっはっは。ネタなのか馬鹿かなのか
初心者を惑わせる罠のつもりなんだろうなw

Perl 5.0のリリースは1994年10月17日
もうこれだけで4を勉強する価値なんて無いってわかるでしょ

今となってはバッドノウハウでしかないものの塊で
Perl4なんか勉強したらマイナスになるだけだよ。時間の無駄
今となってはゴミ。その知識は脳の貴重な記憶容量の無駄に消費するだけ

46 :デフォルトの名無しさん:2015/01/18(日) 18:20:13.75 ID:A5yzNlpG.net
基本は変わらんよ

47 :デフォルトの名無しさん:2015/01/18(日) 18:55:01.12 ID:H4Qq5dvf.net
Perl4とじゃ基本からして違う。

モジュールはuseで読むのが大半。
use strictだけではなくuse warnings使うのが常識
ローカル変数で常に使うmy。
リファレンス必須だし、リファレンス前提のオブジェクト指向も常識
使う文字コードはデフォがUnicode。そしてEncodeモジュール

これらを使う一般的なコードはPerl4では書けない

48 :デフォルトの名無しさん:2015/01/18(日) 19:22:24.91 ID:A5yzNlpG.net
そういう枝葉じゃなくて、Perlでプログラムの組むときの基本的なところは変わらん
配列とか連想配列とかダイアモンド演算子とか制御文とか

49 :デフォルトの名無しさん:2015/01/18(日) 19:54:02.15 ID:9c4B87qA.net
シェークスピアを学べば現代英語の理解に役立つ
紫式部読めば、現国のテストに役立つ

くらいの主張だな

50 :デフォルトの名無しさん:2015/01/18(日) 20:13:55.20 ID:fm6KJFw0.net
>>48
4と5で変わらないならばこそ、
5でいいだろ。

4と5があるなかで、あえて4を使う理由がない。
4でできることは5でもできる。

何言ってんだ?

51 :デフォルトの名無しさん:2015/01/18(日) 20:17:50.73 ID:fm6KJFw0.net
>>48
5でしかできない。ローカル変数(my)
オブジェクト指向(package)

これらはどんな言語でも常識とされる
プログラムを組むときの基本中の基本だが、
これがPerl4ではできない。

プログラムの基本を学ぶことに対して
明らかなデメリットも有る。

52 :デフォルトの名無しさん:2015/01/18(日) 20:31:22.18 ID:evwOrnCS.net
myは4にもあるだろ
全部グローバル変数なのは大昔のBASICの頃の話だ

53 :デフォルトの名無しさん:2015/01/18(日) 20:34:05.41 ID:/Es8fzpE.net
使えたっけ?
少なくとも5が出てしばらくは
4にそんな機能は無かったような
localならあったけど

54 :デフォルトの名無しさん:2015/01/18(日) 20:45:21.30 ID:fm6KJFw0.net
ないよw そんな基本的なことも知らずに
Perl4が〜とか言ってるわけさ。
な? 害悪でしか無いだろ?こいつの存在が。

55 :デフォルトの名無しさん:2015/01/18(日) 20:48:05.00 ID:fm6KJFw0.net
Perl4ではプログラムの基本すらも出来ないから
投げ捨てたほうがいいよwww

56 :デフォルトの名無しさん:2015/01/18(日) 21:24:53.15 ID:LIlFSWHF.net
実用的なところでせいぜいperl5.8系からだろう。
さすがにperl4はないわ。

57 :デフォルトの名無しさん:2015/01/18(日) 22:23:58.23 ID:y7kj+MYX.net
「初めてのPerl」がおすすめっていってるんだから
文字通りPerl4を学べっていいたかったわけじゃないんでしょう
最新版の「初めてのPerl」はPerl5前提ですよね?
たぶん「続・初めてのPerl」で書かれている内容に進む前に
「初めてのPerl」の内容をちゃんと理解して使いこなせるように
しといてと言いたかったんでしょう

58 :デフォルトの名無しさん:2015/01/18(日) 22:50:12.17 ID:9c4B87qA.net
んなわけねーじゃん

59 :デフォルトの名無しさん:2015/01/19(月) 01:15:03.69 ID:3g+53XGQ.net
普通にPerl5を勉強すればいいわけで、
Perl4という名前を出すこと自体おかしい。

60 :デフォルトの名無しさん:2015/01/19(月) 03:37:07.91 ID:xfteSUpK.net
そもそもperl4のドキュメント自体すでに見当たらんのだが

61 :デフォルトの名無しさん:2015/01/19(月) 08:07:11.33 ID:4O8sQ6M+.net
そんなのないよ〜
ありえない

62 :デフォルトの名無しさん:2015/01/19(月) 20:13:43.17 ID:KRgt1oEf.net
赤ラクダ読んでる最中ですが何か

63 :デフォルトの名無しさん:2015/01/20(火) 02:01:11.38 ID:qh3uAgM0.net
生きている間に読み終われよ。
perl5は…来世で学べばいいよ。
ゆっくりやってくれたまえ。

64 :デフォルトの名無しさん:2015/01/20(火) 05:59:29.04 ID:p5BhMaBc.net
おまいらが仕様と実装の区別が付かないのがよくわかった

65 :デフォルトの名無しさん:2015/01/20(火) 06:16:18.54 ID:B1RIAFel.net
ここ読んで、仕様でどれだけの罠があったか、
学んでからレスれな。
触った事も無いくせに perl4とかウゼーよ、釣り師

http://perldoc.jp/docs/perl/5.14.1/perltrap.pod

66 :デフォルトの名無しさん:2015/01/20(火) 06:19:03.40 ID:YBhsuE8k.net
>>64
うん。仕様はPerl。実装はPerl4。
Perl4はPerlの仕様の一部しか実装されてない
myやpackageなどの超基本が実装されてない。
だからPerl5を使えって話だよね。

67 :デフォルトの名無しさん:2015/01/20(火) 06:24:28.69 ID:B1RIAFel.net
言語仕様とインタプリタの話なら、
言語仕様も、同名なだけで変更されただろ、

68 :デフォルトの名無しさん:2015/01/20(火) 06:39:05.71 ID:B1RIAFel.net
何が「仕様と実装」だよw
本人か釣り師か知らんが、前スレでは、
同様のperl4に言及する馬鹿は、perl5.005とperl5.5の
区別が付いてなかったぜ

69 :デフォルトの名無しさん:2015/01/20(火) 06:44:29.79 ID:tNNew0EG.net
あれは酷かったな

70 :デフォルトの名無しさん:2015/01/20(火) 20:16:29.34 ID:LXStG+t6.net
use strict;
use Encode;

71 :デフォルトの名無しさん:2015/01/20(火) 21:07:30.40 ID:THOt6njy.net
>>70
use warningsしろや

72 :デフォルトの名無しさん:2015/01/20(火) 22:17:59.43 ID:C0ccJEs9.net
strictはもう古い

73 :デフォルトの名無しさん:2015/01/20(火) 23:07:31.58 ID:p5BhMaBc.net
おれはPerl4を使え、とは言っていないんだがな。なぜそう読めるのか?あほなのか

74 :デフォルトの名無しさん:2015/01/21(水) 01:14:29.44 ID:7CfJSlyJ.net
みんな2月16日のEffective Perl 第2版買おうよ
Perlがまだまだ生きてることを知らしめれば
Perl本出版事情も改善するかもしれない

75 :デフォルトの名無しさん:2015/01/21(水) 02:33:54.19 ID:TKQcMheJ.net
改善ってモダンPerl入門増補改訂版(仮)のこと?
刊行日: 2014年1月予定

76 :デフォルトの名無しさん:2015/01/21(水) 08:24:18.70 ID:iPVXK3uG.net
正直Perl4を今からってのは、保守以外にはありえんだろう
そもそも「敢えて入れないと」Perl4自体が無いのが基本だし…

77 :デフォルトの名無しさん:2015/01/21(水) 21:42:02.23 ID:n02BC3Ph.net
まあ、
use strict;
use warnings;
は、開発後には捨てるものだけどな

78 :デフォルトの名無しさん:2015/01/21(水) 21:46:25.57 ID:mXw559ef.net
ほら、また来たよ。ネタw
Perl4ネタじゃ満足できなかったんだろうねw

79 :デフォルトの名無しさん:2015/01/22(木) 23:11:08.43 ID:CypOiZre.net
海外の本だと日本語周りの情報はあんまり期待できないかもなあ
Encodeのことちゃんと書いた紙の本ってないのかな?特に罠のところとか詳しい
解説が載ってるのが欲しいんだけど

80 :デフォルトの名無しさん:2015/01/23(金) 00:03:47.03 ID:6Fnjy6es.net
asciiと同じ手抜きをしようとするからはまるのであって、
ちゃんと文字コードとして扱えば何の問題もない

81 :デフォルトの名無しさん:2015/01/23(金) 00:07:05.62 ID:eqfcLCWo.net
>>79
一般的にはEncode::EUCJPMSを使った方がいいというやつだね。
Encodeモジュールは文字コードを正しく扱うがゆえに
現実に合わせた変換を行ってくれない。

確かにUnicodeの仕様はそのとおりだけど(間違った実装の)Windowsの
せいで、その変換ではだめなんだってことがある。
そして一番現実的なのはNKFだったりする。

所で実はEncodeモジュールを拡張するのは簡単で、
新しいエンコーディング名に対応するのは
モジュール一個作って、encodeとdecodeメソッドを用意するだけでいい。
なので、nkf-eucjpとかnkf-shiftisとかいうエンコーディング名を作ってるよ。

日本語以外にも対応する必要があったので、Encodeモジュールの仕組み自体は使う
だけど文字コード変換自体は内部でnkfを使っている。

82 :デフォルトの名無しさん:2015/01/23(金) 00:31:01.76 ID:bLSRjsAV.net
>(間違った実装の)Windowsのせいで、その変換ではだめなんだってことがある。
例えば?

83 :デフォルトの名無しさん:2015/01/23(金) 00:38:57.01 ID:DAkROUe3.net
>>82
どうぞよんでね。

Encode - 規格のバグまでは直せません
http://blog.livedoor.jp/dankogai/archives/50488765.html

84 :デフォルトの名無しさん:2015/01/23(金) 00:44:55.12 ID:bLSRjsAV.net
>>83
なるほど
辛い話しだね

85 :デフォルトの名無しさん:2015/01/23(金) 08:20:15.51 ID:6Fnjy6es.net
変なティルダはよく見るな

86 :デフォルトの名無しさん:2015/01/23(金) 23:44:32.96 ID:PLrM2j7r.net
日本語以外に何語に対応したの?テーブルは自分でこさえたの?PKF使ったの?

87 :デフォルトの名無しさん:2015/01/23(金) 23:51:58.94 ID:8Ft3ozd1.net
>>86
基本はEncodeモジュールが対応しているものだよ。
それ+日本語は特別に拡張対応w

メールソフトみたいなものだと思ってくれればいい。
送信者はいろんな言語を送ってくるわけで

88 :デフォルトの名無しさん:2015/01/24(土) 00:14:01.74 ID:8Lo2ixHg.net
いろんな言語って、自分で読める言語なの?読めない言語だとちゃんとできてる
のか不安じゃない?おれは不安だな

89 :デフォルトの名無しさん:2015/01/24(土) 01:47:16.70 ID:H0FHHZ5/.net
>>88
そんなもの翻訳ツール使えばわかることだよ。
日本語のように波ダッシュとかある種の文字だけ
化けるなんてのには対応できてないだろうが概ね表示できればOK。
何か問題があったらその時報告でもくるだろ。

90 :デフォルトの名無しさん:2015/01/24(土) 12:49:13.24 ID:8Lo2ixHg.net
それで商品説明の日本語がおかしいのか?ときどきEUC⇔SJISを取り違えてるような
半角カナだらけで読めないのがあったり・・・

91 :デフォルトの名無しさん:2015/01/24(土) 14:20:27.39 ID:pFUl8Xhj.net
Unicode統一前の文字コードが
ややこしいのは日本くらいだろ。

ほかの言語なら変な文字化けとかは
あんまり心配いらんのでは。

92 :デフォルトの名無しさん:2015/01/24(土) 14:37:53.66 ID:3WuJ0aJV.net
>>90
日本語が(読めるけど)おかしいのは、翻訳の問題であって
文字コードの話とは関係ないだろ。

EUC⇔SJISを取り違えると、全く読めない文章になるわけで
所々化けるわけじゃないよ。

翻訳ソフトでそれなりの文章になれば
少なくとも大筋では正しく文字コードを扱ってるといえるだろう。

93 :デフォルトの名無しさん:2015/01/24(土) 23:54:07.25 ID:lCRanfvM.net
>>91
欧米は欧米で苦労してるよ。
国の数だけでもえらい多いのに、同じ字形のダイアクリティカルが
別々の符号化方式で実装されてるんだから。

94 :デフォルトの名無しさん:2015/01/25(日) 00:05:27.09 ID:WeB4tC0Z.net
>>93
そこからダイアクリティカルマークの統合が実施されて、その勢いでハンユニフィケーション。
欧米の文字は数字の仲間なんだろうけど、漢字は絵の仲間。最近、絵文字をサポートし始めて
ようやく漢字がどんなものなのか、C,J,K,Vの漢字をどうサポートすればよかったのか悟りつつ
あるようだ。

95 :デフォルトの名無しさん:2015/01/25(日) 07:49:47.55 ID:VXh7McAu.net
>>93
欧米は基本全部ISO-8859シリーズだと
思ってたが、違うの?

96 :デフォルトの名無しさん:2015/01/25(日) 12:57:56.23 ID:rE6cly2M.net
>>95
iso-8859シリーズじゃ我慢できないレベルで圧倒的に足りなかったんだと思うよ。
cp737とか見るとダメ文字使ってでもめいっぱい領域よこせ的な雰囲気がある。

そもそも8859以下のエンコーディングは全部別々だからその間では化けるし、日本語以上に自動判別なんて無理そう。
メールなんかでSMTPに流そうとすると8ビットクリーンにしなきゃいけないから結局MIMEの出番だし。

日本の都道府県が勝手に符号化方式を拡張してるイメージなのかな。
北海道が独自にアイヌ語表記用のひらがな追加してたらやっぱり混乱してたと思う。

97 :95:2015/01/25(日) 13:04:32.41 ID:rE6cly2M.net
あ、マルチバイトじゃないからダメ文字って言い方は間違ってるね。訂正するよ。

98 :デフォルトの名無しさん:2015/01/25(日) 13:13:32.17 ID:puUqp4ZN.net
中点(・)ってasciiに無いけど、英文とかに普通に出てくる
どうしてたんだろ

99 :デフォルトの名無しさん:2015/01/25(日) 13:49:48.08 ID:WeB4tC0Z.net
日本の文字は4バイト領域にJIS順で重複して掲載する。シフトJISをなくしてユニコード
だけにしたいなら、そういう方法になる。異体字セレクタとかは一般民は使うはずがない。

100 :デフォルトの名無しさん:2015/01/25(日) 14:47:05.84 ID:GYzk0joc.net
> 異体字セレクタとかは一般民は使うはずがない。
普通に使われてる。

正確には異体字セレクタではないが、
絵文字は異体字セレクタと同様の仕組みで
絵文字化している。

101 :デフォルトの名無しさん:2015/02/15(日) 22:15:31.88 ID:4RXg+5Yt.net
グローバル変数はourやuse vars qwを省略してつけなくても問題ないですか?

102 :デフォルトの名無しさん:2015/02/16(月) 10:07:10.87 ID:McaEaMoK.net
変数名にぱっくあげ名も含めてあげれば警告も無いよw

103 :デフォルトの名無しさん:2015/02/18(水) 00:30:45.39 ID:b4QEjz5u.net
お前が単純なスペルミスのバグを問題ないと考えてるのであれば問題ない。

104 :デフォルトの名無しさん:2015/02/22(日) 20:14:32.60 ID:jGeuUSRA.net
ファイルをロックする場合はflockでいいのですが
負荷のかかる処理を排他する場合の関数ってありますか?

例えば
ロック
データを30万行1行ずつ読み込み(高負荷)
ロック解除
というようにしたいんです

というか30万行でも高負荷といえるのしょうか?

105 :デフォルトの名無しさん:2015/02/22(日) 20:16:05.62 ID:jGeuUSRA.net
あ、読み込みだけじゃなく検索の処理もあります

つまり
ロック
30万行読み込み
検索
ロック解除
というようにしたいんです

106 :デフォルトの名無しさん:2015/02/22(日) 20:31:03.92 ID:UZqTxAid.net
>>104
そういう時はデータベースを使う。

知らないからって甘えないように
データベースを勉強すればいいだけ。

みんなそれで解決している典型的な問題。

107 :デフォルトの名無しさん:2015/02/22(日) 22:03:26.65 ID:jGeuUSRA.net
データベース使うほどじゃないけど解決しました
mkdirを使ってロックディレクトリが残っていれば処理をしないというようにすれば
検索処理を排他することができました

108 :デフォルトの名無しさん:2015/02/22(日) 23:16:47.04 ID:Tf8seuYj.net
まさにそのときのためにflockはある。
オプションを調べるといい。まさかPerl4なのか?

109 :デフォルトの名無しさん:2015/02/23(月) 00:32:57.58 ID:pG3LwxQC.net
Perl4部分を先に覚えろ、というのは時代遅れのノウハウを習得しろという
意味ではなくて、基本をまず覚えろって意味
おれはこのスレで覚えたlocaltimeには今でも感謝している
データベースだのTime::Pieceだのを持ち出す前にPerlをよく知ってほしい

110 :デフォルトの名無しさん:2015/02/23(月) 06:58:42.19 ID:eK56KkkA.net
すっげー遅レスの釣り

>おれはこのスレで覚えたlocaltimeには今でも感謝している
このスレで覚える様なアホが、Perl(4も5も)語るなよ

111 :デフォルトの名無しさん:2015/02/23(月) 08:12:30.68 ID:EFdND4ro.net
flock使えない環境なのでmkdirで排他ロックと共有ロックを作っているところですが
mkdirで排他ロックのやりかたはいろんなサイトに書いてありましたが、mkdirで共有ロックについては書いてありませんでした

そこでmkdirでロック用ディレクトリを作りそのディレクトリの中に排他ロックがかかっているのか
または共有ロックがかかっているかを判別するためのディレクトリを作ることにしました。
ロック用ディレクトリの中にrwというディレクトリがあれば読み書き禁止の排他ロック
wというディレクトリがあれば読み込みOKで書き込み禁止の共有ロックという感じです

この方法だと何か問題ありますか?
もっといい方法があれば教えてください

112 :デフォルトの名無しさん:2015/02/23(月) 09:06:18.71 ID:feaNRgVg.net
mkdirは、ファイルシステムによっては、非常に負荷がかかる。
いまどきは大丈夫だけど、flockが使えない環境ってことは、
10年以上前のシステムを使ってるってことだから、その辺は心配だな。

113 :デフォルトの名無しさん:2015/02/23(月) 12:30:29.58 ID:hyNQWBte.net
>>111
もっといい方法の前に
だめな理由をかいておく。

まずデータが30万件だ。
つまりいかなるロック方法であっても
そのデータを処理している間、他の処理ができなくなる。

それを避けるには、行ロックがが必要。
データ30万件の1行毎にロックが掛けられるようになる。

これを使えば並列に処理できるようになるから
パフォーマンスが大幅に上がる。

だが行ロックできるようにするためには、ファイルのフォーマットを
変えないといけない。単純なテキストファイルやCSVファイルでは
行ロックは不可能。

そして、行ロックが出来るようにしたものが
データベース。

114 :デフォルトの名無しさん:2015/02/23(月) 16:09:07.50 ID:jEdpJRTO.net
そこでdbmopen
行ロックとかしないけど

115 :デフォルトの名無しさん:2015/02/23(月) 17:05:18.21 ID:zNLn6pFR.net
>>111
中にディレクトリを作るための排他ロックと共有ロックの使用数をカウントするものがほしくなるなw

116 :デフォルトの名無しさん:2015/02/24(火) 03:03:40.47 ID:OzhdDlTU.net
mkdirできればロックを取得、できなければブロックなのでカウントはいらないよ

117 :デフォルトの名無しさん:2015/02/24(火) 06:17:15.80 ID:ri5TzV3b.net
>>116
じゃあ共有ロックは誰が解除するの?wwww

118 :デフォルトの名無しさん:2015/02/24(火) 12:27:40.41 ID:6vv1mCHr.net
データベースを使えば簡単なのに、
なぜわざわざ茨の道をいこうとするのか?

それは先人がこれではだめだと引き返した道。
その道を進む行為は賢くないよ。愚かだよ。

119 :sage:2015/02/24(火) 20:40:05.57 ID:aDKRFdov.net
mroonga&MeCabに対応している、Perl用クライアントって
どれがお勧めなのでしょうか?

ネットで検索してもそれらしいライブラリが見つからないようで
教えて頂けると助かります。

7年くらい前は、全文検索ライブラリにmecab-perlとかを使っていた記憶があります。

120 :デフォルトの名無しさん:2015/02/24(火) 21:42:36.35 ID:OzhdDlTU.net
mkdirできたプログラムが解除するんだよ

121 :デフォルトの名無しさん:2015/02/24(火) 22:11:47.39 ID:6vv1mCHr.net
データベース使えば簡単なのに
オレオレロック機構を実装して
アプリが異常終了してロックが解除できなくなって
壊れたとかよくあるよなw

122 :デフォルトの名無しさん:2015/02/25(水) 01:12:24.88 ID:u9apSz6m.net
そうだね。でもここで求められているのはデータベースじゃなくてmkdirでの
解決の仕方だからね。いいのが出来たらライブラリとして公開してくれるだろ。

123 :デフォルトの名無しさん:2015/02/25(水) 06:40:27.69 ID:vrjMDbEA.net
エクセルでそのまま表示できるような状態の
データが詰め込まれたデータベースほど
恥ずかしいものはないw

124 :デフォルトの名無しさん:2015/02/26(木) 12:06:49.72 ID:9YTrvgco.net
ロックを制御する専用の別プロセスを1個だけ走らせて(複数不可)
排他ロック・共有ロックともにそのプロセスを介するというのはどうか

まあDBMSがやってる仕事をかわりにやるだけな訳だが

125 :デフォルトの名無しさん:2015/02/26(木) 12:25:50.57 ID:0ruku8I/.net
>>124
そんなことできる技術もないし、
そんなことが許されるサーバーも使っていないし使えない。

http://kotowaza-allguide.com/he/hetanokangae.html

【下手の考え休むに似たりの解説】
【注釈】 囲碁や将棋で、下手な者がいくら長時間考え込んでも名案など浮かばず、まるで駒を手にしたまま何も考えずに休んでいるようなものだということから、よい考えなど浮かぶはずもないのに、あれこれ考えて時間を無駄にするという意味。
【出典】 −
【注意】 「下手な考え休むに似たり」というのは誤り。
【類義】 下手な思案は休むに同じ/下手の考え休むに如かず
【対義】 下手の考え休むに如かず
【英語】 Mickle fails that fools think.(馬鹿が考えていることは、たいてい役に立たない)
【用例】 「そういうのは下手の考え休むに似たりというものだよ。いい加減降参したらどうだい」

126 :デフォルトの名無しさん:2015/02/27(金) 00:48:13.26 ID:88OXUGFl.net
そういや昔この掲示板のソースみたらダメダメなロックやってたような。

127 :デフォルトの名無しさん:2015/02/27(金) 02:33:17.69 ID:F989SPSP.net
Perl4縛りなら、俺ならシングルタスクで解決する。

128 :デフォルトの名無しさん:2015/02/28(土) 07:54:32.57 ID:6vZKnEo0.net
>>126
追記するだけでいい場合はだめだめロックでもわりとなんとかなっちゃったりするんだよな

129 :デフォルトの名無しさん:2015/03/07(土) 00:31:09.31 ID:639b0hNr.net
排他制御のまとめ
@シングルタスクOS上でアプリを書く
Aフォルダを使ってロックする
Bflockを使う
CDBMSを使う
D追記の場合はだめだめロックでも可
次スレのテンプレに追加すること

130 :デフォルトの名無しさん:2015/03/07(土) 08:07:08.11 ID:jW+ek3hJ.net
追記されるファイルの直読みを禁止する以上、読んでいる間に追記されないということが
保証されるようになるはずだよね?w

131 :デフォルトの名無しさん:2015/03/10(火) 05:33:44.69 ID:dWaMJNFM.net
>>130
わりとなんとかなっちゃう、というのは、大丈夫、とか、なにかが保証される、というのとはちょっと違う。

132 :デフォルトの名無しさん:2015/03/11(水) 02:12:12.02 ID:bSZHOSLF.net
>>129
2と5は間違いなので追加してはいけない。

133 :デフォルトの名無しさん:2015/03/13(金) 13:02:28.46 ID:+e2bgrgv.net
1も嘘だね。割り込みとかシグナルとか考慮してない

134 :デフォルトの名無しさん:2015/03/14(土) 13:28:00.55 ID:ra/AMlN3.net
use strict;やuse warnings;ってrequireするファイルにあるプログラムのチェックは行われないんですか?
されないのならrequireするファイルにもuse strict;とuse warnings;を記述しないとだめってことですか?

135 :デフォルトの名無しさん:2015/03/17(火) 01:17:39.48 ID:nEqloX6Q.net
そのスクリプトをuse strict;したければ、スクリプト自身にuse strict;が必要。
use warnings;も同様。インタプリタにひと手間かけて欲しければ、その指定を
プログラマがひと手間かけて行う必要がある。それがラリーのセンスだ。

136 :デフォルトの名無しさん:2015/03/21(土) 00:43:34.53 ID:jjT9Gnx+.net
EncodeのおっさんはPerlに限定しないEncode的なインターフェイスを作る巨大な仕事が残っているだろ。
たとえば猿真似のpythonなんか2015年にもなってまだ日本語が不得手だ。
LLの種類に関係なくEncodeの神になれよ。

137 :デフォルトの名無しさん:2015/03/29(日) 12:42:33.67 ID:5vNHXOnn.net
Encode的なインタフェースは失敗だったと考えてるので他のLLでは受け入れてくれない
んじゃないか?Perlは今後ともLLのモルモットとして役に立っていくのだろう。

138 :デフォルトの名無しさん:2015/03/29(日) 18:08:31.48 ID:F8+FjfS7.net
アクセスカウンタ作りですが

1:open関数の読み書きモードで開いてflockで排他ロックして書き込むアクセスカウンタ
2:読み込みモードで開きflockで排他ロックしtmpファイルに書き込んでからrenameするアクセスカウンタ

2つを同時に貼り付け100回連打したら、2の方がカウント数が全然少なかったです
renameは遅いのでやめたほうがいいんでしょうか?

139 :デフォルトの名無しさん:2015/03/30(月) 03:26:34.94 ID:x/GhIrok.net
>>138
読み込みモードは他人の読み込みを邪魔しない。
AさんとBさんは同じ数字を読む可能性がある。

140 :デフォルトの名無しさん:2015/03/30(月) 12:19:57.60 ID:Lq0egyTj.net
ファイルの中のデータを行単位で削除する方法と
seekで指定した位置から1文字ずつ削除する方法を教えてください
どちらもテンポラリファイルを使わない方法でお願いします

141 :デフォルトの名無しさん:2015/03/30(月) 12:28:01.22 ID:Lq0egyTj.net
それと@lines = <IN>;のように配列にまとめて読み込む方法はデータが多いとメモリをくうので
一括読み込みじゃない方法でお願いします

142 :デフォルトの名無しさん:2015/03/30(月) 12:32:32.86 ID:O9aguycE.net
無理

143 :デフォルトの名無しさん:2015/03/30(月) 14:12:22.95 ID:FyB5h3Ft.net
perlってまだ生き残ってるんだな

144 :デフォルトの名無しさん:2015/03/30(月) 15:23:59.96 ID:eFvOQ4Yd.net
>>143
CGIバブルが終わってからは、あるべき姿に落ち着いてそのままだよ
てかそれは随分と昔の話なんで、未だにPerl終了と声高に叫ぶ輩が生き残ってることのほうが不思議

145 :デフォルトの名無しさん:2015/03/31(火) 00:03:39.74 ID:OIxY6GET.net
while(1){

open(IN, $datafile) || last;
$data = <IN>;
close(IN);

}

これってファイルが開けたらループから抜けるという意味ですか?

146 :デフォルトの名無しさん:2015/03/31(火) 01:19:44.02 ID:kv4yZW7+.net
>>145
人に訊くより自分で試した方が早く解決できると思います。

まぁ答えはとしてはそれであってるけど、そのままだとファイルが開けないときにcpu食い潰すよ。

147 :デフォルトの名無しさん:2015/03/31(火) 02:14:23.38 ID:DVVpWgeR.net
まあ>>146は間違ってるんだけどな(笑)

148 :デフォルトの名無しさん:2015/03/31(火) 02:26:22.41 ID:kv4yZW7+.net
>>147
あ、ほんとだ。すんません。スーパー恥ずかしい...

っつーと、ループ内で$datafileのファイル名が変わるのかな。

149 :デフォルトの名無しさん:2015/03/31(火) 09:01:50.49 ID:IugrT7n6.net
>>145
一応回答すると、ファイルが開けなかったらwhileループから抜ける。念のため

150 :デフォルトの名無しさん:2015/03/31(火) 11:54:41.74 ID:SqSmYtEX.net
activeperlの5.20.1をインストールしてあります

use strict;use warnings;use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
#コメントテスト;
my $i = 10;
print $i, "\n";

これをコマンドプロンプトで実行しても何も表示されなくて
コメントの行を消すとちゃんと10って表示されるんですが何か設定がおかしいのでしょうか?

151 :デフォルトの名無しさん:2015/03/31(火) 15:08:39.18 ID:xBEas+F+.net
>>144
poor client相手に、月額1000円のサーバの固定費とCMSの運用費払わせる方がどうかしてる

152 :デフォルトの名無しさん:2015/03/31(火) 16:11:46.48 ID:DVVpWgeR.net
それは本当に貧乏人だなw
月1000円って小学生のお小遣いじゃんかw

153 :デフォルトの名無しさん:2015/03/31(火) 17:14:17.46 ID:xBEas+F+.net
投稿フォームだけで済むような更新頻度の低いサイトにCMSなんてイラナイから
イニシャルコストと導入後のメンテ費用を考えたら素のhtmlとcgiで書いた方が良心的

154 :デフォルトの名無しさん:2015/04/01(水) 08:41:54.94 ID:JORFK8wq.net
local $SIG{ALRM} = sub { die "timeout" };

この部分についての質問です
まずsubで関数名がないのと、戻り値がないのに$SIG{ALRM}にはどんな値が格納されるのですか?
そしてdie関数はwindowsだと使えないのでwindowsではどのように書けばいいのでしょうか?

155 :デフォルトの名無しさん:2015/04/02(木) 00:14:11.31 ID:tnulMQUl.net
>>154
$SIG{ALRM} には関数を代入してるよ。
dieはWindowsのばあ

156 :デフォルトの名無しさん:2015/04/02(木) 09:04:28.21 ID:aIeKvK0i.net
>>154
ActivePerl 5.16.1 だけど die 使えてるっぽいけど

C:\>perl -e "print 'ABC'; die 'timeout'; print 'DEF';"
timeout at -e line 1.
ABC

157 :デフォルトの名無しさん:2015/04/02(木) 10:23:28.67 ID:4ZZsgi5w.net
イチゴもだいじょぶだ

158 :デフォルトの名無しさん:2015/04/02(木) 21:08:36.38 ID:JH1Mqqb4.net
dieは例外送出として多く使われるので
これが動かなかったら大変なことになるぞw

159 :デフォルトの名無しさん:2015/04/02(木) 21:53:22.87 ID:sYN9b325.net
Windowsで使えないのってdieじゃなくてalarmじゃないの

160 :デフォルトの名無しさん:2015/04/04(土) 17:17:39.67 ID:xbtlZw9Y.net
our($n);

foreach(1..100){

print "aaa=====$n<br>";

}

$nに変数を何も代入しなくてループ処理をするとperlがフリーズしました
原因を教えてください

161 :デフォルトの名無しさん:2015/04/04(土) 17:26:39.68 ID:sl6pa7sN.net
いいえ、フリーズしません

162 :デフォルトの名無しさん:2015/04/07(火) 16:19:35.80 ID:y6ne4vkD.net
Windows8.1でmsys2のminttyからperlをビルドするため sh Configure をすると
Configure: 行 16472: /proc/curproc/exe: No such file or directory
で失敗しました。どうすればmsys2から成功させられますか

ちなみに行 16472付近の記述は下記のようになっているのでLinux扱いにさせれば上手くいきそうに思えます
case "$d_readlink" in
  "$define")
  : NetBSD first as /proc/self is a symlink to /proc/curproc, and it feels
  : more tidy to avoid an extra level of symlink
  set NetBSD /proc/curproc/exe Linux /proc/self/exe FreeBSD /proc/curproc/file Solaris /proc/self/path/a.out

163 :デフォルトの名無しさん:2015/04/08(水) 19:14:41.36 ID:ajF3hp/Z.net
0から9までの整数の乱数を固定取得したいんですけど

srand(900);
int(rand(10));だと0になってしまいます
どうすればいいんですか?
srand使わないとアクセスするたびに乱数が変わってしまうので値を固定したいんです

164 :デフォルトの名無しさん:2015/04/08(水) 20:12:07.81 ID:CYuqSHdu.net
>>163
ちょっと何言ってるかわからない

最大限努力してエスパーすると0から9の整数を適当に並び替えた配列が欲しいという意味かな?

165 :デフォルトの名無しさん:2015/04/08(水) 20:25:03.59 ID:WFBZO/E0.net
>>162
/proc/curproc/exe
Winのパス区切り文字は、\ では?
/ も使えるの?
それは、Win向けのスクリプトなの?

\proc\curproc\exe
それか、\ を、\ でエスケープして、
\\proc\\curproc\\exe

>>163
固定取得とはどういう意味?
例示して説明せよ

166 :デフォルトの名無しさん:2015/04/08(水) 20:45:13.88 ID:gn+rALV1.net
> Winのパス区切り文字は、\ では?
> / も使えるの?

Win32 APIも含めて、パスの区切りは
/でも動くような気がする。

いろんな言語、ライブラリで/で動くから
深く考えないで動くもんだと思ってしまってる。
どのレイヤーが変換してるんだろうか?

167 :デフォルトの名無しさん:2015/04/08(水) 20:58:58.93 ID:WFBZO/E0.net
/proc/curproc/exe: No such file or directory
だから、パスと認識しているね。
そういうファイル・ディレクトリが存在しない

NetBSD /proc/curproc/exe
このパスは、NetBSDという事?

よく見ると、exe というファイル名は変だね。
ファイル名.exe じゃないの?
それとも、ディレクトリ名かな?

168 :デフォルトの名無しさん:2015/04/08(水) 21:18:07.68 ID:ajF3hp/Z.net
int(rand(10))だと実行するたびに0から9のどれが出るか結果が毎回違うだろ
だけど何回実行しても結果が同じようにしたい
例えば乱数の基数を1にしたら8が何回実行しても出る
基数を2にしたら3が出る
基数を5にしたら9が出るという感じ

169 :デフォルトの名無しさん:2015/04/08(水) 21:20:19.11 ID:gn+rALV1.net
srandでぐぐれかす

170 :デフォルトの名無しさん:2015/04/08(水) 23:13:04.24 ID:ajF3hp/Z.net
いやだからそのsrandの性能がよくないから困ってる

for($m=0;$m<10;$m++){

srand($m);
my($r) = (rand(10));

print "value=$r<br>";

}

これの実行結果が
value=0.0115966796875
value=0.01251220703125
value=0.01373291015625
value=0.0146484375
value=0.01556396484375
value=0.0164794921875
value=0.0177001953125
value=0.01861572265625
value=0.01953125
value=0.020751953125
なのでintすると全部0になっちゃう

171 :デフォルトの名無しさん:2015/04/08(水) 23:57:25.91 ID:cLFBRghz.net
srandはループの外に出せよ

172 :デフォルトの名無しさん:2015/04/09(木) 01:42:19.49 ID:r2hp3hxj.net
エスパー参戦すると、randとかであらかじめ乱数を大量に作って、ファイルに
とっておき、プログラムの実行時にそのファイルを参照することで毎回同じ
乱数を使えるようにする、でいいですか?

173 :デフォルトの名無しさん:2015/04/09(木) 02:40:04.67 ID:+7hvEmMb.net
srandをループの外に出したら、どうなるの?

srandに同じ種を与えて、2回実行したらどうなる?

174 :デフォルトの名無しさん:2015/04/09(木) 11:45:47.57 ID:E0v+Buu6.net
my($n,$m);

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

srand($n);

for($m=0;$m<10;$m++){

my($r) = int(rand(10));

print "value=$r<br>";

}

print "<br><br>";

}

3回とも最初が0になってしまいます
0にならないにはどうしたらいいんですか?

175 :デフォルトの名無しさん:2015/04/09(木) 12:37:38.66 ID:kiIKr2Os7
>>170
そもそも結果からしておかしい。

codepad Perl5.8
http://codepad.org/964As0Wc
ideone Perl5.20
http://ideone.com/WGY1jq

どうやってもこうなる。
value=1.7082803610629
value=0.416303447718782
value=9.12432653437467
value=7.83234962103055
value=6.54037270768644
value=5.24839579434232
value=3.95641888099821
value=2.66444196765409
value=1.37246505430998
value=0.080488140965862

176 :デフォルトの名無しさん:2015/04/09(木) 12:43:05.92 ID:kiIKr2Os7
記憶が10数年前で止まってるPHPerの工作員だろ、ここんとこの質問者。

177 :デフォルトの名無しさん:2015/04/09(木) 12:39:17.03 ID:f/5UDar+.net
>>170
手元のマシンもcodepad.orgもこうだけど
http://codepad.org/0nMtoGOe
#!/usr/bin/perl
for($n=0; $n<10; $n++)
{
srand($n);
my ($r) = (rand(10));
print "value = $r\n";
}

value = 1.7082803610629
value = 0.416303447718782
value = 9.12432653437467
value = 7.83234962103055
value = 6.54037270768644
value = 5.24839579434232
value = 3.95641888099821
value = 2.66444196765409
value = 1.37246505430998
value = 0.080488140965862

178 :デフォルトの名無しさん:2015/04/09(木) 16:45:39.45 ID:Vuzz2A3s.net
>>162の件ですが誤解があるようなので補足します
Perl本体をビルドするときの
$ sh Configure
$ make
$ make test
$ make install
の最初の段階で失敗するという話です(参考:ttp://www.linuxfromscratch.org/lfs/view/development/chapter06/perl.html)
msys2には/proc/curprocが存在せず/proc/self/exeはあるみたいです

それとパスの区切り文字は\の方がむしろ不都合になりやすいと思われます
事実mintty上からstrawberry perl(C:\path\to\perl.exe)でcpanmを使用したところdmake中に下のログを吐いて失敗しました
-MExtUtils::Command: C:pathtoperl.exe: コマンドが見つかりません

179 ::2015/04/09(木) 17:31:03.07 ID:bPVf1A9q.net
#!/usr/local/bin/perl

use strict;
use warnigs;

my $text="12";
my $count="1";
print "Content-type: text/html\n\n";
print <<"EOS";
<html><head><title>アクセスカウンター</title></head><body>$count<br><br>更新履歴<br><br>$text<body>
</html>
EOS

これが機能しないんですがどなたか理由教えてもらえませんか?
属性は755です。内容に特に意味はないです。ヒアドキュメントが調べてもよくわからない。
初歩的な質問ですいません。

180 :デフォルトの名無しさん:2015/04/09(木) 18:00:46.10 ID:d4jlQFlQ.net
エラーになる時に何と表示されるかを書いた方がいい

181 :デフォルトの名無しさん:2015/04/09(木) 19:30:15.27 ID:Zaj1yAit.net
use warnings;

182 ::2015/04/09(木) 20:49:02.45 ID:bPVf1A9q.net
Script Error

The script did not produce proper HTTP headers.
Please see the error log to see the detail of the errors.
Depending on the server configuration,
you can also run thisscript under CGIWrap debugging.
Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or
add a AddHandler cgi-script-debug .cgiline to your .htaccess file.

こう表示されます;

183 :デフォルトの名無しさん:2015/04/09(木) 21:00:50.57 ID:peeQLIsX.net
CGIの話は禁止なんだぜ?

まずは、warnings のタイポ直してから、それでも駄目だったら、
PHP板に行けば?

184 ::2015/04/09(木) 21:37:17.12 ID:bPVf1A9q.net
warnings直しても駄目でした。
>>1 さんのレスみてcgiの話題大丈夫かと思ってました・。

185 :デフォルトの名無しさん:2015/04/09(木) 21:41:38.74 ID:peeQLIsX.net
そもそも、スレの合意も得てない単なる私見だし。
>>1がどう言おうと、板全体の方針の方が優先されるぜ。

186 :デフォルトの名無しさん:2015/04/09(木) 23:52:30.19 ID:d4jlQFlQ.net
>>182
アパッチのエラーログに詳細情報があるんじゃない?
それを見てみたら?

187 :デフォルトの名無しさん:2015/04/10(金) 00:22:13.20 ID:XYVxfdln.net
>>184
perlのパスは/usr/local/bin/perlであってるのか?
サーバーの設定によっては755では動かないようにしてある場合もあるがあってるか?
スクリプトの文字コードは問題ないのか? メモ帳でUTF-8で保存してBOMが付いてるとかありがち

188 ::2015/04/10(金) 21:42:02.36 ID:k00nOeV8.net
ターミナルインストストールします^^;
perlパスはあってます。755で他のcgiは動いています。(同一サーバー)
文字コードはshift-jisになってます。テキストエディターはterapadを使ってます。

189 :デフォルトの名無しさん:2015/04/10(金) 21:51:58.93 ID:XnlVh9yU.net
>>188
動作している環境はもしかしてUNIX?
ソースの編集をWindows上で行ってるんですよね?
行末にゴミが残っているかも知れません。

190 ::2015/04/11(土) 00:31:09.61 ID:YBDEAPKu.net
使っているサーバーはxreaで、ブラウザ火狐。 ソースの編集はテキストエディターです。
コマンドプロンプトでは、syntax okっと出たので、謎です^^;

191 :デフォルトの名無しさん:2015/04/11(土) 00:37:56.32 ID:pm/uZPWM.net
>>190
ためしに、terapad使って、ソースの改行コードを
[ CR+LF ] から [ LF ] に変換してから
サーバーに上げてみて。

192 :デフォルトの名無しさん:2015/04/11(土) 01:07:58.32 ID:DGTXgMDH.net
179のエラーメッセージにも書いてあるけど
xreaは拡張子を.cgidにしてうpればエラー詳細出せるみたいだけどやってみれば?

193 :デフォルトの名無しさん:2015/04/11(土) 01:25:48.84 ID:hRe3cPjf.net
tiobeのランクで巻き返したね。

194 ::2015/04/11(土) 04:37:47.41 ID:YBDEAPKu.net
>>192さん助言ありです。
エラ-原因が
Script is not executable. Issue 'chmod 755 filename'
属性が755じゃ駄目だってことなのかな・・。 

195 :デフォルトの名無しさん:2015/04/11(土) 08:36:37.16 ID:TjKNTTtC.net
こんだけくだぐだになるから、CGIの話は禁止になってんのに、
続けるのか?

196 :デフォルトの名無しさん:2015/04/11(土) 09:52:08.49 ID:xPz3Wm/g.net
結局perl関係ないじゃねーか

197 :デフォルトの名無しさん:2015/04/11(土) 10:26:58.59 ID:pm/uZPWM.net
>>194
Script is not executable. Issue 'chmod 755 filename'
スクリプトが実行可能ではありません。'chmod 755 filename'を実行しなさい。

その通りにパーミッションが設定され、シェルで実行できる場合は、以下を調べてみてください。

サーバー上で file というコマンドを実行出来るなら、file filenme を実行する。
「with CRLF, LF line terminators」と表示が出る場合は、
#!/usr/local/bin/perlの行末にゴミがつくため、apacheはperlを見つけられず、
「Internal Server Error」となり実行できません。

違う理由の場合はごめん。

198 :デフォルトの名無しさん:2015/04/11(土) 13:56:57.30 ID:ykBWyHan.net
優先順位は
 質問者(初心者) >>> スレ主(中級者) >>> 回答者(ベテラン)
でお願いします。

199 :デフォルトの名無しさん:2015/04/11(土) 14:03:51.73 ID:hp4FkV79.net
二週間初心者スレでスルーされたので

my $tmp = {
 $a => sub { $_ = 処理A},
 $b => sub { $_ = 処理B},
 $c => sub { $_ = 処理C},
};

ループ中に↑のように書いている場合、一つの変数に対して複数の処理($a に 処理A' やA''を追加)を
加えたい場合、どのように書くのでしょうか?

200 :デフォルトの名無しさん:2015/04/11(土) 15:34:33.51 ID:UKPnNYb6.net
>>179
Perlの構文はよく知らないので、
一般論で、ヒアドキュメントについて書くが、

print <<"EOS";
ここに書いたものは、改行も含めて、
見たままそのままに、変数に代入される
EOS

print は変数名ではない。
そこに何か変数名を書く。
そして、print 変数名 とすればよい

201 :デフォルトの名無しさん:2015/04/11(土) 15:52:09.61 ID:TjKNTTtC.net
知らないんだったら書くなよ。

202 :デフォルトの名無しさん:2015/04/11(土) 15:55:52.96 ID:TjKNTTtC.net
済まん、ミスった。
質問者のその部分自体にはperl的ミスはねーよ。
ヒアドキュメントは変数に突っ込まなきゃつかえない訳じゃねーぞ。
$ cat <<FOO
heredoc> foo
heredoc> bar
heredoc> FOO
foo
bar

それ以外の部分のトラブルだから、とっととWebProgに行けと言われてんのに。

203 :デフォルトの名無しさん:2015/04/11(土) 16:37:52.64 ID:jprZbhPv.net
>>199
> ループ中に↑のように書いている場合、

それ自分が書いたコードじゃないだろ?

まず他人のソース、会社のソースを弄る前に
Perlの基礎を勉強してからにしろよ。

単純に変数に関数の戻り値の結果を入れるだけの話だから、
↑のように書いているかどうかは全く関係ない。

つまり、その質問はあんたが自分のやりたい事と書いてあるコードを
全く読めてないってことを告白していることになってるんだよ。
レスつかんはずだわw

204 :デフォルトの名無しさん:2015/04/11(土) 22:44:04.23 ID:d2KPF5yq.net
>>202
ヒァ〜〜!

205 :デフォルトの名無しさん:2015/04/11(土) 22:59:11.44 ID:ykBWyHan.net
動いているCGIスクリプトがあるようなので、そのプログラムをお前の使っている
テキストエディタで開いて、何も編集せずに、お前の行っている操作方法で元の
名前で保存(上書き保存)する。この操作でCGIスクリプトが動作しなくなったら
テキストエディタ、ないしその操作方法に問題がある。
問題なく動くのであれば、その動くプログラムを少しずつ書き換えていって、自分の
作りたいスクリプトに近づけていく。一度にたくさん書き換えず、ちょっと変えて
保存して、実行して、を繰り返すと、どこで不具合が発生しているかが分かる。

206 ::2015/04/12(日) 13:54:34.19 ID:jIVNY2vP.net
176ですが、ヒアドキュメント使わずに、printだけで表記すると、問題なく表示できるので、
ヒアドキュメントがあるとうまくいかないってことがわかりました。
ヒアドキュメントをもう少し個人的に調べてみます。
色々助言してくだった方、親切にありがとうございました。

207 :デフォルトの名無しさん:2015/04/13(月) 07:58:16.02 ID:wj7rKPvK.net
>>200
これだけの痛さはそうそう出せるもんじゃないな
実に味わい深いw

208 :デフォルトの名無しさん:2015/04/13(月) 23:38:15.33 ID:+3GTN8vq.net
ヒアドキュメントはPerl4時代からあるから、基本のPerl4を知るのは今でも大事なんよ

209 :デフォルトの名無しさん:2015/04/14(火) 00:42:23.04 ID:oXtat876.net
また来たよw 4がまた来たよw

210 :デフォルトの名無しさん:2015/04/15(水) 00:59:37.51 ID:8TvJxe7E.net
Perl5って明記しない限り、PerlはPerl4のことであってる

211 :デフォルトの名無しさん:2015/04/16(木) 00:57:11.31 ID:bLWn78BU.net
また来たよw 馬鹿来たよw

212 :デフォルトの名無しさん:2015/04/16(木) 19:53:32.64 ID:DU3YUAwL.net
localtimeも知らずにいきがっていた俺が通るゼぃ☆

213 :デフォルトの名無しさん:2015/04/17(金) 22:37:47.72 ID:UHVCP2Vk.net
localtimeほどクソコードを量産させた関数もないだろうな。

正解
print strftime("%Y/%m/%d", localtime)

正解その2
print localtime->strftime("%Y/%m/%d")

クソコード
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
$year += 1900;
$mon += 1;

214 :デフォルトの名無しさん:2015/04/17(金) 23:12:42.75 ID:OFoEPQZ/.net
おまえがここでlocaltime覚えたのはみんな知ってるから

215 :デフォルトの名無しさん:2015/04/17(金) 23:15:03.75 ID:UDbFCugu.net
お前ってどのレスことだ?

216 :デフォルトの名無しさん:2015/04/17(金) 23:52:03.56 ID:eADhUYSQ.net
5.8.8にTime::Pieceが入ってないのが全ての元凶

217 :デフォルトの名無しさん:2015/04/18(土) 00:42:24.85 ID:28SXig6k.net
POSIXなら入っているだろ

218 :デフォルトの名無しさん:2015/04/18(土) 17:51:31.68 ID:TTmK2bDQ.net
>>214
なんだ、そゆことかw

219 :デフォルトの名無しさん:2015/04/18(土) 21:43:34.50 ID:K7f11N+p.net
たかだか時刻を扱うのにモジュールを呼び出し、人柱になる。日本向けの必要な
機能はなく、ひとたび使ってしまうとメンテで苦労する。それがTime::Piece。

220 :デフォルトの名無しさん:2015/04/18(土) 23:09:50.41 ID:dV26hKK2.net
$FORM_DATA{$form_name} = $form_value;という形でフォームからのデータを格納しています

ところがuse warnings;を使うとフォームに何も入力してない場合は変数にデータが入ってないらしく、が初期化がされてないといわれエラーが出てしまいます。

print "$FORM_DATA{'textbox1'}";のようにtextbox1のフォームが未入力の場合です。
このような入力フォームハッシュは初期化しようがないと思うんですが、どうすればエラーを回避できるんでしょうか?

221 :デフォルトの名無しさん:2015/04/18(土) 23:30:48.75 ID:j/wjXDDU.net
Perl はよく知らないが、
最初に空文字列でも代入して、初期化しておけば?
$FORM_DATA{$form_name} = "";
$FORM_DATA{$form_name} = $form_value;


それか、$FORM_DATA{'textbox1'}を使う前に、
エラー処理を入れる

if($FORM_DATA{'textbox1'} == nil){
 エラー処理
}else{
 print "$FORM_DATA{'textbox1'}";
}

222 :デフォルトの名無しさん:2015/04/18(土) 23:50:04.98 ID:09otItWe.net
>>221
クソコード書くな。

>>220
一旦変数に入れると良い。
特にPerlはリストコンテキストとスカラコンテキストの問題で
フォームからのデータを変数にいれないで扱うとバグの元になる。

まずフォームからの入力だが、フレームワークを使っているならそのやり方をするとして
使ってないならば、おそらくCGIモジュールを使っているだろう?
ならば、こうだ。

my $q = CGI->new;
my $value = $q->param('value') // '';

'' の代わりに、何も入力されていない時の初期値を入れれば良い。

223 :デフォルトの名無しさん:2015/04/19(日) 07:33:57.07 ID:Z1tOTu1C.net
一応「CGIの話は禁止」と釘は刺しとくが。

>>221
お前、レスんなよ。

224 :デフォルトの名無しさん:2015/04/19(日) 09:44:55.05 ID:KgvSDjWg.net
FORM_DATAというワードが出てたからCGIの話、かw
糞初心者ガキが

225 :デフォルトの名無しさん:2015/04/19(日) 12:22:34.39 ID:Z1tOTu1C.net
>>224
初心者認定は構わんが、%FORM_DATA なんぞ使ってる
コマンドラインアプリがあったら教えてくれよ

それよか == nil なんぞ、このスレに書くアホに怒るべきじゃねーの?

226 :デフォルトの名無しさん:2015/04/19(日) 12:31:02.57 ID:qB4dXJA/.net
>>224
直前のレスに
>my $q = CGI->new;
こんなのがあんのに、そのレスする度胸は凄いわ

227 :デフォルトの名無しさん:2015/04/19(日) 17:08:28.41 ID:vTL3Mzew.net
CGIをコマンドラインでテストするための
プログラムを作りたいんだけど、それって
CGIじゃないからここでいいよね?

228 :デフォルトの名無しさん:2015/04/19(日) 17:33:10.28 ID:EueKgq+R.net
あっちでやれば?
↓こんなのとかいっぱいあるよ
http://kanae.2ch.net/test/read.cgi/php/1078997682/

229 :デフォルトの名無しさん:2015/04/19(日) 21:48:27.34 ID:7svrhlbQ.net
未定義値で警告が出るみたいなperlレベルの話ならまあ
どこどこのサーバーでperlで書いたCGIが動かないみたいなのはさすがにね

230 :デフォルトの名無しさん:2015/04/20(月) 00:39:31.33 ID:xc0HJa8r.net
{
no warnings 'uninitialized';
print "$FORM_DATA{'textbox1'}";
}

ttp://perldoc.jp/docs/perl/5.18.1/perllexwarn.pod

231 :デフォルトの名無しさん:2015/04/22(水) 16:23:38.90 ID:CYsRD/7P.net
>>213
localtimeの値を全部取得して一部だけ取り出そうとする人はいないだろ

232 :デフォルトの名無しさん:2015/04/22(水) 18:11:20.27 ID:sdnJBf1e.net
>>231
年月日だけ必要な場合とかあるよw

233 :デフォルトの名無しさん:2015/04/23(木) 02:31:54.87 ID:/mzS0WKL.net
もともとPerlによるCGIプログラミングの話題はOKだったが、64箱目では加えて
Common Gateway Interface関係の話題もOKになったと読める。初心者対策だな。

234 :デフォルトの名無しさん:2015/04/23(木) 18:44:54.11 ID:uaw1qxyQ.net
今日の無駄にハマった記述
$::fnc{ shift @in }->(@in)
shiftが実行されてるのに値が捨てられてねぇ

235 :デフォルトの名無しさん:2015/04/23(木) 22:33:20.15 ID:uaw1qxyQ.net
久しぶりにPerlをやったら数値の初期化がわからんくなった

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

# @_ は標準入力から入ってきた数字の文字。shiftすると0が出てくる。
my @ccc = qw(aa bb cc dd ee);
$aa[0]->{'bbb'}->{ $ccc[shift] } = 1;

Use of uninitialized value in array element

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

$aa[0]->{'bbb'}->{ $ccc[(shift) + 0] } = 1; # +0して数値だと教えてやる

Use of uninitialized value in array element

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

my $SUUTI = int( (shift) + 0 ); #もうこれは絶対数値だろ
$aa[0]->{'bbb'}->{ $ccc[$SUUTI] } = 1;

Use of uninitialized value in array element

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

どれも全部警告が出る以外は正しく動作します。
もう警告消そうかな…

236 :デフォルトの名無しさん:2015/04/23(木) 22:45:03.63 ID:WIyghc2rN
>>234
普通に捨てられる。

http://codepad.org/fggJFOt3
http://ideone.com/gmbOHv

237 :デフォルトの名無しさん:2015/04/23(木) 22:55:15.59 ID:WIyghc2rN
>>235
何の問題もなし。

http://ideone.com/5cdgTX

238 :デフォルトの名無しさん:2015/04/23(木) 22:56:48.15 ID:RQ6uYe2n.net
shift が実行されてないから値が捨てられて無いんだよ
$ perl -le 'my @d = qw( 3 4 5 6 ); my %h = (4 , sub { print @_ } ) ; $h{ shift @d }->( shift @d) ; '
3

暗黙の shift @_ は、どの状況下でも起るわけじゃねーよ?
$ perl -le '@_ = qw( 1 2 ) ; print @{[shift @_]} ;'
1
$ perl -le '@_ = qw( 1 2 ) ; print @{[shift ]} ;'
Use of uninitialized value in print at -e line 1.

239 :デフォルトの名無しさん:2015/04/23(木) 23:31:29.88 ID:uaw1qxyQ.net
天才
0を受け取ってたのが勘違いに拍車をかけていた

240 :デフォルトの名無しさん:2015/04/23(木) 23:33:21.86 ID:usUmjU70.net
>>232
全部取得したいなら
@t=localtime;
今の時間だけなら
($s,$m,$h)=localtime;
でいいって事を言いたかっただけ

241 :デフォルトの名無しさん:2015/04/24(金) 11:39:22.38 ID:W/fXv6jM.net
>>240
今の年月日だけ必要な場合は?

そういう風に途中だけ必要なのに
明らかに何処かのクソコードをコピペしただけの
コードが多いなって話をしてる。

年を取り出して+1900する
月を取り出して+1する
それを何も考えずに繰り返してる奴。

242 :デフォルトの名無しさん:2015/04/24(金) 11:43:00.72 ID:W/fXv6jM.net
>>235
一言言っておくは。

Perl知ってる、知らない以前の問題で
自分が困るような、複雑な書き方をするんじゃない。
きっとあんたPerl以外でもそんな書き方をするだろう?

リーバブルコードでも指摘されてることだぞ。
無理やり一行に詰めこむことで、自分が賢いと勘違いしているだけだ。
式の何にshiftを入れるんじゃなくて、一旦先にshiftしておくなどして
わかりやすいコードを書くようにしろ。

243 :デフォルトの名無しさん:2015/04/25(土) 00:10:15.48 ID:48xF3CQb.net
むしろそこはコピペでいいところ。そんなところでオリジナリティを発揮しても
何のメリットもない。漢数字なら一、二、三、ローマ数字ならI, II, III だ。
プリミティブなものは分かりやすいから廃れない。工夫しました系は塗り替えら
れて終わる。

244 :デフォルトの名無しさん:2015/04/25(土) 21:44:28.75 ID:1Xoffzaq.net
>>241
月や曜日が0から始まらないと月名とか参照するのに少し困るけどな。
strftimeは外部モジュール入れるから使う人は少ないだろう。
use utf8;やstrict、warnings すら極力使わずに負荷を下げて処理したい人は多いだろうし

245 :デフォルトの名無しさん:2015/04/25(土) 21:46:16.65 ID:TJPbTXdw.net
>>244
そういう話じゃねーよ。
毎度毎度、使うたびに年に+1900、月に+1する
単純作業やるなっていってるんだよ。

246 :デフォルトの名無しさん:2015/04/25(土) 21:46:38.03 ID:TJPbTXdw.net
> strftimeは外部モジュール入れるから

標準モジュールだが?

247 :デフォルトの名無しさん:2015/04/25(土) 23:10:56.36 ID:VJ48Az80.net
それぞれやりたいようにやってくれ。俺はlocaltimeに一票。こちらに分がある。

248 :デフォルトの名無しさん:2015/04/26(日) 01:54:46.37 ID:JEE8tkGa.net
>>245
言いたいことはわかるけど
ジャンル柄、ライブラリを一切使いたくない時もあるので
まあそんときは怒らずに付き合ってくれよ

249 :デフォルトの名無しさん:2015/04/26(日) 09:54:33.74 ID:uRRZSCQD.net
>>246
訂正。外部モジュールじゃなくて、単にモジュール入れるという意味。
ライブラリ使いたくないからなあ。
全ての主要な標準ライブラリから、strict と warnings 外してやったよ

250 :デフォルトの名無しさん:2015/04/26(日) 10:50:44.09 ID:Ovagqc5g.net
>>249
議論自体はどーでもいいが、
>単にモジュール入れるという意味。
糞意味不明。元々入っているものを「入れる」???

更に、
>全ての主要な標準ライブラリから、strict と warnings 外してやったよ
こんな事言ってるし。

251 :デフォルトの名無しさん:2015/04/26(日) 10:53:06.13 ID:lX4K+qPz.net
strictやwarningsすら使いたくなくなるような状況とはいったい

252 :デフォルトの名無しさん:2015/04/26(日) 11:46:26.65 ID:HAckIWsW.net
ベンチマークもしないで、
自称高速なコードを書く俺は天才
じゃね?w

253 :デフォルトの名無しさん:2015/04/26(日) 14:34:59.80 ID:FlkKeK75.net
モダンパールの無理すんなPerlの時代は終わったのさ。Perlは本来のPerlの使い方をしてこそ活きてくる。
CGIモジュールもそろそろ外れるし、もしかしたらE

254 :デフォルトの名無しさん:2015/04/27(月) 09:11:38.32 ID:wWpiPENM.net
>>250
小さいことに拘るなって。
localtimeに、POSIX.pm入れないと動かないstrftimeを例に出してくる事だって可笑しく見えるだろ

strict・warnings は開発終わったソースから外したんだよ。
他人の所に有る鯖にPerlのソースupするのに、
少しでも軽くして運営を楽にしてやろうと、改行やらスペースやらタブやら、
同じスクリプトとか自分で書いて外すだろ。
Encode.pm や utf8_heavy.pl とかどんな事やってるのかソース開いたら、
strict・warningsが入ってるからこれってこんなに必要なのか?
と疑問に思って試したらやっぱり必要なくて軽くなったからだよ。
今、部分的にCに直してる所。
自鯖運営した事がある人なら分かると思うけど、
JAVA PHP Perl と弄ってみて、JAVAとPHPは速攻で特アの攻撃でやられて、
結局少し古いPerlがセキュリティ的にとりあえず安全だと判断したためだよ。
でもPerlも分からん所があってCに直してるんだよ。
糞だというなら、Perlいまだに弄ってる事自体が糞だろ。
PHPみたいな明らかに情報抜き取るためにあるような怪しい奴はともかく、
最近のJAVAもPerlも可笑しいからなあ

255 :デフォルトの名無しさん:2015/04/27(月) 10:27:35.23 ID:d1QnfTlA.net
> localtimeに、POSIX.pm入れないと動かないstrftimeを例に出してくる事だって可笑しく見えるだろ

いや、だから、POSIX.pmは標準モジュールだから
最初っから入ってるんだってw

256 :デフォルトの名無しさん:2015/04/27(月) 10:59:30.72 ID:vaJOoflW.net
>>254
>軽くなったから
労力に対して具体的にどの程度の効果があったの?

257 :デフォルトの名無しさん:2015/04/27(月) 11:24:02.24 ID:W95auXF3.net
>>256
労力は必要ないって。
自分で正規表現使って圧縮するスクリプトぐらい書けるだろ

258 :デフォルトの名無しさん:2015/04/27(月) 11:54:07.49 ID:vaJOoflW.net
で、その具体的な効果は如何程で?

259 :デフォルトの名無しさん:2015/04/27(月) 19:45:36.45 ID:GvO7a/ob.net
この間のヒアドキュメント君と同じ奴だろ。
相手するだけ無駄だわ。

260 :デフォルトの名無しさん:2015/04/27(月) 19:45:53.47 ID:yuVlndLM.net
質問です。
windows xp 32bitでactive perl 5.20.1 + AN HTTPD DaemonでCGIとして動かしています。
EUCだとopendirがうまく動かなかったのでソースは全てshift_jisです。
moveでファイルを移動させると、移動後に特定のファイルだけファイル名が変わってしまいます。
対処法があれば教えて下さい。

例)
木曜ドラマ9「潜入探偵トカゲ」第4話 “医療ミスを暴け!!vs天才外科医” [TBS] 2013年05月09日(木) 21時00分〜21時54分

け!!vs天才外科医” [TBS] 2013年05月09日(木) 21時00分〜21時54分

261 :デフォルトの名無しさん:2015/04/27(月) 19:51:51.84 ID:d1QnfTlA.net
>>260
一番最初にUTF8に変換してから扱う

262 :デフォルトの名無しさん:2015/04/27(月) 19:59:03.64 ID:yuVlndLM.net
>>261
事故解決しました。
move ディレクトリ名+ファイル名, 移動先ディレクトリ名
でやっていたのを
move ディレクトリ名+ファイル名, 移動先ディレクトリ名+ファイル名
に変えたところ動作するようになりました。

263 :デフォルトの名無しさん:2015/04/29(水) 23:37:44.60 ID:ijRzeJvh.net
木曜ドラマ9「潜入探偵トカゲ」第4話 “医療ミスを暴け!!vs天才外科医” [TBS] 2013年05月09日(木) 21時00分〜21時54分
木曜ドラマ9「潜入探偵トカゲ」第4話―@“医療ミスを暴\け!!vs天才外科医” [TBS] 2013年05月09日(木) 21時00分〜21時54分

264 :デフォルトの名無しさん:2015/04/30(木) 03:57:32.40 ID:4/nMvxH/.net
なんかwindowsだと入出力多い時はsjisで正規表現の時だけエスケープすんのが楽になってきたんだけど。
あんま入出力せずに記述の中だけでかなり色々やりたい時はutf8
どっちつかずの時はもう昔の方法でいいよってことでEUC

265 :デフォルトの名無しさん:2015/05/01(金) 22:18:04.69 ID:JkgSPIp9.net
cでハッシュの実現法知りたいんだけど、検索するとめんどくさいような方法と言うか、
perlのように便利なハッシュとは程遠い感じだった。

perlのハッシュってどうなってんの?

266 :デフォルトの名無しさん:2015/05/02(土) 17:27:32.11 ID:R7a0WGMJ.net
PerlはCで書かれているのでハッシュの実現方法は同じはず。Perlのハッシュが
便利なのはプログラマが値のデータ型を区別しなくていいから。

267 :デフォルトの名無しさん:2015/05/02(土) 21:29:19.10 ID:ve2TTn4S.net
あるコマンド文字列解析をするプログラムがあって、
書いてあるコマンドに対応したクラスを呼び出して処理している。

クラスはモジュールとしてファイルがわかれていて、
プログラムの先頭でuseして読み込んでいる。
対応するコマンドを増やすときは、モジュールを増やす。
モジュールのBEGINで、メインプログラムにある
「コマンド解析用リスト」にオブジェクトを追加すると
対応できるコマンドが増える という仕組みを作ったんだけど

こういうのは普通はどういうロジックで作るものなの?

268 :デフォルトの名無しさん:2015/05/02(土) 22:08:11.65 ID:gGCqgUJN.net
ファイルハンドルを
my($IN) = *IN;のように変数に格納すると
used only once possible typoという警告が出るんですが
どこが間違っていますか?

269 :デフォルトの名無しさん:2015/05/03(日) 00:41:54.12 ID:o9NCZLQk.net
>>260-264
UNIX系では、半角 ! は、sh では通常の文字だったが、
csh, bash では特殊文字となった

! はコマンドヒストリ。
!! は直前のコマンドを実行する

! は、' '(シングルクォーテーション)で囲むか、
\でエスケープすれば、通常の文字として扱われるが、
" "(ダブルクォーテーション)では展開されてしまう

echo '!!', echo \!\! → 展開されない
echo "!!" → 展開される

以前もLinux板で、同じ質問を見かけたが、
ファイル名に特殊文字など、
まぎらわしい文字を使わない方がよい

また、- ハイフンなどでも、何種類もあるから、
どのハイフンを使ったのか、わからなくなるかも

誰かが入力した文字列をチェックせず、
そのままファイル名に使うと、
システム設計上、バグになることは明らか

270 :デフォルトの名無しさん:2015/05/03(日) 01:26:26.91 ID:G0S6iNs3.net
>>266
すまん意味がわからん。
俺がハッシュを作ろうとしてんのに、「おまえが作ろうとしてるハッシュと同じだよ」って返答だぜ、それは。

271 :デフォルトの名無しさん:2015/05/03(日) 01:48:45.69 ID:KzoPxOzk.net
>>268
INがファイルハンドルじゃないのでは?
抜粋や加工せず、コードもエラーも全文載せてみては?

272 :デフォルトの名無しさん:2015/05/03(日) 02:15:29.50 ID:cXs5Mf40.net
英文載ってんのに、なんつーレスだよ。
そんなミスだったら、他のワーニングが出てるよ

>(変数が)一回しか使われてませんよ?
>タイポ(タイプミス)じゃありませんか?
ワーニングの先頭に変数名が来ているはずだけど、
$INなのか、はたまた他の変数なのかは伺い知れん。

273 :デフォルトの名無しさん:2015/05/03(日) 02:29:55.72 ID:o9NCZLQk.net
PythonのHashはオープンアドレス法で、
Rubyはチェイン法

Rubyではバケット数は、
2の累乗(2の30乗以下の)付近の素数を使う。
8+3, 16+3, 32+5, 64+3, 128+3, 256+27, 512+9...

最初のバケット数は11で、
55個(11*5=55、バケット数の5倍)挿入すると、
バケット数は19に再構成される

そこで、95個(19*5=95)まで挿入すると、
バケット数は37に再構成される

「Rubyのしくみ」という本を参照

274 :デフォルトの名無しさん:2015/05/03(日) 03:06:08.66 ID:KzoPxOzk.net
>>272
わかってないな
警告メッセージが抜粋で、全体を見ればどこが悪いか自明だって
言ってるんだよ

$ perl -we 'my($IN)=*IN;'
Name "main::IN" used only once: possible typo at -e line 1.

275 :デフォルトの名無しさん:2015/05/03(日) 03:07:43.61 ID:KzoPxOzk.net
あと、ウォーニングね

276 :デフォルトの名無しさん:2015/05/03(日) 03:15:11.88 ID:cXs5Mf40.net
>>273
rubyが好きならrubyスレに行け

>>269
「File::Copyのmoveの使い方が間違ってた」
と真っ当な、perlの自己レスが付いてんのに、
とんちんかんなレスをすんな。

>>274
なんで、
>INがファイルハンドルじゃないのでは?
なんて突飛な発想になるんだ?
そのワンライナーをレスれるくせに。

>>275
そのレスすんなら、更に訂正してやろうか?
ヲーニングだよ。

277 :デフォルトの名無しさん:2015/05/03(日) 13:40:03.80 ID:NDCsHZKI.net
>>270
そう言ったつもり。ハッシュを実装するための質問ならむしろC言語スレに行くといいよ。
perlの実装についての質問なら、質問するよりソースを読んだほうが早くて正確。うそは言わない。

278 :デフォルトの名無しさん:2015/05/03(日) 17:49:26.77 ID:rnYVSqga.net
<div class="t_h">1:<span style="font-size: x-small;"> <span style="color: GREEN;">風吹けば名無し@\(^o^)/</span>
<span style="color: GRAY;"> 2015/02/17(土) 13:25:15.51 <i class="specified" style="color: #1628f0; background-color: #dddddd; font-weight: bold;">ID:ffaeaf.net</i>
</span></span></div>

これらのタグが沢山ならんでいるのですが
<span style="font-size: x-small;"></span>タグを消したいです

どうやってこれだけをうまく消せばいいのでしょうか?
教えてください

279 :デフォルトの名無しさん:2015/05/03(日) 17:52:33.33 ID:rnYVSqga.net
すみません自己解決しました

280 :262:2015/05/04(月) 03:09:05.36 ID:W+jyRLQV.net
できた

281 :デフォルトの名無しさん:2015/05/04(月) 09:10:48.82 ID:q3PB8X63.net
AUTOLOAD eval require import、だろ?

282 :デフォルトの名無しさん:2015/05/08(金) 07:29:51.63 ID:1J2HFFyn.net
ここ一ヶ月ほどPerlばっかやってたら頭がパーになったのを実感できる
新規でcを作り始めたらイライラする上、発想が貧弱になってやりかたが思いつかなくなった。

283 :デフォルトの名無しさん:2015/05/11(月) 00:41:36.32 ID:XZpFHT1X.net
C言語はCPUの命令を隠蔽できてもメモリーの扱いまでは隠蔽できないからねぇ。
しかもデータ型が限られてて文字列すらライブラリ頼みだ。

284 :デフォルトの名無しさん:2015/05/11(月) 06:13:37.29 ID:1M4Z8WO8.net
限られてると言うか型はどうでもええんやけど、
長さが自動可変長じゃないのと、perlだと全部ハッシュが片付けてくれてたんで、その二つが根本的に設計を直撃する。
まぁ自分本位の怠惰な事情なんだろうけど。
ビットいじりもイライラするし。しかもいい発想出てこないし。
最近perlやったもんだからなんでもポインタリンク主義で解決したがるようになってるし。

まぁ全く違う言語やな…やるべきことも求められてることも。

285 :デフォルトの名無しさん:2015/05/12(火) 21:05:05.73 ID:5u+T/3/k.net
でもCの後継はC++でもなくJavaでもなくPerlだと思う。プリミティブなデータ型「も」
扱えたならC言語を置き換えられるのになあ。

286 :デフォルトの名無しさん:2015/05/12(火) 21:12:49.33 ID:Nft3ZZ/H.net
Perlはないよw
この言語特殊すぎるから。
何が特殊かというとリストの存在。
このせいで他の言語との相互運用が難しくなってしまっている。

287 :デフォルトの名無しさん:2015/05/12(火) 21:36:27.11 ID:Jpq+T55S.net
俺はCとPerlは真逆だと思ってたが・・・

288 :デフォルトの名無しさん:2015/05/12(火) 23:07:05.46 ID:0UY5oEQ6.net
Cの後継とは思わんが、ソケットなど、C言語でプログラムを組む場合と
同様に使えるものが用意されてるので、置き換えられる場合はあるね
ただ、Cの構造体を pack/unpack で扱うのはちょっとやりづらい

289 :デフォルトの名無しさん:2015/05/12(火) 23:15:22.62 ID:itMmLqyr.net
> ソケットなど、C言語でプログラムを組む場合
> 同様に使えるものが用意されてるので

それはどの言語にもあるなw

290 :デフォルトの名無しさん:2015/05/12(火) 23:17:15.95 ID:itMmLqyr.net
C言語に一番近いスクリプト言語は
PHP(からオブジェクト指向部分を抜いたもの)
だと思うけどな。strlenとかあるし。

291 :デフォルトの名無しさん:2015/05/13(水) 15:50:29.35 ID:AQKm/Bi2.net
ちょっと質問っつーか確認なんだけど、

NAME: {    #NAMEはなんでもないただのブロック
 foreach my $ (){
  foreach my $ (){
   last NAME;  #※ここ
  }
 }
 foreach my $ (){
  foreach my $ (){
   last NAME;  #※ここ
  }
 }
}

処理の途中でこうゆう風に一気にNAMEブロック脱出しても原始的な言語みたいに変な問題おきないよな?
例えば、古いベーシック系で起きるみたいな、内部のどこかで一部制御の現在位置の混乱みたいな感じの問題。

いや、適切に全ブロックとループが終了してて、NAMEから脱出できてればそれでいいんだ。

292 :デフォルトの名無しさん:2015/05/13(水) 20:04:42.77 ID:eNOTZ+er.net
問題無い

293 :デフォルトの名無しさん:2015/05/13(水) 22:16:49.01 ID:NgVHOpPE.net
perlは配列周りを綺麗に整理してほしい。
phpなみにすっきりまとめてくれ。

294 :デフォルトの名無しさん:2015/05/15(金) 01:22:42.98 ID:moFEFGKE.net
>>293
どこが気にいらないのか?

ま、配列じゃなくてリストなんだが。

295 :デフォルトの名無しさん:2015/05/20(水) 01:32:05.69 ID:EkW2PCYt.net
perl 5.16.1
Windows7

#-------------
# srand を100回ほど動かしながら乱数を5個づつ生成していく。

foreach my $srand (0..99){
srand $srand;
print "srand:$srand\n";

my @print = map{ int(rand(100)) } 0..4;
foreach my $p (@print){
print $p . ", ";
}
print "\n\n";
}
#---------------

srand直後の最初のrandが 0 ばっかになるんだが…
乱数やないやん。
みんなどう対処してるの?

296 :デフォルトの名無しさん:2015/05/20(水) 05:18:09.37 ID:+vwzLual.net
実際に動かしたコードと質問に使ってるコードが違うと思うが
そこは置いといて。
srand(値) は、明示的に同じ乱数を使いたい時に使うもの。
srand() は、明示的に違う乱数を使いたい時に使うもの。

$ perl -le 'srand() ; print int rand 42'
27
$ perl -le 'srand() ; print int rand 42'
21
$ perl -le 'srand() ; print int rand 42'
11
$ perl -le 'srand(42) ; print int rand 42'
31
$ perl -le 'srand(42) ; print int rand 42'
31

そのコードは、
「複数回実行しても同じ結果になる様に組んでますよ」
ってコード
$ diff <( perl CODE.pl) <( perl CODE.pl)
して確認してみりゃいい

297 :デフォルトの名無しさん:2015/05/20(水) 05:26:24.34 ID:EkW2PCYt.net
いやアルゴリズムの名前は忘れたけど、
win98の頃は二回乱数を捨てなければならなかった。
unix系では大丈夫。
そうゆう質問よ

298 :デフォルトの名無しさん:2015/05/20(水) 05:30:55.88 ID:EkW2PCYt.net
ええと、補足すると、
srandは明示的に同じ乱数にするのには向いてなくて、
Perlのバージョンにもよるけど、やや古いperlはOS依存になってて、
新しいのでもバージョンによって挙動が違ってて、
それの対処をどうしてるの?
んで、俺が書いた環境だと欠陥じゃない?って感じの質問。

299 :デフォルトの名無しさん:2015/05/20(水) 05:34:22.51 ID:EkW2PCYt.net
srandが変わっても、乱数が同じになるって意味ね

300 :デフォルトの名無しさん:2015/05/20(水) 05:45:49.32 ID:+vwzLual.net
質問の主旨が変ってるぞ?
「0」になったのが問題じゃないのか?
そのコードだと、0に複数回なる可能性が無くはないが、
Windowsだろうと、凄く少ないと判断せざるを得なかった。


>>297,294
同じ結果にならないコードが、同じ結果を吐くなら
問題だけど、同じにするコードを書いてんだから、

$ diff <( perl CODE.pl) <( perl CODE.pl)
これ100回回して同じじゃなければ問題
バグ報告しろ。

301 :デフォルトの名無しさん:2015/05/20(水) 05:56:32.39 ID:EkW2PCYt.net
全部0だぞ

302 :デフォルトの名無しさん:2015/05/20(水) 05:57:01.56 ID:EkW2PCYt.net
なくないと言うか、0とかになって乱数を捨てるのは有名な話しだと思ってた

303 :デフォルトの名無しさん:2015/05/20(水) 05:59:17.56 ID:jDYIVmVy.net
>>295
>乱数やないやん。
この時点で、どう多レスで弁解しようが、理解してないのまるわかり

304 :デフォルトの名無しさん:2015/05/20(水) 06:02:55.13 ID:+vwzLual.net
>>301
全部0なら、バグ報告しなよ。
windowsだろうと有り得ない挙動だから。

305 :デフォルトの名無しさん:2015/05/20(水) 06:16:43.15 ID:QJ/TKUao.net
そうゆうアルゴリズムがあってそれはそれで有名なんだよ。
正直その絡みはどうでもいいんで、普通はどうするのか知ってる人お願いします。

306 :デフォルトの名無しさん:2015/05/20(水) 06:17:19.94 ID:QJ/TKUao.net
普通はと言うのはもちろん環境についてです

307 :デフォルトの名無しさん:2015/05/20(水) 06:18:59.72 ID:QJ/TKUao.net
昔、そのアルゴリズムと同じ乱数の関数を書いて2ちゃんに投稿したことがあって、
しょうがないからそれ検索してるけど見つからない。

308 :デフォルトの名無しさん:2015/05/20(水) 07:04:44.62 ID:QJ/TKUao.net
2ちゃんに書いたのは見つからんかったけど、過去のテストが出てきたぜ。

13年前の俺が言うには、OSに加えてPerlバージョン、さらにPerlの種類で乱数の挙動が変わるらしい。
あとアルゴリズム名分かった。ActivePerlは線形合同法。上に書いた症状が発生する。
これは二回値を捨てる必要があるっぽい。と言うかwin98と変わってなかった。

あと、srandが乱数が同じ物になるように統一されたのは けっこう前みたいなことを書いちまったけど、5.20.0からでつい最近らしかった。
それ以前はlibc依存。と言うことでPHPやrubyでも環境を合わせれば同じ症状が出るんじゃないかしら。

まぁ俺が聞きたいこととは違う話しになったが…

309 :デフォルトの名無しさん:2015/05/20(水) 09:27:09.88 ID:MSIXrSmQ.net
https://www.youtube.com/watch?v=T2aQNQ3hdqU&feature=youtu.be

310 :デフォルトの名無しさん:2015/05/20(水) 09:37:15.30 ID:MSIXrSmQ.net
とまあこうゆうことなんだ。

311 :デフォルトの名無しさん:2015/05/20(水) 11:36:45.37 ID:nU7YL/JRG
ランダムシードには出鱈目な値を使うか、省略するのが基本。
連番使うとか、頭がおかしい。

312 :デフォルトの名無しさん:2015/05/26(火) 00:20:05.60 ID:lBi0G/Bn.net
PerlでJunitやPHPUnitのような使い勝手のテスティングツールって存在しますか?

313 :デフォルトの名無しさん:2015/05/28(木) 02:17:35.75 ID:QsWIpiyLs
10年前は当たり前のように使ってたサブルーチンの配列を逐次参照する方法が思い出せません。
型グロブを使った記憶があるのですが、どうにも思い出せません。
C言語で言う「関数のポインター配列」です。

例えば、「f1」〜「f5」と5つのルーチンをリスト(配列)化し、
ループ文で順番に逐次実行する方法です。

C言語版を記しておきます。

#include <stdio.h>
#define TASKS 5
void f1( void ){ puts( "1" ); }
void f2( void ){ puts( "2" ); }
void f3( void ){ puts( "3" ); }
void f4( void ){ puts( "4" ); }
void f5( void ){ puts( "5" ); }
int main( void ){
  static void (*tasks[TASKS])( void ) = { f1, f2, f3, f4, f5 };
  int i = 0;
  for( ; i < TASKS; i++ ) tasks[i]();
  return 0;
}

Perlでの型グロブを用いた実装方法をお分かりの方、お教え下さい。
お願いします。

314 :デフォルトの名無しさん:2015/05/28(木) 05:48:04.07 ID:CrDWBWfb3
>>313
標準的に書くとこんな感じ。
あと、こっち(2ch.sc)は人が居ない。

sub f1 { print "1\n" }
sub f2 { print "2\n" }
sub f3 { print "3\n" }

my @tasks = (\&f1, \&f2, \&f3);
foreach my $task (@tasks){
$task->();
}

315 :デフォルトの名無しさん:2015/05/28(木) 12:02:30.14 ID:dLzzlyDA.net
5.22まだ?

316 :313:2015/05/28(木) 15:51:14.13 ID:QsWIpiyLs
>>314
あっ!ありがとうございます。
色々試してたんですが…これでしたか!>「->」
完全に記憶から抜けてました(^^;)

> あと、こっち(2ch.sc)は人が居ない。
どこにいらっしゃるのですか?

317 :デフォルトの名無しさん:2015/05/28(木) 16:24:34.53 ID:CrDWBWfb3
>>316
2ch.net

http://peace.2ch.net/tech/

318 :デフォルトの名無しさん:2015/05/30(土) 10:15:52.58 ID:NSTSE0WA.net
>>312
まず、Test::Tutorialを読む。殆どの場合Test::Moreで十分。
本当にxUnitみたいなものが欲しい場合はTest::Clsas

319 :デフォルトの名無しさん:2015/06/10(水) 04:04:07.70 ID:IQPOUpH4.net
windowsです。
基本的にUTF8で動かしてますが、コードに関わらず正規表現を1バイト単位で動かしたい時があります。

たとえば、
my $val = '文字列';
while( $val =~ s/^(.)// ){
}

これが先頭から1バイトづつshiftされてるとか、そうゆうようなことがしたいです。
この文字コードだとこう、とか変更が起きるとめんどうの元で、いつでも安心して使える記述が良いです。

320 :デフォルトの名無しさん:2015/06/10(水) 04:38:44.71 ID:IQPOUpH4.net
たぶん解決しました。
間違ってたら教えてください。

my $val = '文字列';
{
 use bytes;
 while( $val =~ s/^(.)// ){
 }
}

321 :デフォルトの名無しさん:2015/06/10(水) 05:07:59.92 ID:IQPOUpH4.net
何度もすみません。utf8フラグの意味がいまいち分かってないのですが、
例えば以下の記述をutf8で動かしたとき、


use strict;
use warnings;
use utf8;
use Encode;

my $val = '文字列';
my $re;
{
 use bytes;
 while( $val =~ s/^(.)// ){
  $re .= $1
 }
}
$re; #ユニコードが関わってなければ元通りに復帰してる自信あるが…

これはutf8フラグと言うのが付いてるんですか?付いてないんですか?

322 :デフォルトの名無しさん:2015/06/10(水) 09:15:15.17 ID:KBe3FxtO.net
>>321
print utf8::is_utf8("$re") ? "utf8 flag\n" : "not flagged\n";
自分で確認

323 :デフォルトの名無しさん:2015/06/10(水) 12:42:57.17 ID:IQPOUpH4.net
うむ分かった。やっぱこの辺はCで書いて呼び出すことにした。
バグの元やで。あと来年あたり全部忘れて意味分からなくなってそう。

324 :デフォルトの名無しさん:2015/06/10(水) 14:30:16.40 ID:M6KJWGtt.net
また君かあ

325 :デフォルトの名無しさん:2015/06/20(土) 18:49:23.70 ID:kIXF5uCD.net
1bitづつのブーリアンが欲しいのですがどうすればいいでしょうか?
コンテキストとやら(?)で表面的な動作をしたいわけではなくて、値として扱いたいです。

具体的には 1億*1億 くらい並べたオンオフの表が必要です。
(実際には、1ビットでも1PB以上メモリを食うので、ない物を正しくあると見せかける技術も使います)。

326 :デフォルトの名無しさん:2015/06/20(土) 19:03:22.16 ID:e4r9zs3/.net
>>325
http://perldoc.jp/docs/perl/5.14.1/perlfaq4.pod#How32do32I32manipulate32arrays32of32bits63

327 :デフォルトの名無しさん:2015/06/20(土) 20:00:17.90 ID:kIXF5uCD.net
ありがとうございます。
初心者なので確認方法(抽象化を伴わない値の出力方法)がよく分からないのですが、おそらく今の所意図したように動作してると思います。

また、これらを扱い際は常にこのような特別な書きかたになるのでしょうか?
例えばですが、値の自動変換や文字の処理、位置管理、その他は不要なので全ての内部フラグは落とし、演算はメモリ位置になるなど。
なるべくごくごく普通な処理。

普通とか特別は>>325の文意から汲んで頂けると助かります。

328 :デフォルトの名無しさん:2015/06/21(日) 13:41:35.09 ID:7rMevX/A.net
一体何のための課題なのか気になるな。

質問の答に関しては、俺だったら
やりたいようにやるだけの話でどうでもいいが、
1ビット単位で扱って1PBもメモリ食うなら、
Perlの書き方以前にPerlを選択することをやめるだろう。

1PBもデータが有るならその処理時間だって重要だろうし
Perlで省メモリとか期待できない。

表自体が広いだけでデータ量自体が少ないならいいけど。

(プログラミングの)初心者だから知ってる言語で許してくれよっていう
考えで適当な道具を使うと本職(学生かもしれんが)のプロの仕事にも
影響出てくるぞ。

本職ではないプログラミングの仕事でも、それを本職のプロの仕事の
一環としてやるなら、初心者だからという甘えは通用しない。

>>325の内容にとっての「普通」というのは、
C言語と圧縮とアルゴリズムを駆使する世界だからな。

329 :デフォルトの名無しさん:2015/06/21(日) 17:15:14.28 ID:3oiA9SUT.net
メモリとその値に対する一般的な扱いはPerlでは無理だよ
それを普通と言うなら普通の言語を使わないと

330 :デフォルトの名無しさん:2015/06/23(火) 23:26:09.06 ID:uWCupYQ4.net
ではせめてメモリの取りかたを教えて貰えないでしょうか
dllかなにかで実装します

331 :デフォルトの名無しさん:2015/06/24(水) 20:40:18.13 ID:OWJG3RlT.net
>>330
Perl XSで検索。

332 :デフォルトの名無しさん:2015/06/29(月) 17:10:35.01 ID:yUlXNQEP.net
誰か型グロブについて丁寧で親切に解説してくれー
大雑把に質問は二つ

一つ目
*aaa;
全てのグローバルなaaaを扱うとかなんとからしいけど、なにに使えばいいの?


二つ目
あるモジュールを使ったら、よく分からない物が返ってきたんで、
いろいろ出力とかして確かめると型グロブとやららしい。
なんだこれ?どうすりゃいいんだ?って思ってたらどうやらそのままファイルハンドルとして使えば機能するとかなんとか。
じゃあ普通にファイルハンドル返せよ

333 :デフォルトの名無しさん:2015/06/29(月) 19:52:24.80 ID:2OqWgX4Q.net
>あるモジュールを使ったら、よく分からない物が返ってきたんで
どのモジュールをどう使ったの?

334 :デフォルトの名無しさん:2015/06/30(火) 23:38:06.77 ID:pIdYzRhMV
ファイルハンドルにはシジルがないので引数、戻り値として使えなかったんよ

335 :デフォルトの名無しさん:2015/07/01(水) 12:49:33.69 ID:58p68Ksc.net
>>332
ファイルハンドルは、
今はクラスオブジェクトだけど、
大昔は違ったと思う。

そのあたりの歴史的事情なのでは?

336 :デフォルトの名無しさん:2015/07/03(金) 14:14:59.05 ID:zArdkwEu.net
sub name (&@){}
の宣言で
name {...} @array;
と呼べるらしいのですが、

name(){...}
みたいに書きたい時があるのですができないでしょうか。
ifとかwhileみたいに。

337 :デフォルトの名無しさん:2015/07/03(金) 14:51:20.85 ID:zArdkwEu.net
いろいろやってみましたが、
sub name($&){}
と宣言することで
name $val, sub{};
と書けましたがこれはダサいです。

338 :デフォルトの名無しさん:2015/07/03(金) 21:26:07.75 ID:H1Uvo7jA.net
ダサさは変らんが、
sub name(¥@&)

339 :デフォルトの名無しさん:2015/07/22(水) 06:36:20.58 ID:AXEGyECQ.net
古いperlではこんなような記述がコンパイルされてたのですが、
どうも最近はコンパイルされないようです。

{
my %vit;
sub fnc (\@){
my $ref = shift;
$vit{"$ref"}++;
}
}

なにがやりたいかと言うと、通常のサブルーチンを簡易的なクロージャのように使いたいのです。
fncをサブルーチンのリファレンスにすれば解決するのだろうと思いますが、それだとプロトタイプが使えません。(呼び出し方が気に入らなくなります)。

おそらくは、関数を別ファイルにし、それをスコープとして扱うと意図した通りに動くんだろうと思いますが、
簡単にぱっと書きたいときに、なんでそんなファイルをいちいち用意しなければならないのか、気に入りません。

なにかいい方法を思いついたらお願いします。

340 :デフォルトの名無しさん:2015/07/22(水) 11:06:40.91 ID:4RCoKAal.net
バージョンはいくつでどういうエラーメッセージ吐いてるの?

341 :デフォルトの名無しさん:2015/07/22(水) 11:17:17.41 ID:AXEGyECQ.net
5.16.1
Illegal declaration of subroutine main::fnc

342 :328:2015/07/22(水) 12:08:18.38 ID:AXEGyECQ.net
ごめん、エラーじゃなかった。
ほんとにごめん。

343 :デフォルトの名無しさん:2015/07/22(水) 22:12:52.05 ID:+pCybLMV.net
質問させてください

open (OUTFILE, ”>”, ”/tmp/test.txt”);
print OUTFILE ”output_test\n”;

上記のような記述で外部ファイルに出力をしたい場合、実際に書き込まれるタイミングはprint文の箇所ではないのでしょうか?
あとでまとめて出力されるといったことはあるのでしょうか?

344 :デフォルトの名無しさん:2015/07/22(水) 22:25:33.88 ID:AXEGyECQ.net
$| = 1;

345 :デフォルトの名無しさん:2015/07/22(水) 23:09:32.75 ID:+pCybLMV.net
>>344
早急なご回答ありがとうございます
まさしく私が知りたかったことそのものでした
非常に助かりました

346 :デフォルトの名無しさん:2015/07/31(金) 22:23:44.02 ID:C/XN/G20.net
フォームから送信されたデータを&jcode'convert (\$form_data,"euc");で
変換すると半角カタカナの部分だけ文字化けしてしまうけど
&jcode'convert (\$form_data,"euc");をコメント文にしたら
文字化けしなくなりました。
これはどういうことですか?
&jcode'convert (\$form_data,"euc");は使わないほうがいいんでしょうか?

347 :デフォルトの名無しさん:2015/08/01(土) 05:55:46.51 ID:fbUoNrmE.net
今の時代はPerl標準のEncodeモジュールを使う
jcodeは使いません。

348 :デフォルトの名無しさん:2015/08/01(土) 10:36:34.36 ID:Y7CrlKgG.net
フォームってなんの話しだよ。

> &jcode'convert
20年前のPerl4みたいなサブルーチンの呼び出しかた

349 :デフォルトの名無しさん:2015/08/01(土) 15:15:11.59 ID:LRIfaa64.net
今時eucて。

350 :デフォルトの名無しさん:2015/08/05(水) 21:38:04.92 ID:X8gF+qpc.net
>>348
えっフォームも知らないの?
テキストボックスやチェックボックスやテキストエリアなどを総称して
フォームって言うんだよ

>>349
Perl5.0
とかだとエンコードpm使えないし
まだまだshift-jisやeucは現役やで
この掲示板だってだってShift-jisだろ

351 :デフォルトの名無しさん:2015/08/05(水) 22:12:19.74 ID:HdJkl2eK.net
Perl5.0はもう使われていない。

352 :デフォルトの名無しさん:2015/08/05(水) 22:21:33.08 ID:uhvt+B/O.net
Perl5は使っちゃダメだよ。ここでその話もしないほうがいいレベル。
あとフォームはperlと関係ないよ。

353 :デフォルトの名無しさん:2015/08/06(木) 00:16:35.56 ID:mpzuHEeG.net
テキスト処理はテンプレで書かれてるのに。
触るべきじゃないか

354 :デフォルトの名無しさん:2015/08/06(木) 00:29:58.88 ID:iPVP1S8W.net
板の掟としてウェブは専門の板でやれってことになってる。

355 :デフォルトの名無しさん:2015/08/06(木) 01:02:05.98 ID:mpzuHEeG.net
HTMLのフォームとも書かれてないが。
win32APIかもしれんし、Tkかもしれない。そもそも実行環境OS書かれてない。
ま、ソースのコードも不明で改行コードもないが。
関わらんほうが良いだろう

356 :デフォルトの名無しさん:2015/08/06(木) 07:13:22.21 ID:AHIdLQWD.net
>>352
Perl5≠Perl5.0
ケッ

357 :デフォルトの名無しさん:2015/08/06(木) 09:40:47.02 ID:mQCtqpjA.net
馬鹿丸出しなツッコミにみんな釣られすぎだろう。

>>346
多分もう読んでないと思うけど、ひょっとして
Perl 4 時代のスクリプトを使ってるの?
jcode'convert という表記はもう理解できる人も少ないから
jcode::convert に書き改めた方がいい。
文字化けの方は、変換前のエンコーディングを明示的に指定しなさい。
もっと大幅に変更する必要が生じたら現代的な書き方を勉強して
スクリプトを utf8 で書き、Encode.pm を使いなさい。
全角半角変換とかが必要なら Unicode::Japanese で出来るよ。

358 :デフォルトの名無しさん:2015/08/06(木) 15:27:27.37 ID:4IBTADIH.net
バイナリ名は5
5.0は便宜名称。呼び出されん。
ってこれでさえ20年以上前のバージョンか。いまどきそんな扱い知ってる人もいないか

359 :デフォルトの名無しさん:2015/08/06(木) 19:23:19.79 ID:A31S3kLv.net
バイナリ名、、、ねぇ。

処理系の名称がPerl5
実装がperl 5.00Xとかperldoc perlhistに書かれてる書き方。
もしくは、perldoc versionで明記されてる書き方。
Perl5.0なんて便宜名称で呼ばれた事なんざ一度もない。

360 :デフォルトの名無しさん:2015/08/06(木) 19:33:25.14 ID:4IBTADIH.net
あっそ
じゃあそれで使ってればそれでいいじゃないか

361 :デフォルトの名無しさん:2015/08/06(木) 19:35:21.58 ID:4IBTADIH.net
話の流れからして、Perl5で指定しない限り、決して動く事のないバイナリなんだがな

362 :デフォルトの名無しさん:2015/08/23(日) 22:58:46.14 ID:Y4Dx2VDC.net
教えてください。。
perl(LWPかMechanize)を使って画像をダウンロードしようとしているのですが、
対象のURLがサーバー側でステータスコード404を吐くようにされています。
画像自体はちゃんと存在していて、安易にダウンローダーなどでダウンロードされないような
処理をされていると思うのですが、404でもステータスコードを無視して
ダウンロードするような処理は作れませんか?

363 :デフォルトの名無しさん:2015/08/23(日) 23:58:48.32 ID:nc+24S0l.net
>>362
LWP::UserAgent

364 :デフォルトの名無しさん:2015/08/24(月) 08:59:09.16 ID:w9FQ7B6l.net
>>363
すみません、それ試してました。

365 :デフォルトの名無しさん:2015/08/24(月) 17:53:36.61 ID:BAr9V/Jb.net
>>364
my $response = $ua->get('http://example.com/example.jpg');
して
$response->contentをファイルに出力すればいいだけではないのかな。

366 :デフォルトの名無しさん:2015/08/24(月) 19:07:50.11 ID:w9FQ7B6l.net
>>365
試してみたのですが、LWPだと0byteファイルしかできません。
Mechanizeのほうは0byteファイルすら生成されません。。

367 :デフォルトの名無しさん:2015/08/24(月) 19:41:34.86 ID:nHOQqKXp.net
>>362
普通404はエラーなので無視してもデータは返ってこない
たぶんrefererで判定してると思うので、それを設定すればいいと思う

368 :デフォルトの名無しさん:2015/08/24(月) 19:43:59.68 ID:NZbDfDwI.net
一般的に、404だからって
データが取れないなんてことはない。

そんな仕様だと、手が込んだ404エラーページを
表示するブラウザさえ作れなくなってしまう。

369 :デフォルトの名無しさん:2015/08/24(月) 20:05:56.36 ID:w9FQ7B6l.net
>>367
対象画像はサイト内では<img>タグにて開かれており、
レスポンスヘッダをみると、コードは404なのですが、
画像としてはimgタグでちゃんと開かれるのです。
もちろん通常アクセス(リファラ込)でも404ですし、
Perl経由でリファラをセットしても404です。
>>368
仰るとおりで、404ですが、ブラウザからでしたらデータはとれているんです。
でも、Perl経由でその画像を取得しようとすると、モジュールの仕様からか、
404の判定が優先されてしまい、どうしても取得できません。。

370 :デフォルトの名無しさん:2015/08/24(月) 20:33:32.51 ID:nAxI1L2Z.net
agentもブラウザと同様なもの設定してみた?

371 :デフォルトの名無しさん:2015/08/24(月) 21:25:16.00 ID:Wm5DDpbg.net
&amp;jcode'convert (\$form_data,"euc","z");
にしたら文字化けしなくなりました。

372 :デフォルトの名無しさん:2015/08/24(月) 21:34:27.54 ID:BAr9V/Jb.net
>>366 >>369
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $res = $ua->get('http://www.google.co.jp/to404.jpg');
SaveAs($res->content, '404file.test');

sub SaveAs {
my $content = shift;
my $filename = shift;
my $fh;
open($fh, '>'.$filename);
binmode($fh);
print $fh $content;
close($fh);
}

試しにこんな風にしたけど404でも問題なくデータは取れてるけども、
取れなかったらAccept-Language、User-Agent、Refererとか、
ブラウザと異なる部分が無いかを確かめるぐらいしかないんじゃないかなあ。

373 :デフォルトの名無しさん:2015/08/25(火) 01:06:45.72 ID:bK3l+CW7.net
LWP::Simple::Cookies

まずimgタグがあるページにアクセスして、cookie保存して、それからjpg取得してみ

374 :デフォルトの名無しさん:2015/08/25(火) 19:23:24.19 ID:19KHv/f4.net
>>372
>>373
大変申し訳ございません、、結論から言うとできました。
というのも当初とある有料レンサバでやっていたのですが、
そこのサーバー側の仕様でどうにもこうにもならなかったようでして、
別サーバーで試しにやってみたところあっけなく、問題なく取得できました。。
Perlのせいにしていた自分に反省します。あと皆さま、本当にご丁寧にありがとうございました。
皆さんへの御礼にTポイント貯まってたので、かわりにちょっとだけ寄付させていただきましたm(_ _)m
http://i.imgur.com/bX7q9ed.jpg

375 :デフォルトの名無しさん:2015/08/25(火) 19:29:37.34 ID:pfa9oRBx.net
俺に寄付しろ

376 :デフォルトの名無しさん:2015/08/26(水) 12:19:13.34 ID:g32nt69a.net
# 以下の記述があからさまに遅いです。(Perlのループ自体が遅いです)
# なにか速くなる方法のご提案があればよろしくお願いします。
# 普段、楽な記述を優先させているため、速くするための妥当な記述がよくわかりません。(何をやってもどうでもいいから速くするならいろいろ手はあるのですが)
# あとおそらく意図した通りに動いてるとは思いますが、これはあからさまに違うだろってのがもしあれば、お願いします。
# なお、pack_widget_all は何度も呼び出されるほか、一度の呼び出しでの出力量が2万行前後です。
#--------------------------------------------
open G_OUT, ">", "g_out.txt";
sub out_print{
while(my $line = shift @::out){
print G_OUT $line . "\n"; #デバッグ用。あまりに大量送信されるので不要な時は消しておく。
print $line . "\n";
}
}

{
#▼%::widgetが保持してるものを成型して送信
my %back; #前回と同じデータを再出力しないための記憶 (受信側が、同じ物と違う物の区別を付けずに全く同じ処理をやり直してしまうため)。
sub pack_widget_all {
foreach my $name (keys %::widget){
foreach my $name2 (keys %{ $::widget{$name}->[1] }){
my $back = join ',', @{ $::widget{$name}->[1]->{$name2} };
next if($back{$name}->{$name2} eq $back); #; 前回と同じ物は再出力しない
$back{$name}->{$name2} = $back;
push @::out, (join ',', $name2, $::widget{$name}->[0], $back);
out_print; #受信側の都合上、小刻みに何度も出力したほうが速かった。perl側やこの質問には関係ない
}
}
push @::out, "pack_widget";
out_print;
}
}

377 :デフォルトの名無しさん:2015/08/26(水) 15:57:28.81 ID:nL2sda9W.net
>>376
クソコードだな、

%::widget とか @::out ってなんだよw

そんな書き方初めて見たわw

378 :デフォルトの名無しさん:2015/08/26(水) 16:07:53.10 ID:nL2sda9W.net
>>376
えとな、まず %:: とか $:: とか @:: な
普通こんな書き方はしないから、:: を消せ。
もちろん単純に消すんじゃないぞ。消して動くようにしろ。

あとな、データ構造の説明をしろ。
特に、%widgetと%backの中身が何か。

あと意味が無いout_print関数はなくせ。

とりあえずそこをやって再提出。

379 :デフォルトの名無しさん:2015/08/26(水) 16:16:50.12 ID:nL2sda9W.net
読む気がしないから、間違ってるかもしれんが、
もしかして、これ「全ての値が同じ場合」とかやってるな?

だから前回と同じものを再出力しないだけなのに、
%backってハッシュになって、いかにも遅そうな
ぐるぐるループしてるわけか。

んなもん、joinして一つの文字列にすれば良い。

my $values = join("\0", values @values)
$back{$values} = 1
とかやれば、前回と同じチェックは単純なチェックで終わるだろ。

そのロジックでいいのかっていうか、間違ってる気がするがね。
前回と全く同じデータが出た場合どうするんだってな。

380 :デフォルトの名無しさん:2015/08/26(水) 16:34:24.56 ID:g32nt69a.net
our 使えばそのまま動くけど、
ベンチが遅くなったので無理でごわすです。
(たしか最速が名前付きのグローバル変数だったと思うけど、カレント空間名は一度しか参照されないのでループによる遅延はないはず。この辺記憶あいまい)

>>379 すみませんが違うです…
それはバグ出るです

381 :デフォルトの名無しさん:2015/08/26(水) 19:11:52.55 ID:rtOTeoRp.net
>>380
myは使わないほうがいい。
ベンチは取ってないけど、keysは使わずに、シミュレートしたほうがいいかもしれない $array[n*2]。

もし$::widget{$name}->[1]->{$name2}が指すリファレンスが変わらないことが保証されるならば、
 $back{$address} = $value もまた保証される。
 そうでないのなら、今までのコードと同じでなければならない。

実行環境に最新に近いPerlが保証されるのならば、%backはクロージャでなくとも構わない。が、これで速くなる量はほぼ0だろう。
ourを使わないのは正解。丁寧な形式から乱雑なourに直す必要はない。ただしmod_perlなどコンパイルが自動維持されない場合に限る。
 ちな動作が速い順序 $main::aaa > $::aaa >>>>> ourした$aaa >= localした$aaa > stateした$aaa >> myした$aaa > 宣言なし$aaa

関数外の変更が可能であるならば、どこが変更された可能性があるのかと言う基準で%::widgetの種類を分ける。
 その際、可読性や保守性ではなく変更の可能性がある場所で区分けする。
または、変更が加えられた際、その場でそれを知ることが出来るのが最も望ましい。
 その際、オブジェクト指向を利用しても良いが、クロージャが好きならそれでも構わない。
 ただし、既存の記述の代入は、全て関数の呼び出しに書き換える必要がある。

保守性が失われても良いのなら、pack_widget_allの先頭で最初に一度だけout_printを呼び、pack_widget_all内では直接printを記述する。
 これで@::outの順位性が崩れることはないはず。ただしタイミングも厳格に同期させている場合はだめ。

unix系であればforkする。これは速い。

その関数だけ見た結論としては、関数内の最適化では難しいように思う。
あと保守性と可読性を重視しすぎ、記述に楽をしすぎ、に感じる。
もしかして、なんでも%::widgetにスタックして、あとから自動判別させればいい、と考えてはいないだろうか?
楽をしたり保守性を考えなければ、60秒が5秒に縮まるのもよくあることよ。

あと、出力行数よりも、$nameのと$name2の量比率を。
もし互換性について間違ってても保証はしない。
むしろこうゆうのを考えるマニアがよくいるので、そうゆうのが出て来るまで待て

382 :デフォルトの名無しさん:2015/08/26(水) 20:34:24.80 ID:nL2sda9W.net
>>380
> our 使えばそのまま動くけど、
ourじゃなくてmy使えって話だよ。

一般的に外から見えるよりも、
中しか見えないほうが速くなる。

383 :デフォルトの名無しさん:2015/08/26(水) 20:52:40.93 ID:rtOTeoRp.net
それはない

384 :デフォルトの名無しさん:2015/08/26(水) 21:47:35.73 ID:kyRbEfPb.net
こんなもんコードの書き方でいくらでも変わるのに
「それはない」もへったくれもなかろう。
コードも書いてないのに、主張すんのはどっちもどっち。

もちろん以下のコードが正義だと言うつもりも毛頭ない。

use Benchmark qw( timethese cmpthese ) ;
use v5.18;

cmpthese timethese ( undef, {
'my' => sub {my $i ; $i = 1 for 100000 },
'our' => sub { our $i ; $i = 1 for 100000 },
'state' => sub { state $i ; $i = 1 for 100000 },
});
Benchmark: running my, our, state for at least 3 CPU seconds...
my: 4 wallclock secs ( 3.10 usr + -0.01 sys = 3.09 CPU) @ 1697152.43/s (n=5244201)
our: 4 wallclock secs ( 3.07 usr + -0.01 sys = 3.06 CPU) @ 1713787.91/s (n=5244191)
state: 3 wallclock secs ( 3.15 usr + 0.01 sys = 3.16 CPU) @ 1659554.11/s (n=5244191)
Rate state my our
state 1659554/s -- -2% -3%
my 1697152/s 2% -- -1%
our 1713788/s 3% 1% --

385 :デフォルトの名無しさん:2015/08/26(水) 22:10:15.12 ID:rtOTeoRp.net
myとtateとourは書式は似てるけど別物だからそのベンチマークでは意味ないかもね
まあ遅いのはそこじゃないと思うが

386 :デフォルトの名無しさん:2015/08/26(水) 22:54:41.30 ID:kyRbEfPb.net
>意味ない
うん。意味ない。
意味ないけど、少なくともこのコードでは、(ourはアンフェアだけど。)
「my > state」
で、あなたの
>stateした$aaa >> myした$aaa
の主張はなり立たない。

だから、
>「それはない」もへったくれもなかろう。

387 :デフォルトの名無しさん:2015/08/26(水) 23:15:23.15 ID:rtOTeoRp.net
何と戦ってるんだ?
君はずいぶん無意味なコードばかり書いてホルホルしてそうだね。推定だけど。
こっちゃ君に用はないよ

388 :デフォルトの名無しさん:2015/08/27(木) 00:46:17.94 ID:VDg17niR.net
>>381
Perlは最適化の際は変数のスコープも直すですか?
冷静に考えてスコープの変更はちょっと出来ないです。(グローバル、レキシカル含めて)

環境はwindowsでPerlはたぶん5.8以上でごわす。実際はほぼ5.20以上だと思うですけど。

>記述に楽をしすぎ、に感じる。
すみません関数の外を直すのは私のやる気にも影響されるです。これ実は一番大事。

$nameと$name2の量は$nameが超大量で$name2がたぶん全部8以下です。
バケットのようなので分けたほうがいいんでしょうね。

>既存の記述の代入は、全て関数の呼び出しに書き換える必要がある。
どのくらい速くなるかは分かりませんが、これやってみるです。
ざっと検索かけたら2000以上出てきたので苦労した挙句にバグりそうな予感が大…

389 :デフォルトの名無しさん:2015/08/27(木) 02:13:30.21 ID:zsRIAfpU.net
指摘された点すら修正しない奴に
レスは付かない。

390 :デフォルトの名無しさん:2015/08/27(木) 09:34:05.12 ID:WH8/GkYNz
データを書き換える度にpack_widget_all()を呼び出してるのだろうけど、
書き換える部分だけ重複するかどうか検査するのが一番楽だな。

391 :デフォルトの名無しさん:2015/08/27(木) 12:16:29.47 ID:EKT+uFsl.net
面白そうだからやってみた。
すでにやったかもしれないけど。というか役にもたたないだろうけど。
use strict;
use warnings;
use Benchmark qw(:all);
$| = 1;
sub NUM (){ 19999 }
my %hash = map{ ($_, 1) } (0..1999);
my @array = map{ ($_, 1) } (0..1999);
my %sub = (
key => sub{ foreach my $k (keys %hash){ $hash{$k} = $hash{$k} } },
sim => sub{ foreach my $n (0..1999){ $array[$n * 2] = $array[$n * 2] } },
Practical => sub{
my @ar = %hash;
foreach my $n (0..(@ar / 2)){ $array[$n * 2] = $array[$n * 2] }
},
);
cmpthese timethese (NUM, \%sub);

Benchmark: timing 19999 iterations of Practical, key, sim...
Practical: 16 wallclock secs (15.77 usr + 0.00 sys = 15.77 CPU) @ 1268.01/s (n=19999)
key: 10 wallclock secs ( 9.45 usr + 0.00 sys = 9.45 CPU) @ 2115.62/s (n=19999)
sim: 6 wallclock secs ( 5.94 usr + 0.00 sys = 5.94 CPU) @ 3365.14/s (n=19999)
Rate Practical key sim
Practical 1268/s -- -40% -62%
key 2116/s 67% -- -37%
sim 3365/s 165% 59% --
結論
ハッシュは使うな
個数が分からない配列も使うな
配列の数をPerlに数えさせるな
以上で昼休み15分消化

392 :デフォルトの名無しさん:2015/08/27(木) 20:16:15.75 ID:H5OCxJPQ.net
use Benchmark qw( timethese cmpthese ) ;
use feature qw( state);
no warnings ;
no strict ;

cmpthese timethese ( undef, {
'foo' => sub { $i = 1 for 1 .. 100 },
'local' => sub { local $i = 1 for 1 .. 100 },
'my' => sub {my $i = 1 for 1 .. 100 },
'our' => sub { our $i = 1 for 1 .. 100},
'state' => sub { state $i = 1 for 1 .. 100},
'main' => sub { $main::i = 1 for 1 .. 100},
'main2' => sub { $::i = 1 for 1 .. 100 },
});

393 :デフォルトの名無しさん:2015/08/27(木) 20:17:51.86 ID:H5OCxJPQ.net
Benchmark: running foo, local, main, main2, my, our, state for at least 3 CPU seconds...
foo: 4 wallclock secs ( 3.17 usr + 0.00 sys = 3.17 CPU) @ 114473.19/s (n=362880)
local: 3 wallclock secs ( 3.12 usr + 0.00 sys = 3.12 CPU) @ 60726.60/s (n=189467)
main: 3 wallclock secs ( 3.10 usr + 0.01 sys = 3.11 CPU) @ 105601.29/s (n=328420)
main2: 3 wallclock secs ( 3.06 usr + 0.00 sys = 3.06 CPU) @ 114251.31/s (n=349609)
my: 2 wallclock secs ( 3.15 usr + 0.01 sys = 3.16 CPU) @ 87341.77/s (n=276000)
our: 3 wallclock secs ( 3.10 usr + 0.01 sys = 3.11 CPU) @ 112414.47/s (n=349609)
state: 4 wallclock secs ( 3.07 usr + 0.00 sys = 3.07 CPU) @ 160466.12/s (n=492631)
Rate local my main our main2 foo state
local 60727/s -- -30% -42% -46% -47% -47% -62%
my 87342/s 44% -- -17% -22% -24% -24% -46%
main 105601/s 74% 21% -- -6% -8% -8% -34%
our 112414/s 85% 29% 6% -- -2% -2% -30%
main2 114251/s 88% 31% 8% 2% -- -0% -29%
foo 114473/s 89% 31% 8% 2% 0% -- -29%
state 160466/s 164% 84% 52% 43% 40% 40% --

394 :デフォルトの名無しさん:2015/08/29(土) 00:53:19.79 ID:g7aWBHc9.net
>>388
もういないだろうけど、本当に速くしたいんだったら、最初からそのつもりで設計する
まるでC(≠C++)であるかのように記述するとそれなりに速くなると思うけど、Perl使う意味もなくなる

>Perlは最適化の際は変数のスコープも直すですか?
そこをあとから直したりはしない
作る物を作ってから最適化
グローバルにせよレキシカルにせよ、やるなら最初から全部やり直し

俺の勘ではたいして遅くないと思うんだけど、その記述
どのくらいnextが入るのかは知らんけど、たかが数万行
それで遅かったりハッシュで問題が出るほどならPerlはやめときな

でもそんなことまではしないか、出来ないのだろう。だから現状で満足するのも普通の選択
それに速度主義者はニーモニックで最適化して誰も読めない(解析出来ない)スパゲティになっても遅いと言い始める
時間は0にはならんことよ

395 :デフォルトの名無しさん:2015/08/29(土) 08:57:06.58 ID:WZg0ljDs.net
>>384,380
まわりくどい
態々、ベンチ結果貼らんでも
$ perl -Mstrict -Mwarnings -MO=Deparse -le '{ my $i = 1 } ; { our $i = 1 } ; $main::i = 1 ; $::i = 1 ; $i = 1'
実行させれば、回答者の件の行の主張が、どれだけ頓珍漢かは分る

396 :デフォルトの名無しさん:2015/08/29(土) 13:25:12.87 ID:g7aWBHc9.net
変数の話はしてもしょうがないでしょう
それ以前に見事に >>377-388,>>382 これが全部間違ってるのだが
ここまで連打で知ったかぶって嘘だけ書けるのもすごい


でな、>>376がおかしいのは毎回全チェックを入れるところ
どんな使いかたされてるかは知らんけど、widgetが10万行として、
widgetへの代入が2回だけありました、pack_widget_allで全チェックしたのち、その2行分を出力します。
まだ同じことをします。なんて繰り返しだったら目も当てられない。

widgetへの代入をインスタンスの呼び出しで統一すれば何回も同じチェックをする必要はない
これはさすがに作り直すに値するんじゃないかな
いくらめんどうくさがりでも

397 :デフォルトの名無しさん:2015/08/29(土) 13:26:28.64 ID:g7aWBHc9.net
盛大に安価の範囲間違った
許せーー

398 :デフォルトの名無しさん:2015/08/29(土) 13:56:12.84 ID:haT66cVy.net
> これはさすがに作り直すに値するんじゃないかな

だから俺が最初に言ったじゃん。
可読性低いからまずコードを書き直せって。
それやらんやつにレスはしないよ

399 :デフォルトの名無しさん:2015/08/29(土) 14:12:32.69 ID:WZg0ljDs.net
>>396
全部突っ込んだらきりがないんだよ
ID: rtOTeoRp のレスは。

400 :デフォルトの名無しさん:2015/08/29(土) 14:18:33.70 ID:g7aWBHc9.net
>>398
レスしないならしないでそうしてほしいんだが
あんた今まで全部間違ってるよ

401 :デフォルトの名無しさん:2015/08/29(土) 14:20:01.84 ID:g7aWBHc9.net
レスが増えるのもこうゆう夏休み系が出てきた時だけってのもなんだかな

402 :デフォルトの名無しさん:2015/08/30(日) 01:35:04.28 ID:28DrIhRn.net
setlocale(LC_ALL, "");
printf("%'d\n",123456789);

これをperlで書くとどのようになるでしょうか

403 :デフォルトの名無しさん:2015/08/30(日) 12:52:50.53 ID:FzpJCTFz.net
use POSIX qw(setlocale LC_ALL);
setlocale(LC_ALL,"");
printf("%d\n", 123456789);

404 :デフォルトの名無しさん:2015/08/30(日) 15:16:11.12 ID:28DrIhRn.net
ありがとうございます
なぜか出力が違います

405 :デフォルトの名無しさん:2015/08/30(日) 15:30:28.03 ID:VBiBUr/D.net
my @array = (1234567890.1234);
foreach (@array){
1 while s/^([^\.\D]+)(\d{3})/$1,$2/;
print;
}
おそらくこうでしょう。
Perlのprintfは同じじゃないですし普通は使わないと思います。

406 :デフォルトの名無しさん:2015/08/31(月) 00:53:41.53 ID:5oSj39BW.net
>>405
やっと意味が分かりました
ありがとうございます

407 :デフォルトの名無しさん:2015/09/10(木) 07:40:12.03 ID:VXdhBPLa.net
特定の条件の時、一度ループを終了(last)して再度ループを最初からやり直したいのですが、
以下の制御構造は内部のスタックは狂ったりしないでしょうか。
foreachに対するlastを記述していません。

LABEL:{
 foreach my $n (@array){
   #〜なんらかの処理〜
   redo LABEL if($n); # 一度ループを終了して最初からやり直したい。
 }
}

408 :デフォルトの名無しさん:2015/09/13(日) 00:16:28.86 ID:nrUJjYfy.net
my @array_org = @array
while (my $n = shift @array) {
  # 〜なんらかの処理〜
  if ($n) {
    @array = @array_org;
  }
}

409 :デフォルトの名無しさん:2015/09/13(日) 08:42:47.64 ID:aY0WQWM2.net
$ perl -le 'my @d = 0 .. 9 ; for my $n ( @d ){ $n = undef } print join q{;}, @d '
;;;;;;;;;
$ perl -le 'my @d = 0 .. 9 ; for my $k ( @d ){ my $n = $k ; $n = undef } print join q{;}, @d '
0;1;2;3;4;5;6;7;8;9

単に、このレベルの質問?
redo 全く無関係

410 :デフォルトの名無しさん:2015/09/13(日) 10:40:48.91 ID:HkNeW234.net
>以下の制御構造は内部のスタックは狂ったりしないでしょうか。
しない

411 :デフォルトの名無しさん:2015/09/14(月) 22:58:53.62 ID:DgKRXoMO.net
スレッドについて教えてください。環境はwin7 ActivePerl。

以下を実行すると、当たり前だが 1 2 1 2 ... と改行されて表示される。
でも、★1にある改行を外すと何も表示されず、Ctrl+Cで終了させても何もない。
更に★2行を丸ごと消すと、 121212121212... と延々と表示される。
なぜこんな動作になるの?

my $t1 = threads->new(\&loop, 1);
my $t2 = threads->new(\&loop, 2);
$t1->join;
$t2->join;

sub loop{
my $v = shift;
while(1){
print $v."\n"; ★1
sleep 1; ★2
}
}

412 :デフォルトの名無しさん:2015/09/15(火) 00:07:53.40 ID:lLlN6+xs.net
>>411
標準出力は改行来るまでキャッシュされるから。

改行が来たらドンっと出る。
あと、ある程度キャッシュが貯まっても出る。
sleep挟まないとガーッと回ってどんどん貯まるから出る。

ラインバッファをオフにするとかすると
改行しなくても出るようになる。

413 :デフォルトの名無しさん:2015/09/15(火) 00:30:14.97 ID:474V8Q6+.net
$|=1; のこと。

414 :デフォルトの名無しさん:2015/09/15(火) 01:13:54.01 ID:clufgPym.net
なるほど
ありがとう、勉強になりました

415 :デフォルトの名無しさん:2015/09/15(火) 08:37:56.97 ID:bdsDky8L.net
異なるn個の数字からr個取り出す全組み合わせを表示するやり方を教えて

416 :デフォルトの名無しさん:2015/09/15(火) 21:57:03.82 ID:474V8Q6+.net
http://search.cpan.org/~allenday/Math-Combinatorics-0.09/

use Math::Combinatorics;

my @n = qw(a b c);
print "combinations of 2 from: ".join(" ",@n)."\n";
print "------------------------".("--" x scalar(@n))."\n";
print join("\n", map { join " ", @$_ } combine(2,@n)),"\n";

combinations of 2 from: a b c
------------------------------
a b
a c
b c

417 :デフォルトの名無しさん:2015/09/16(水) 08:04:20.82 ID:+0ylx/BY.net
>>416
レンタルサーバーがmathモジュール入ってないのでモジュールを使わない方法でお願いします

418 :デフォルトの名無しさん:2015/09/16(水) 08:55:40.92 ID:nf18HxN0.net
http://www.geocities.jp/m_hiroi/linux/perl12.html#chap02

419 :デフォルトの名無しさん:2015/09/16(水) 13:34:47.42 ID:LGFhZh75.net
>>417
これはPure Perlモジュールなので
ファイルをコピーしてライブラリのパスを
調整するだけで使えるよ。

この技術(って言う程でもないがw)をマスターすれば、
さまざまなライブラリを使えるようになるので
できるようになったほうがいい。

420 :デフォルトの名無しさん:2015/09/17(木) 20:46:31.36 ID:lPbqQua0.net
$hashref[$i] にハッシュのリファレンスが入っている

このまま使うと煩雑なので、
%hash = %{$hashref[$i]}
のようにすると、
$hash{'key'}
のようにアクセスできる

でもこれは、ハッシュごとコピーしているので、あまりやりたくない
\%hash = $hashref[$i]
みたいなことができればいいけど、それはできない
なんとかいい方法はないものか

421 :デフォルトの名無しさん:2015/09/17(木) 21:19:24.68 ID:OTZMM8Po.net
意味がよく分からんが
my $h = $hashref[$i];
$h->{'key'};
まさかこれのこと・・・ではないと思うが

422 :デフォルトの名無しさん:2015/09/17(木) 22:14:36.60 ID:SaZ5cJAP.net
>>420

$hashref[$i]->{key};

または

]->{ の間の -> は省略化なので単に

$hashref[$i]{key};

公式のマニュアル perlref をはじめとしていろいろなところに書いてある。
Perlはこういうところのconvenienceは考えて設計されている。

423 :デフォルトの名無しさん:2015/09/17(木) 22:20:55.26 ID:SaZ5cJAP.net
もしかして
$hashref[$i]->{key};
$hashref[$i]{key};
こういう書き方を「煩雑」と書いているのなら
>421のreferenceをスカラーに入れる書き方だね。

424 :デフォルトの名無しさん:2015/09/17(木) 22:59:30.30 ID:lPbqQua0.net
やりたいのは、
$hash{'key'}
こういう書き方

構造体の真似事がしたくて、Cみたいに、
hash.key と書けるのが一番タイプ数が少ない

425 :デフォルトの名無しさん:2015/09/17(木) 23:08:13.54 ID:OTZMM8Po.net
抽象型の参照渡しのことか?

426 :デフォルトの名無しさん:2015/09/17(木) 23:22:19.19 ID:sALNH7F9.net
>>424
タイプ数が少し増えたって
可読性には何の影響もないだろ?

重要なのは可読性であって
そんなわずかなタイプ数の違いじゃないだろ。

427 :デフォルトの名無しさん:2015/09/17(木) 23:46:49.01 ID:lPbqQua0.net
能書きはどうでもいいけど、とにかく不可能なんだね

428 :デフォルトの名無しさん:2015/09/18(金) 00:19:10.19 ID:K2vhYwr7.net
真似事もなにも単一のハッシュで完全な上位互換だが

429 :デフォルトの名無しさん:2015/09/18(金) 11:39:03.55 ID:eERM2gdU.net
>>420
http://perldoc.jp/docs/perl/perlmod.pod#Symbol32Tables

#!/usr/bin/perl
use strict;
use warnings;

my $i = 6;
my @hashref = map +{ a => $i--, b => $i-- }, 1 .. $i / 2;

our %hash;
*hash = $hashref[$i];
print "a=$hash{'a'} b=$hash{'b'}\n";

430 :デフォルトの名無しさん:2015/09/18(金) 19:08:20.61 ID:hGzfSnPs.net
おおー、出来るんだ

\% じゃなくて * だよ、で済んだのに、
なんでわざわざ面倒なやり方を教えようとしたんだろう

431 :デフォルトの名無しさん:2015/09/18(金) 19:16:26.89 ID:7DIRmH9E.net
シンボルテーブルを触るのは
一般的なやり方じゃないから。

432 :デフォルトの名無しさん:2015/09/18(金) 19:26:47.22 ID:hGzfSnPs.net
何かの変数のエイリアスを作りたい、というのはどの言語でも自然な発想でしょう

perlで特にそれが忌避される理由が判らない

433 :デフォルトの名無しさん:2015/09/18(金) 20:01:43.84 ID:+sKaLThi.net
>>421で済むから、需要が無い。
で、話が終わるからじゃねーの。

更に、今となっては、for keys $r とか書ける時代になってるし。

434 :デフォルトの名無しさん:2015/09/18(金) 20:04:14.91 ID:K2vhYwr7.net
型グロブは20年前の流行だから

435 :デフォルトの名無しさん:2015/09/18(金) 20:26:48.46 ID:uVB9l/bg.net
$hash{key} と $hash_ref->{key} にそんな耐えがたい差があるのか…

436 :デフォルトの名無しさん:2015/09/18(金) 20:47:10.40 ID:uVB9l/bg.net
ttp://perldoc.jp/docs/perl/5.22.0/perl5220delta.pod#Aliasing32via32reference
手元にあるのが5.20で試せなかったけど5.22なら \%hash で出来そうな記述が

437 :デフォルトの名無しさん:2015/09/18(金) 21:02:14.48 ID:hGzfSnPs.net
やっぱり需要はあるんだな

perlの哲学として、暗黙のデリファレンスはしない、というのがあるので、
リファレンスとして扱ってる限りちょっと面倒になるのは仕方ないと思うけど、
それは別名を作ることを妨げるものでもない

438 :デフォルトの名無しさん:2015/09/18(金) 21:56:27.99 ID:K2vhYwr7.net
おたくもけっこう能書き好きね

439 :デフォルトの名無しさん:2015/09/19(土) 01:35:51.26 ID:kuDThZXk.net
>>435
> $hash{key} と $hash_ref->{key} にそんな耐えがたい差があるのか…

これをしないで短く書きたい。
という希望を叶えるために、

our %hash;
*hash = $hashref[$i];

これだけのコードを追加で書いてるからなw

440 :デフォルトの名無しさん:2015/09/19(土) 09:23:10.69 ID:34HrKgNM.net
別名定義部分は一箇所だけだろ

441 :デフォルトの名無しさん:2015/09/19(土) 11:31:26.96 ID:uSgpwfZq.net
perlはshiftを使うのがすごくめんどうに感じることはある

val.fst
$val{'fst'}
後者は3倍くらいタイプに時間かかる
文章の延長の感覚でタイプ出来ないんだよね

442 :デフォルトの名無しさん:2015/09/19(土) 18:31:48.26 ID:kuDThZXk.net
× $val{'fst'}
○ $val{fst}

自分でタイプ数増やしてるんじゃねーよw

443 :デフォルトの名無しさん:2015/09/20(日) 07:25:23.56 ID:V0uh8XKx.net
実際にはタイプしてプログラムは作られない。コピペで作られる。

444 :デフォルトの名無しさん:2015/09/21(月) 09:30:17.66 ID:A7LfSNZR.net
業界内では、インターネットの普及が、プログラミングできるようになったと勘違いするバカが増える
原因の一つになっているとする危惧の声が上がっている

445 :デフォルトの名無しさん:2015/09/21(月) 17:48:46.77 ID:I6tq2NCA.net
それどこの業界?

446 :デフォルトの名無しさん:2015/09/21(月) 17:58:14.12 ID:aZYOVHiY.net
隣の教室とかだろう?

447 :デフォルトの名無しさん:2015/09/21(月) 23:46:10.70 ID:AhyKUb5y.net
ハーバード爆熱教室

448 :デフォルトの名無しさん:2015/09/23(水) 01:04:24.93 ID:c1Tz5tb8.net
社内のツールが昔からPerlだけで一貫されてるだかとのことで、
らくだ本なるものを貸してもらった。(押し付けられた)。
まぁ基本元々あるスクリプトを使うだけで済むらしいが、1週間の休みと引き換えに全部読んで来いだとよ。

今5日目。
言いたいことがいっぱいある。
分厚すぎる。
覚え切れるわけない。
抽象化しすぎ。多すぎる。どんだけだよ。
覚え切れない。
遅そう。これは無条件で遅いだろ。
それでも少しでも速そうな記述を書くと読みにくくなりそう。

しかもこれどう見てもプログラムじゃない。
ただの莫大な仕様を持ったアプリケーション。
コーダーにやらせとけよスクリプトは。

ああ全部CとFORTRANで書き直したい


今読んでるのがオブジェクト指向の所。
ここが一番意味わからん。
なんでこんな実装になってんだよ。
突っ込みきれないほどおかしいだろこれ。
使いたくない。

449 :デフォルトの名無しさん:2015/09/23(水) 01:33:43.58 ID:sohVsCxT.net
Cで書くより10倍楽だけどな

バイナリの扱いにくさはCの100倍だし
配列の書き方のうんこっぷりはCとどっこいだが

450 :デフォルトの名無しさん:2015/09/23(水) 01:48:27.48 ID:G8G+Dk45.net
>>448
Perlについての罵倒スレ 63箱目
http://peace.2ch.net/test/read.cgi/tech/1392639772/
Perlのオブジェクト指向って無理やり実装だなw
http://kanae.2ch.net/test/read.cgi/php/1212947304/
プログラマの雑談部屋 [転載禁止](c)2ch.net
http://kanae.2ch.net/test/read.cgi/prog/1428895170/
【総合】 Webprog板質問雑談スレッド 2
http://kanae.2ch.net/test/read.cgi/php/1348670450/
おもしろいコピペがあったら貼るスレinマ板part42 [転載禁止](c)2ch.net
http://kanae.2ch.net/test/read.cgi/prog/1431735879/

451 :デフォルトの名無しさん:2015/09/23(水) 09:54:46.99 ID:fFX5DRXp.net
>>448
??「早く質問しろよ」

452 :デフォルトの名無しさん:2015/09/23(水) 14:26:53.78 ID:RxLhKlLu.net
これまでVBやJavaをやっていましたがPerlへ移行したいと思っています。
しっかり文法を学びたいのですが、
「::」や、「->」「=>」と言った記号について丁寧に説明されている本か
サイトを教えていただけませんでしょうか。

453 :デフォルトの名無しさん:2015/09/23(水) 15:31:44.67 ID:G8G+Dk45.net
>>452
>>3-5

454 :デフォルトの名無しさん:2015/09/23(水) 15:57:35.98 ID:RxLhKlLu.net
>>453
if文やfor文、$_などと違って、
:: や -> って暗黙の了解になってません?

455 :デフォルトの名無しさん:2015/09/23(水) 18:46:06.25 ID:MSwfmqLK.net
perlのオブジェクト指向は、後付けと思えないほどシンプルで使える

いろいろ難しいこと言うけど、要は名前空間の管理なんだよ、という
オブジェクト指向の本質そのままのインプリメント

456 :デフォルトの名無しさん:2015/09/23(水) 19:55:19.53 ID:rS2z7ubJ.net
C言語でも特殊なルールをつくってああやって、こういう風に
やればオブジェクト指向はできる。アセンブラでもできるだろう。
だが、それでやろうとするのは、間違った考えだ。

言語の発展というのは、単純な命令を組み合わせてできたパターンから
概念を生み出し文法を定義してきた。

forだってアセンブラで見れば、比較命令とジャンプ命令があればできる。
だがそれでは使いにくいから、ループという概念を生み出して
ループのための命令を文法に追加した。そこからさらに発展して
イテレータとかまあいろいろあるわな。

話を戻すと、Perlはオブジェクト指向のための文法を入れなかった。
オブジェクト指向というパターンが存在するのに、それを文法に入れずに
人が頑張って特殊なルールを作ってやろうとしている。

ルールが少ないという意味でシンプルだろうが、
プログラミングするという意味ではシンプルではない。

457 :デフォルトの名無しさん:2015/09/23(水) 19:59:37.65 ID:MSwfmqLK.net
既にあるパッケージを楽に使うだけなら十分

新しく作ろうとすると設計が大変なのは、どの言語でも同じ
オブジェクト指向は全員が楽できるような夢の技術ではない

458 :デフォルトの名無しさん:2015/09/23(水) 20:09:24.58 ID:c1Tz5tb8.net
>>448-449, 443-445
んで、だから?
馬鹿しかいねぇ

459 :デフォルトの名無しさん:2015/09/23(水) 20:18:56.03 ID:rS2z7ubJ.net
>>457
話が違ってる。

Perlは"言語の文法"がシンプルすぎて
"オブジェクト指向"をシンプルにやることが出来ない
ってことだよ。

シンプルっていう言葉でごまかしてるけど、
誰に対してシンプルなのかを正しく認識しないとだめ。

殆どの人はPerlという言語を作ってるわけじゃない。
言語をシンプルに使えるということが重要。
その為に実装者はシンプルな実装でやめずに、がんばれや〜

460 :デフォルトの名無しさん:2015/09/23(水) 21:11:01.20 ID:vTCFtDkl.net
>>459
Mooseでも使ったら?

461 :デフォルトの名無しさん:2015/09/23(水) 23:29:11.30 ID:fFX5DRXp.net
おい、質問しろよ

462 :デフォルトの名無しさん:2015/09/24(木) 01:04:31.24 ID:JIAkcEUy.net
>>454
全てマニュアルに明記されている。
:: (パッケージセパレータ): http://perldoc.jp/docs/perl/perlmod.pod
-> (矢印演算子): http://perldoc.jp/docs/perl/perlop.pod#The32Arrow32Operator

463 :デフォルトの名無しさん:2015/09/24(木) 05:59:43.68 ID:1EmTlpBT.net
そもそも今どきオブジェクト指向をネタに叩く奴って…

464 :デフォルトの名無しさん:2015/09/24(木) 07:19:17.15 ID:BiAksuKa.net
Perlが何も進化してないのだからしょうがない。

465 :デフォルトの名無しさん:2015/09/24(木) 18:58:27.14 ID:+UNTIAIN.net
>>462
本当にありがとうございます。
僕が探していたのはこれです。

466 :デフォルトの名無しさん:2015/09/24(木) 22:16:09.59 ID:Z8bJCWrt.net
いえいえ
それほどでも

467 :デフォルトの名無しさん:2015/09/25(金) 05:47:25.11 ID:3unY/bbY.net
perldocが「僕が探していたのはこれ」とか、ネタかよw

468 :デフォルトの名無しさん:2015/09/25(金) 08:10:23.47 ID:3ZesCZUY.net


perldocに含まれる、perlmod.pod や perlop.pod#The32Arrow32Operator の
ことだろう?

何いってんだか意味わかんない。

469 :デフォルトの名無しさん:2015/09/25(金) 18:57:05.83 ID:Of/BacRY.net
そりゃ、「マニュアル読め」って指摘されてんのに
「僕が探していたのはこれ」ってレスりゃ、突っ込み入るよ

470 :デフォルトの名無しさん:2015/09/25(金) 19:03:03.91 ID:Of/BacRY.net
てめー、探してもいないくせに、って意味でね。

471 :デフォルトの名無しさん:2015/09/25(金) 19:07:51.82 ID:3ZesCZUY.net
マニュアルと言っても何ページもあるわけだし、
探していたページはこれっていっても何の不思議もないのでは?

472 :デフォルトの名無しさん:2015/09/25(金) 21:05:35.04 ID:QgiMtBoz.net
ディレクトリ構造とファイル一覧を取得したい
cmd.exeから dir /s とやってもできるけど、やたらと時間がかかる
似たようなことを再帰的にreaddir()でやっても余計に遅いので、
fork()か何かで並列にやれば速いんじゃないかと思ったけど、
実装がさっぱり判らない

473 :デフォルトの名無しさん:2015/09/25(金) 22:27:34.66 ID:pfLpBFTm.net
cmd.exeってwindows?なのにfork?

まぁ可能な限り意訳して受け止めるとして、
先にプロセス数と割合を。(場合によっては一度検査するプログラムを走らせて定期的に記憶するなど)。
そして数と割合をそれぞれ割り当て。
Perlはその管理のみに留めて使用すること。

それでSSDにしても遅いと思うならもう限界。

474 :デフォルトの名無しさん:2015/09/25(金) 23:19:37.07 ID:UlZdBulH.net
>>472
ディスクアクセスに時間が掛かってるだろうから
並列に処理しても意味は無い。

475 :デフォルトの名無しさん:2015/09/25(金) 23:56:47.16 ID:QgiMtBoz.net
相手はサーバなので、ファイル情報くれ、次の情報くれ、みたいなことを
ちまちまとやってて遅いと想像してる

っていうか、そんな話はどうでもいいんだよ

forkしてファイル情報持ってこさせて、それをどう集めるのか
プロセス間通信するのか
最大のプロセス数を制限したいけど、どうするのか
そのへんに詳しい人はいない?

476 :デフォルトの名無しさん:2015/09/26(土) 00:00:48.43 ID:o/KY4BpZ.net
馬鹿ちゃうんか

477 :デフォルトの名無しさん:2015/09/26(土) 01:05:19.48 ID:NLV89G9+.net
>>475
http://perldoc.jp/docs/perl/perlperf.pod
http://perldoc.jp/docs/perl/perlthrtut.pod
http://perldoc.jp/docs/perl/perlfork.pod
http://perldoc.jp/docs/perl/perlipc.pod

478 :デフォルトの名無しさん:2015/09/26(土) 17:59:20.39 ID:VNbKJFfm.net
1フォルダ内のファイル数が多いのが遅い理由。2階層とか3階層とかにして、1つのフォルダに入るファイル数を減らすとよい。それならば dir で十分の速度が出る。ファイル一覧の取得方法を変えてもあまり速くはならない。

479 :デフォルトの名無しさん:2015/09/26(土) 18:19:26.06 ID:SmPakz2h.net
知らないことを聞かれても何か答えないといられないんだな

480 :デフォルトの名無しさん:2015/09/26(土) 20:28:00.59 ID:xWCYZ6+4.net
>>472
perlでやりたいのなら、
use File::Find;
これを使うと楽

481 :デフォルトの名無しさん:2015/09/27(日) 00:38:29.13 ID:hWonz5kx.net
>>472
相手がs3のようなクラウドストレージならfuse経由ではなく
REST APIを並列で叩いて高速化出来るよ。

482 :デフォルトの名無しさん:2015/09/27(日) 00:43:55.39 ID:MWIygilv.net
>>472
『すぐわかる Perl』あるいは『すぐわかるオブジェクト指向 Perl』にそのもの
ずばりが書かれている。
forkの話ならPerlクックブックがよい。
誰でもいつか通る道だ。まあ、がんばりたまえ。

483 :デフォルトの名無しさん:2015/09/28(月) 01:47:05.01 ID:ndjcMxsV.net
過去ログで
my @files=split(/\n/,`dir /s /b *.* 2>NUL`);
見つけてうまくいきました。

484 :デフォルトの名無しさん:2015/09/28(月) 21:11:57.41 ID:WfjXYy6D.net
>>483 だけ読んで、やっぱりPerlって分かりにくいと思いました。

485 :デフォルトの名無しさん:2015/09/28(月) 21:49:11.62 ID:Aor/5DQQ.net
そりゃ>>483はPerlのコードじゃないものw
シェルスクリプトを呼び出してる。

486 :デフォルトの名無しさん:2015/09/28(月) 22:43:31.47 ID:WfjXYy6D.net
/が多いからDOSの結果に対して正規表現の置換を実行してるのかと思った。
よく見ると全然そんなことしてないのね。

487 :デフォルトの名無しさん:2015/09/29(火) 06:00:19.37 ID:lP+91DkH.net
dirコマンドはプログラミング以前だから知らないと話しにならないよ

488 :デフォルトの名無しさん:2015/09/30(水) 01:30:17.45 ID:LX543PJu.net
chomp(my @files=`dir /s /b *.* 2>NUL`);
正規表現は皮がむけてからでも遅くはない
おれも結構、手擦ったほう

489 :デフォルトの名無しさん:2015/09/30(水) 06:10:28.94 ID:qavjpflM.net
VBScript流の正規表現に慣れてるから
Perlの正規表現はグローバル設定やサブマッチが使いにくい

490 :デフォルトの名無しさん:2015/10/04(日) 17:02:01.32 ID:hS6rgTy5.net
VBScriptの前にcmd覚えて欲しいなあ

491 :デフォルトの名無しさん:2015/10/05(月) 05:48:03.83 ID:iwULxFWZ.net
#windows7
open FILE, '>', "test.html";
print FILE $print;
close FILE;
`test.html`; #ファイルダブルクリックと同じ動作

このような感じでテストファイルを開いたとき、
元々 test.htmlがあった場合はうまく行くのですが、
ファイルが存在しなかった場合、開かれるのにかなりの時間がかかり、
cmd.exeからperlに制御が戻ってこなくなります。(関連プロセスは全部ゾンビになります。ファイルにロックがかかって居た場合はadministratorでも手出しが出来なくなって大変です)。

原因はなんでしょうか

492 :デフォルトの名無しさん:2015/10/05(月) 08:44:17.89 ID:E3yE+rIA.net
>>491
こちらの環境(Win7のコマンドプロンプト上で ActivePerl 5.16.3)では再現しない。

>perl -e "`nonexistent.html`"
'nonexistent.html' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

→すぐにエラーメッセージが出て終了。

>perl -e "`existent.html`"

→関連付けされたブラウザ(Firefox)が起動している場合はタブが開いて終了。
起動していない場合はブラウザが立ち上がり、ブラウザを終了させるまで待機。

バッククォート演算子はコマンドの出力を得る為の物なので、単に別プロセスを
立ち上げたい場合は system か exec を使う方がいい。

>perl -e "exec('C:/PROGRA~1/MOZILL~1/firefox.exe', 'nonexistent.html')"

→コマンドはすぐに終了し、ブラウザが立ち上がりファイルが無い旨表示される。

http://perldoc.jp/docs/perl/perlfaq8.pod#Whats32wrong32with32using32backticks32in32a32void32context63
http://perldoc.jp/docs/perl/perlipc.pod

493 :デフォルトの名無しさん:2015/10/05(月) 10:35:24.47 ID:iwULxFWZ.net
違う違う。
openで新規にファイルが出来た場合にcmd.exeからperlに制御が戻ってこなくなる。
もとからあったファイルをopenで開いた場合は制御が戻ってくる。

494 :480:2015/10/05(月) 12:05:22.55 ID:E3yE+rIA.net
>>493
以下のようなスクリプトで flock したまま閉じずに呼んでさえも、

>perl test.script text
create test.html
プロセスはファイルにアクセスできません。別のプロセスが使用中です。

とエラーを吐いて即座に終了するだけで、こちらの結果は変わらない。

#!/usr/bin/perl -w
use strict; use Fcntl qw(LOCK_EX);
open my $fh, '>', my $file = 'test.html' or die $!;
flock $fh, LOCK_EX;
warn "create $file\n";
print $fh $ARGV[0];
# close $fh or die $!;
# -e $file and warn "exist $file\n";
`$file`; # exec('C:/PROGRA~1/MOZILL~1/firefox.exe', $file);
__END__

問題の本質は

・open と close が成功しているか確認していない。
・ファイルの存在を確認していない。無い場合でも有る場合と同じ処理を強行している。
・新規に子プロセスを立ち上げた場合はそれを終了させないと進まない、という挙動は
 望んでいるものか

の3点で、「ファイルに真っ当にアクセスできるか」は関係しても
「スクリプト中で作られたものか」は関係無い。前者がディスクキャッシュや
ネットワーク越し環境やアクセス権限によって困難なのなら、相応の対処を
呼び出し前にやるべきだ。

495 :デフォルトの名無しさん:2015/10/05(月) 12:25:14.34 ID:iwULxFWZ.net
いや違うと思うけど。
windowsの問題だと思いますが。
例えばディスクに対するキャッシュとか

496 :デフォルトの名無しさん:2015/10/05(月) 12:40:26.82 ID:iwULxFWZ.net
いろいろテストしたけど結局よく分からんかった
まぁ付き合ってくれてありがとう

497 :デフォルトの名無しさん:2015/10/05(月) 16:05:45.00 ID:qy+Vl9o/.net
ファイル作成時と言うあたりセキュリティソフトが腐ってたりして

498 :デフォルトの名無しさん:2015/10/06(火) 09:27:47.43 ID:OYbykycg.net
>>497
ありえそうな気もするけど、
ファイルがスムーズに開けなかったからってゾンビになるcmd.exeってどうなの
しかも最終的には開けてるから処理待ちの部類でもなくcmdのバグとしか思えない

499 :デフォルトの名無しさん:2015/10/06(火) 16:47:40.56 ID:IvHNq8Az.net
どうせゾンビじゃないだろw
cmd自体は正常。

500 :デフォルトの名無しさん:2015/10/06(火) 17:09:37.10 ID:OYbykycg.net
なにを根拠に?

501 :デフォルトの名無しさん:2015/10/06(火) 17:44:36.61 ID:IvHNq8Az.net
何を根拠にゾンビだと言ってるの?
そもそもWindowsにゾンビという概念はない。

502 :デフォルトの名無しさん:2015/10/06(火) 18:24:44.28 ID:OYbykycg.net
なぜ質問で返す?
俺が聞いたのは情報も得てない状態で>>499を判断するに至った理由。
筋としてそちらが先にべき。

いじわるしてもしょうがないから、昨日テストした結果。
書いたところで良い回答が得られるとも思えないから一回だけね。

実行プロセスが擬似的に置換されていること。
プロセスからの入力が "ほぼ"間違いなくcmd.exe側で捨てられていること。
cmdが終了せずに入力を待っていること。
その際必要な処理は終了していること。
事実上プロセスの終了手段が関係のない外部(タスクマネージャーなど)から二つのプロセスを殺す以外の方法がないこと。
再現性は100万ループで2〜3回程度。(予想。途中で処理が止まるので正確には分からない)。ただしなるときは一発でなる。原因は不明。

言っとくけど役に立たない言葉遊びはいらないよ

503 :デフォルトの名無しさん:2015/10/06(火) 18:29:22.87 ID:IvHNq8Az.net
いや、先に質問しているのは俺。

「どうせゾンビじゃないだろw」は質問。

「cmdが終了せずに入力を待っていること」はゾンビじゃない。
ただ入力をを待っているだけ。

504 :デフォルトの名無しさん:2015/10/06(火) 18:31:53.69 ID:IvHNq8Az.net
そもそもファイルを開けないで待っている状態っていうのは
ファイル読み込みがブロックされたっていうんだよ。
こういうのはNFSでよく起きる話。

ゾンビじゃない。OSにもcmdにも問題ない。
仕様通りの動作で、ブロックしているしている奴が悪い。

505 :デフォルトの名無しさん:2015/10/06(火) 18:34:23.05 ID:OYbykycg.net
まぁ何も読んでないって事は分かった

506 :デフォルトの名無しさん:2015/10/06(火) 18:37:19.23 ID:IvHNq8Az.net
はいはい、じゃあ次。

507 :デフォルトの名無しさん:2015/10/06(火) 18:46:59.72 ID:OYbykycg.net
態度悪いからつっついてやりたいんだけど、
cmdに問題が起きてない根拠はなに?
他にも突っ込みどころはあるけど。

今回は情報渡さないよ。渡しても正確に読んでないからどうだって感じだけど。

508 :デフォルトの名無しさん:2015/10/06(火) 18:50:19.06 ID:OYbykycg.net
>「どうせゾンビじゃないだろw」
あと世間ではこれは質問って言わないからね。最低限の日本語教養として。
別につっついてもメリットはないんだけど、

>cmdにも問題ない。
これが質問と言い始められても困るのでね。

509 :デフォルトの名無しさん:2015/10/06(火) 19:58:13.65 ID:IvHNq8Az.net
> cmdに問題が起きてない根拠はなに?

Windowsにはゾンビプロセスという概念がないのに、
ゾンビだと言っているから。

Perlが動かなくなるのであれば、単なるPerlの問題。

510 :デフォルトの名無しさん:2015/10/06(火) 20:40:10.08 ID:OYbykycg.net
ふーーーん。
俺がwindowsでゾンビと言えばcmdに問題がないことが確定するんだね。
すげぇな。
ここに何か書きたいならプログラムの基本から学んだ方がいいよ。
でないと迷惑だから。

あとこれは三回目だけど動かないのはcmd.exeであってPerlではないからね。

511 :デフォルトの名無しさん:2015/10/06(火) 21:04:57.54 ID:DiRpFITQ9
Windowsのファイルロックは強制ロックだから、他のプロセスが握ってるとそこで止まる。
下手すりゃリブートするまで握りっぱなしとかあるある。

Unix系の勧告ロックと異なる点は注意だな。

512 :デフォルトの名無しさん:2015/10/07(水) 00:16:22.80 ID:NaSjQcCl.net
はいはい、じゃあ次w

513 :デフォルトの名無しさん:2015/10/07(水) 02:45:07.73 ID:bi7UjXPc.net
次はお前待ち状態だけど

514 :デフォルトの名無しさん:2015/10/07(水) 02:52:18.01 ID:bi7UjXPc.net
まぁつついても結局意味の分からんこと書くか話流すかしか出来ないんだよね。
さいなら

515 :デフォルトの名無しさん:2015/10/07(水) 03:15:13.18 ID:A/Ws6vCF.net
>>openで新規にファイルが出来た場合にcmd.exeからperlに制御が戻って
>>こなくなる。 もとからあったファイルをopenで開いた場合は制御が戻っ
>>てくる。
んで、
>>再現性は100万ループで2〜3回程度。ただしなるときは一発でなる。
...ってディスクの不良セクタが原因ではないよね?
sysopen でオープンして sysread,syswrite で1バイトづつアクセスする
のを試したかい?

516 :デフォルトの名無しさん:2015/10/07(水) 04:00:55.64 ID:bi7UjXPc.net
はいどうもありがとう。
ただもうめんどうになってるから、解決できなかったらもうそれはそれでいいんだ。

それは試してないけど、cmd.exeは最終的には必ず 「ブラウザが」 ファイルを開いてコマンドの処理は完了する。
おかしくなるときは、数秒コマンドの完了が遅延して、そのあとcmd.exeが終了せず制御がperlに戻らなくなる。

結果としてcmd.exeはフリーズ状態になる。

use FileHandle;
use IPC::Open2;
$| = 1;
my $pid = open2($Reader, $Writer, "cmd.exe");
print $Writer "test.html\n";
print $Writer "exit\n";
close $Writer;
close $Reader;

こんな感じで書いても結局は同じ

517 :デフォルトの名無しさん:2015/10/08(木) 00:59:16.69 ID:OLbkW7bG.net
どうやらPerlは関係なさそうだね。ここはWindowsユーザーが多いからforkや
ゾンビは分かる人がいないんだよ。また新しい単語覚えたら教えて。

518 :デフォルトの名無しさん:2015/10/08(木) 01:11:46.37 ID:OU3psdJf.net
forkやzombieはWindowsが提供している機能じゃないので、
それを提供している所が悪いのでは?

519 :デフォルトの名無しさん:2015/10/08(木) 04:55:25.67 ID:dRl2/m15.net
>どうやらPerlは関係なさそうだね
んなこたない。
最初に疑いがかかるのはメモリ渡しのタイミングから。
実装した人にはPerlの関係性はあるだろう。

520 :デフォルトの名無しさん:2015/10/08(木) 15:21:12.27 ID:6qBtQH4V.net
Perlインストールしたらファイルサイズ7GBもあるんだがこんなもんか

521 :デフォルトの名無しさん:2015/10/08(木) 18:09:27.93 ID:dRl2/m15.net
ないだろ

522 :デフォルトの名無しさん:2015/10/08(木) 19:55:02.01 ID:6qBtQH4V.net
あるんだが
まさか何かいらんもんでも入れたかな?
ちなみに全部入れた

523 :デフォルトの名無しさん:2015/10/08(木) 21:03:08.58 ID:dRl2/m15.net
フォルダ全部で240MB

524 :デフォルトの名無しさん:2015/10/08(木) 21:55:32.02 ID:V0YO39rT.net
マジかよなんなんや・・・

525 :デフォルトの名無しさん:2015/10/09(金) 01:00:01.19 ID:1LQDPMmM.net
容量の半分はあの太っちょおじさんのせい

526 :デフォルトの名無しさん:2015/10/09(金) 06:02:59.05 ID:USwXoDjJp
>>516
今更IPC::Open2かよ。
あれはOpen3と並んで使い物にならん。

おとなしくIPC::run3でも使え。

527 :デフォルトの名無しさん:2015/10/09(金) 06:23:45.67 ID:u+nfRRLs.net
全部の意味が分からんけど、
unix用を全バージョンいれて
windows用を全バージョン入れて
Mac用を全バージョン入れて…
みたいな?サイズ的に。(適当)

528 :デフォルトの名無しさん:2015/10/09(金) 07:16:09.68 ID:3gjlJhds.net
どうせシンボリックリンクを重複して計算してるんだろ

529 :デフォルトの名無しさん:2015/10/09(金) 08:03:17.40 ID:Ev6MQNJn.net
シンボリックリンクなんて、そんなにたくさんあったか?

530 :デフォルトの名無しさん:2015/10/09(金) 21:10:44.44 ID:ZkgHYZod.net
>>520だけど
気持ち悪いから再インストールしてみたら80MBくらいに落ち着いた
一体何だったのか…

531 :デフォルトの名無しさん:2015/10/10(土) 10:42:49.24 ID:5dP181+h.net
インストールの前にDVDの中身全部ディスクにコピーしていました
以後気をつけてやります…

532 :デフォルトの名無しさん:2015/10/10(土) 11:16:55.74 ID:oHa0fz9h.net
Perl6 発表だぜ、みんな使いな

533 :デフォルトの名無しさん:2015/10/10(土) 13:06:07.90 ID:MTAKB3YA.net
えーー、どうせバグだらけだし
それに趣味で覚えたい以外に覚える理由もないし
ネイティブだったら覚えてもいいけど、Perl系覚えるのは絶対無駄にしんどい

534 :デフォルトの名無しさん:2015/10/10(土) 15:00:19.19 ID:tVB9B9ox.net
15年かけただけあって流石につよい

535 :デフォルトの名無しさん:2015/10/10(土) 18:23:30.40 ID:DZMVFwsO.net
>>532
ニュースリリースでも出てた?
URL教えて。

536 :デフォルトの名無しさん:2015/10/10(土) 18:43:24.10 ID:syR2upNL.net
他人が書いたPerlは絶望的に読みにくい。

537 :デフォルトの名無しさん:2015/10/10(土) 19:03:50.58 ID:d7o7LjAv.net
全部自分で書こう

538 :デフォルトの名無しさん:2015/10/10(土) 19:07:27.12 ID:MTAKB3YA.net
読みに関しては、結局「俺が読みやすいんだもん」って書き方しか存在しないしな
開発者ですらそのようなこと言ってると言うか、人が読めなくても気にしなくて良いみたいなことさえ言ってた気が。

539 :デフォルトの名無しさん:2015/10/10(土) 19:56:40.55 ID:Vyjb9OtN.net
>>535
長文だが
http://www.pigdog.org/auto/software_jihad/link/3138.html

あと、perl6.orgでもオッケ

540 :デフォルトの名無しさん:2015/10/11(日) 14:06:11.83 ID:Ql11MBBU.net
日本語のドキュメントが整備されて、日本語が楽に使えるようになるまで様子見
こないだ動物本の会社に問質したら出版予定はないってさ、だからまだ早い

541 :デフォルトの名無しさん:2015/10/11(日) 14:20:42.42 ID:AjiKJ1b+.net
Pugs から10年
Rakudo からも6年

本気で興味あるやつは、全体像は把握しとる。

542 :デフォルトの名無しさん:2015/10/11(日) 14:22:59.10 ID:7eCDMK6Q.net
もう時代が違うってさ。別に本が無ければ勉強出来ない分けはないよ。ネットでマニュアルを読み、掲示板、ircで討論、自分で実験。それこそ今時の流れだろう。

543 :デフォルトの名無しさん:2015/10/11(日) 17:06:12.38 ID:qoAVCBwR.net
Camelia かわいいよ Camelia

544 :デフォルトの名無しさん:2015/10/11(日) 18:51:37.21 ID:Ql11MBBU.net
エンタープライズと個人的趣味は別だから

545 :デフォルトの名無しさん:2015/10/13(火) 09:46:19.14 ID:Itl+5Xbt.net
大雑把に以下のような構造があったとする (この場ではスコープ管理とする)。

NAME_A:{ #NAME_Aと言う名前の関数群
 my NAME_A共用変数 #(インスタンス、またはクロージャと解釈しても良い);
 関数a宣言と定義;
 関数b宣言と定義;
 以下略
}
NAME_B:{
 my NAME_B共用変数; #関数群ごとにデータ構造の形式は全く違う
 関数a宣言と定義;
 関数b宣言と定義;
 以下略
}
NAME_C:{
 my NAME_C共用変数;
 関数a宣言と定義;
 関数b宣言と定義;
 以下略
}
#…以下略。もしかするとNAME_Zまであるかもしれない。

#---------------------------------------------------

この時、
NAME_A内の関数を呼び出し、次に別のNAME_A内の関数を呼び出した時、NAME_Aの共用変数はそのまま生存する。(つまり上記のままの記述で良い)。
しかし、NAME_Aを呼び出したあと、NAME_Bを呼び出した場合、NAME_Aの変数をundefしたい。(NAME_Bを呼び出せばNAME_B以外の変数を全てundefしたい。)
抽象的な表現をすれば、NAME_Bが使用されれば、それ以外の関数群の処理経過を全て初期化したい。

これを手っ取り早く書くにはどうすりゃええでしょうか。
NAME_Aの中にNAME_Bをいじくるような処理は書きたくないです。
良さそうな方法がいくつか思いついたけど、私が思いついた処理よりいい方法があるような気がするので、人様の意見をうかがってから書き始めようと思います。

546 :デフォルトの名無しさん:2015/10/13(火) 11:16:23.34 ID:Itl+5Xbt.net
遅いので締め切り

547 :デフォルトの名無しさん:2015/10/13(火) 12:21:24.97 ID:YZ+LqeLQB
オブジェクト指向使えば一応解決できるな。
絶対、作り方を間違えてるけど。

548 :デフォルトの名無しさん:2015/10/14(水) 00:10:02.01 ID:CP+grbm/.net
単純にハッシュでいいでしょ

549 :デフォルトの名無しさん:2015/10/14(水) 01:21:43.25 ID:5USmhD5Y.net
多分、何をしたいのかもう少し考えた方がいいと思うよ。
考えた上でそのやり方が適していると思うならこんな感じになるだろう。

# グループ $G の関数 $F を呼ぶ
if ( $lastgroup != $G){
 group_end( $lastgroup) # もし必要なら
 group_begin( $G);
 $lastgroup = $G;
}
$F->(); # 実装方法によって呼び出し方は違うだろうね

要するに、どう実現するかという以前に考え方がおかしい。
「使い始める時」に初期化すればいいのであって、
別のグループのことまで考える必要は無いと思うよ。

550 :デフォルトの名無しさん:2015/10/15(木) 02:51:43.95 ID:Ctgvk7MF.net
sub func_a {
  delete @hash{grep(/^$_[0]$/,keys %hash)};
}
sub func_b {
  delete @hash{grep(/^$_[0]$/,keys %hash)};
}

551 :デフォルトの名無しさん:2015/10/17(土) 17:37:45.50 ID:QDrnQrmx.net
オブジェクト指向ってプロトタイプが使えないんですか?

package My::test;
sub new(\[$@%]){
#……
}
#---------------------

My::test->new($test);

552 :デフォルトの名無しさん:2015/10/17(土) 17:44:14.22 ID:HgXI9gSF.net
>>551
http://perldoc.jp/docs/perl/perlsub.pod#Prototypes

553 :デフォルトの名無しさん:2015/10/17(土) 17:49:39.61 ID:QDrnQrmx.net
>メソッド呼び出しはプロトタイプを行う/行わないによる影響を受けません。 なぜなら正確な呼び出しコードは、継承に依存しているために コンパイル時には不確定だからです。
これか
もうちょっと工夫して創って欲しかった

554 :デフォルトの名無しさん:2015/10/18(日) 01:42:52.11 ID:KigiPqDZ.net
そもそもデータ型がない(ないようにした)のがPerlの利点だからのう

555 :デフォルトの名無しさん:2015/10/18(日) 02:05:25.21 ID:/3dtuYD6.net
いや型しかないだろ

556 :デフォルトの名無しさん:2015/10/18(日) 08:43:14.38 ID:xrpLizdm.net
リファレンスを効率的に調べるために、
変数や戻値の型の名称を調べたいのですが、
VBでいう TypeName に相当する関数はありませんか?

557 :デフォルトの名無しさん:2015/10/18(日) 13:30:02.16 ID:/3dtuYD6.net
ようわからんけど

my $ref_type = ref $ref; # ObjectName or hash or array or sub or etc... http://perldoc.jp/func/ref
注※一緒くたにまとめられているので、痛い目を見たくなければオブジェクト名をデフォルトのリファレンスタイプ名と同じにしてはいけない。

my $defined = defined $val; #is this undef? (bool)
my $length = length $val; #「値の」長さ(unicodeかどうかで挙動が変わるので注意。ここに関わらず基本的にPerlは1文字を1単位としたがる)。

use Devel::Size qw(size total_size);
my $size = size$val; #「変数の」バイト数

メモリの長さ単位 → perl内部抽象型 (手出し不可)
数値か文字か → perl内部自動変換(ほぼ手出し不可)
 (ほとんどの場合は数値演算子のオペランドに使えば演算子に渡される値が数値変換済みであることが保証され、文字演算子のオペランドならば…以下略。
 ビット演算子やコンマ演算子などの、どうとでも取れる場合は各演算子や関数などの仕様を参照のこと。ほぼ一貫して(演算子や関数などの)値を要求する側が変換内容を決定する)。

558 :デフォルトの名無しさん:2015/10/20(火) 22:36:05.91 ID:1gKOYeaX.net
ハッシュのkeyに漢字やひらがなを入れても問題ないですか?
またどれくらいの文字数までkeyに使ってもいいですか?
$hash{'てすと'};
こんな感じで

559 :デフォルトの名無しさん:2015/10/20(火) 22:36:56.56 ID:vVqPHhnQ.net
それどころかヌル文字(\0)を入れても問題ないよ!

560 :デフォルトの名無しさん:2015/10/20(火) 22:38:07.01 ID:vVqPHhnQ.net
さて問題です。

ウソかホントか?

561 :uy ◆e6.oHu1j.o :2015/10/21(水) 11:51:32.03 ID:bkabQcdE.net
入れられないようなゴミ言語なら今すぐ全てのPerl本燃やして歴史から葬り去ったほうが良い

562 :デフォルトの名無しさん:2015/10/21(水) 17:48:06.04 ID:Y5IiyPT4.net
>>560
「さりげない自分自慢」かw

563 :デフォルトの名無しさん:2015/10/21(水) 22:12:54.88 ID:CfDtLcv1.net
不安な環境なら半角カタカナまでに留めておいたほうがいい。それならlatin1レベルで扱える。

564 :デフォルトの名無しさん:2015/10/21(水) 23:20:04.20 ID:G8ulW2Zt.net
全角でもlatin1(00-FF)で扱えるし今はutf8が多いからあんまり関係無い

565 :デフォルトの名無しさん:2015/10/22(木) 00:14:43.65 ID:T+i/NslY.net
>>564
Perl4前提の話をしてます。
どこでも動くスクリプトです。

566 :sage:2015/10/22(木) 15:33:23.66 ID:qmntQeh8.net
メールアドレスチェックのために、
メジャーどころのEmail::Valid::Looseを使用しているのですが、
サーバーを移転(CentOS 5.3-perl 5.8からCentOS 6.7-perl 5.1)しましたところ、
500エラーとなり動作しなくなってしまいました。

エラー内容は、
Can't call method "answer" on an undefined value at /usr/local/share/perl5/Email/Valid.pm line 153.
で、該当部分は下記の通りです。
※Net::DNSはインストール済みです。

digやnslookupも正常に動いていて、いろいろと勉強はしてみたのですが、
はまってしまいました。
原因と解決法を教えてくださいませ。

567 :デフォルトの名無しさん:2015/10/22(木) 15:37:36.42 ID:qmntQeh8.net
551です。
(すみません、上がってしまいました)

Valid.pm の153行目近辺です。

131 sub _select_dns_method {
132 # Configure a global resolver object for DNS queries
133 # if Net::DNS is available
134 eval { require Net::DNS };
135 return $DNS_Method = 'Net::DNS' unless $@;
136
137 $DNS_Method = 'nslookup';
138 }
139
140 # Purpose: perform DNS query using the Net::DNS module
141 sub _net_dns_query {
142 my $self = shift;
143 my $host = shift;
144
145 $Resolver = Net::DNS::Resolver->new unless defined $Resolver;
146
147 my @mx_entries = Net::DNS::mx($Resolver, $host);

568 :デフォルトの名無しさん:2015/10/22(木) 15:38:21.36 ID:qmntQeh8.net
551です。

148
149 if (@mx_entries) {
150 foreach my $mx (@mx_entries) {
151 my $mxhost = $mx->exchange;
152 my $query = $Resolver->search($mx);
153 foreach my $a_rr ($query->answer) {
154 return 1 unless $a_rr->type ne 'A';
155 }
156 }
157 }
158
159 return $self->details('mx');
160 }

569 :デフォルトの名無しさん:2015/10/23(金) 08:27:13.62 ID:uleDOfSS.net
my(@list) = ("aaa","bbb","ccc");という配列があって
my($listsuu) = @list;としてもリストの要素数は得られないけど
my $listsu = @list;とうるとリストの要素数は得られるのはどうしてですか?
カッコをつけるつけないの違いは何でしょうか?

570 :デフォルトの名無しさん:2015/10/23(金) 10:42:00.30 ID:PiyRQFJ3.net
>>569
括弧を付けるとリストコンテキスト、付けないとスカラコンテキストになる。詳しくは
http://perldoc.jp/docs/perl/5.8.8/perldata.pod
辺りを読んでいただければ……

571 :デフォルトの名無しさん:2015/10/23(金) 10:53:26.68 ID:WlL3xp3n.net
リストコンテキストとスカラコンテキストというアイデアは間違いだった。
素直に関数を分けるか引数で指定するようにすべきだった。

= の右側が一緒でも、 =の左側で関数の動作が変わってしまう。
= ならまだわかりやすいが、関数の引数やハッシュに入れた時とか。
キーと値がずれてバグの原因になる。

572 :デフォルトの名無しさん:2015/10/23(金) 11:26:52.38 ID:k4LuROKH.net
また君か壊れるなあ

573 :デフォルトの名無しさん:2015/10/23(金) 12:12:25.14 ID:WlL3xp3n.net
とくに言い返すことがないなら、
レスしなくていいと思うんだがねw

574 :デフォルトの名無しさん:2015/10/23(金) 21:40:39.39 ID:Wo6jmHxQ.net
一方、Python にはタプルの罠がある。

575 :デフォルトの名無しさん:2015/10/23(金) 23:12:17.53 ID:HfDhF3Ys.net
一方システム言語は個別に対応しなきゃらななくて迷路になってるのであった
と言うか同じなんだけどね。本当は

576 :デフォルトの名無しさん:2015/10/23(金) 23:28:08.94 ID:PiyRQFJ3.net
>>573
よろしい、言い返してあげよう。
言語仕様に責任転嫁してもしようがない(ドヤァ)

577 :デフォルトの名無しさん:2015/10/23(金) 23:32:34.03 ID:WlL3xp3n.net
言語仕様に責任転嫁?何を言ってるのかわからない。
よくない言語仕様だったって話をしてるんだが。

578 :デフォルトの名無しさん:2015/10/24(土) 00:20:40.21 ID:cXc3ufNP.net
>>577
ダジャレにマジレスかよ

579 :デフォルトの名無しさん:2015/10/24(土) 00:26:13.63 ID:oNYKYVpJ.net
>>571
そうゆうアピールをしたくて必死なわけですね
そしてかまって欲しくてたまらない的な

580 :デフォルトの名無しさん:2015/10/24(土) 02:27:17.13 ID:ymg0YeVe.net
>>579
構いたくないならレスしなければいいのにw

581 :デフォルトの名無しさん:2015/10/24(土) 14:02:41.06 ID:/lDQ+xm1.net
@rray = $calar は @rray = ($calar) の省略形で便利!
$calar = @rray は $calar = scalar(@rray) の省略形なので注意!
($calar) = @rray でリストの先頭を代入
これ、テンプレ追加で解決。

582 :デフォルトの名無しさん:2015/10/24(土) 15:17:36.86 ID:obIKqu8m.net
>>581
日本語で説明している時点でだめだと思うわw

583 :デフォルトの名無しさん:2015/10/25(日) 01:09:37.00 ID:eAvcdeNT.net
Perlが覚えられず、日本語が理解できず、何語ならいいの?
英語で書けるCOBOLならもうあるけど

584 :デフォルトの名無しさん:2015/10/25(日) 03:16:33.90 ID:vd4L6iLU.net
>>583
コード見るだけでわかるようにする。

585 :デフォルトの名無しさん:2015/10/25(日) 04:13:42.99 ID:IJsK62Z7.net
頭の悪い書き込みがダメってことだろ

586 :デフォルトの名無しさん:2015/10/25(日) 21:16:54.27 ID:+VcrnbUt.net
オブジェクト指向の書き方と言うか使い方がいまいちよくわからんのだけど、
なんかいろいろあるんだけど、

use strict;
{
package obj;
sub new {
my $class = shift;
return bless { NAME => 'hoge', }, $class;
}
sub method{
my $self = shift;
}

}

package main;
my $instance = obj->new();
print $instance->{NAME} . "\n"; #1: 普通にアクセス出来ますが…? カプセル化とはいったい…?
obj::new(); #2: 使用側の呼び出しによってクラス名が自動送信されたりされなかったりする。オブジェクトかどうかは「呼び出し側が」決めるの? どうにかしてくれ
my $instance2 = obj->method(); #3: コンストラクタなのか通常のメソッドなのか区別が付かない。誤った使用法が普通に発生出来る。なんとかしてくれ。


ちょっとだけperldocだかを見てきたけど、なんでも自由にアクセス出来るのが売りだみたいなことを自慢げ(?)に書いてあった。
いやそれオブジェクト指向じゃねぇから。対策教えてくれ。
使用者がモジュールごとの仕様を熟知して地雷をよけながら歩くのがデフォルトかよ

587 :デフォルトの名無しさん:2015/10/25(日) 21:18:06.36 ID:+VcrnbUt.net
質問その2
呼び出し側で
my $instance1 = obj->new1(); #普通のインスタンス
my $instance2 = $instance1->new2(); #インスタンス1から発生するインスタンス2

みたいに書きたいんだけど、どうすりゃいいだろう?
呼び出しは出来ればこの書式をこのまま使いたい。
new2内部でクラス名を得られない。なのでblessできない。



質問その3
今の所あんま重要じゃないんだけど、
Perlのオブジェクト指向ってシンボリックリファレンスとかgotoとかと同じたぐいに見えるんだけど合ってる?
packageがラベル名やgotoと同じたぐいに感じるのだけど。



また何かあったら質問します。
よろしく

588 :デフォルトの名無しさん:2015/10/25(日) 22:50:46.64 ID:rvQcLuia.net
・質問1への答え
perlのオブジェクト指向は良くも悪くも後付けなんでそういうものだとある程度は妥協してください(カプセル化の方法もありますが一般的とは言えません)
一応Mooseなどのモジュールで補助は出来るし、実質別の言語ですがクリスマスにリリースされるperl6でかなり改善されてます
それとオブジェクト指向は哲学であってカプセル化などの機能とイコールでないと個人的に思います

・質問2への答え
意味がよくわからないけど、 ref $instance でパッケージ名を取得できます、で求めた答えになってるかな?
my $class = ref $_[0] || $_[0]; のような書き方はよくあります

・質問3への答え
よくわからないです


perlのオブジェクト指向の実装の仕方はオブジェクト指向について考える上で参考になるけど実際に書くときは標準機能の貧弱さに泣く…
まあ何にせよ慣習に頼る部分は多いけれども「いやそれオブジェクト指向じゃねぇから」というのは違うと思いますよ

589 :デフォルトの名無しさん:2015/10/26(月) 10:40:05.67 ID:vmWW28spH
>>586
#1 カプセル化されてなくても中を触らなければいいだけ。
オブジェクト指向の基本だが、オブジェクトの操作は全てメソッドを介せ。

#2 定義したクラスを、別のクラスで継承する。
クラスメソッドは継承できないのでエラーになる。

#3 メソッドとコンストラクタの違いが無いのは仕様。
誤った使用法とは何か?

質問2
http://perldoc.jp/docs/perl/5.10.0/perlmodlib.pod#Guidelines32for32Module32Creation

質問3
シンボリックリファレンス(変数参照)とgoto(制御構文)は別物。

590 :デフォルトの名無しさん:2015/10/26(月) 14:25:17.20 ID:908fhS8d.net
Perlの正規表現について、
gオプションの使い方の質問です。

HTMLなどの長いテキストから特定のタグの中身をまとめて取りたいのですが、
どのように使用したらよいでしょうか。

例えば、HTMLから下記のようなパターンを探して
<a href="〜〜〜">********</a>
〜〜〜 と ******** の一覧を配列で受取るか標準出力に出力するかしたいです。

591 :デフォルトの名無しさん:2015/10/26(月) 17:43:39.03 ID:GFinoAL6.net
>>590
a 要素が全部その通りの表記になってるなら

while ( m%<a href=\"(.*?)\">(.*?)</a>%g ){
 push( @anchor_a,[$1,$2]);
}

みたいな感じか。
その通りになっていない可能性があるなら HTML::TreeBuilder を使う方がいいと思うよ。
軽い方がいいならせめて HTML::Parser を。

592 :デフォルトの名無しさん:2015/10/26(月) 18:14:25.99 ID:JWNZzJ9D.net
木(親子)構造のものは、正規表現ではムリ

<A> <A></A> <A><A></A></A> </A>

593 :デフォルトの名無しさん:2015/10/26(月) 20:02:31.67 ID:lmfrq9M4.net
複数行に分かれている場合も対応した方が良いと思う

594 :デフォルトの名無しさん:2015/10/26(月) 20:18:39.21 ID:GFinoAL6.net
>>593
href 以外の属性が書かれてる場合もね。
正規表現でも出来なくはないがちょっと大変だ。
だから無理せず専用のパーサを使う方がいいと思うんだ。

595 :デフォルトの名無しさん:2015/10/26(月) 20:30:02.13 ID:908fhS8d.net
>>591
ありがとうございました。

596 :デフォルトの名無しさん:2015/10/28(水) 18:54:34.89 ID:EUVQ3J2j.net
C言語のプログラムから関数を抜き出す方法を教えてくれ。
ハマってるのは{}の一致だ。

int testA(){
   if (xxx==0){
      a=1;
   }
   return 0;
}

int testB(){
   return 0;
}

testAの関数を抜き出したくても、最短マッチだとifの}で終わる。
最長マッチだとtestBの}までいってしまう。
{}の個数が分かっていれば指定できるがそんなのはマチマチ。

597 :デフォルトの名無しさん:2015/10/28(水) 19:04:05.51 ID:KWnsoHPL.net
>>596
Perlを投げ捨てて、

$ ctags -f - source.c

testA a.c /^int testA(){$/;" f
testB a.c /^int testB(){$/;" f

はい、終了。

598 :デフォルトの名無しさん:2015/10/28(水) 19:06:46.92 ID:KWnsoHPL.net
この場合は、-xオプションつけた方が良さそうだな。

$ ctags -x source.c
testA function 1 source.c int testA(){
testB function 8 source.c int testB(){

599 :デフォルトの名無しさん:2015/10/28(水) 22:50:35.78 ID:EUVQ3J2j.net
>>597-598
ctagsがWinでもLinuxでも見つからないからダメ元でMacで試したら入ってたわ。

このスレで油売ってるゴミ共でも役に立つことがあるんだな。
ありがとよゴミ共。

600 :デフォルトの名無しさん:2015/10/28(水) 23:21:26.87 ID:42E/OAJG.net
@A=(1..10);
@B=(2,4,5,6,8,9);

この二つの配列から@Aのうち@Bに含まれていない
(1,3,7,10)という配列を抽出したいのですがどうすれば
いいでしょうか?

601 :デフォルトの名無しさん:2015/10/28(水) 23:27:04.70 ID:42E/OAJG.net
my @C = grep { my $N=$_; ! grep { $N==$_} @B } @A;
こういうコードだとデータの件数が多くなると異常に遅くなってしまいます

602 :デフォルトの名無しさん:2015/10/29(木) 00:58:13.23 ID:dmkvBav+.net
Ruby, Pythonのように、配列に差集合は無いのか?

@A - @B

603 :デフォルトの名無しさん:2015/10/29(木) 01:30:36.68 ID:ywbX+Z6L.net
>>599
> ctagsがWinでもLinuxでも見つからないから

自分でインストールしろよ。WindowsはともかくLinuxならパッケージあるんだろ。

あとゴキブリのくせにうぜーよ。

604 :デフォルトの名無しさん:2015/10/29(木) 01:35:10.81 ID:ywbX+Z6L.net
>>601
そりゃそうだろうね。
@Aの配列からチェック用のハッシュを作り、そこにあるかないかを
チェックする処理を1行で書けばいいんだよ。

>>602
List::Compareとかいうモジュールがある。

605 :デフォルトの名無しさん:2015/10/29(木) 02:11:24.81 ID:MsWbl26g.net
windowsで処理が遅い場合、複数プロセスに分離したいのですが、
どのようにするのが一般的でしょうか?

forkはwindowsでは表面上の互換が取れるだけで無理と言うようなことが書いてありました。

606 :デフォルトの名無しさん:2015/10/29(木) 09:18:01.38 ID:MsWbl26g.net
まだ回答を得られていませんがもう一つ質問です。

{
my $Instance = new;
# なんらかの処理
}
#ここでInstanceは消えている。

Instanceが消えるとき、自動でデストラクタを呼び出したいです。(自動だとPerlの従来どおりmyの記述を崩さず同等のため)。
と言うのは、コンストラクタは他のプロセスに対してデータ構造の同期を取っています。
これがmyのスコープを抜けたかたと言って、自分のプロセスの中でだけ勝手に消えると困ります。

myの自動処理に対して割り込むよう方法はありますか?

607 :デフォルトの名無しさん:2015/10/29(木) 09:20:05.29 ID:MsWbl26g.net
やっぱ590は無茶な質問のような気がしましたので大人しくグローバル変数使っておきます。
オブジェクトは常にグローバルでしかないので、そのほうがで良いデザインのような気がしてきました。

608 :デフォルトの名無しさん:2015/10/29(木) 13:59:54.09 ID:MsWbl26g.net
やっぱ590はオブジェクト側で保持して勝手に消えないインスタンスにすることにしますた。
名前付きでコンストラクトして、なければ作る、すでにあればそのまま返す。
でないとインスタンスの量や構造関係が爆裂になった時に呼び出し側がスパゲティ。

回答ないからまるで独り言みたいだ。

609 :デフォルトの名無しさん:2015/10/29(木) 16:49:05.20 ID:+uGpQesu.net
>>604
一行で書けますか?
my %H;
map { $Hash{$_}++ } @B;
@C = grep { ! $Hash{$_} } @A;

3行になってしまいましたorz

>>602
Ruby Pythonはそういう書き方でするんですか便利ですね

610 :デフォルトの名無しさん:2015/10/29(木) 18:25:15.87 ID:kMHBYIC37
一行で書くとこんな感じだな。
sub{ grep{ ! $_[0]->{$_} } @_[1 .. $#_] }->({ map{ $_ => 1 } @b }, @a);

普通はやらんが。

>>609
Set::Scalar 辺り使えばPerlでもできる。
Perlで集合はなぜか話題にならんな。

611 :デフォルトの名無しさん:2015/10/29(木) 19:59:34.38 ID:5rO3eYIk.net
別人の横レスだけど、
普通に3行でいいだろ。

上二つは速度が遅いだろうし
最後のは、あなたのと何ら代りはない。
@C = grep { !${ { map{ $_, 1} @B } }{$_} } @A;

# 5.21 以降。
@C = grep { ! defined { reverse %B[ 0 .. $#B ] }->{$_} } @A ;

use feature qw(state);
@C = grep { state $h = { map{ $_, 1} @B } ; ! $h->{$_} } @A;

612 :デフォルトの名無しさん:2015/10/29(木) 21:45:50.71 ID:oKoprbCw.net
>>609
Pythonの配列(リスト)に集合演算はないよ
集合型っていうデータ型に変換すればできるけど
値の重複を許さないので厳密に言えば配列とは違う

613 :デフォルトの名無しさん:2015/10/30(金) 01:10:11.48 ID:sxH0vLLx.net
grepの中にgrepがあると気持ち悪い。
別に1行じゃなくていいじゃないか
あとスライスは遅いのけ?

@h{@b} = undef; #valueが欲しいなら (1) x @b; とでも。(同じ値があれば数が合わなくなる気がするが)。
grep{ !exists $h{$_} } @a;

614 :デフォルトの名無しさん:2015/10/30(金) 06:01:57.97 ID:VBZUNtox.net
>>611の上二つの「遅い」の言及から発想したのなら、
誤解してる。
アレは、両方ともgrep毎に、新規に無名ハッシュ作くるからその分遅いだろう。
最後のは、stateで一回しかリファレンス作ってないから早いだろう、
って意味。

615 :デフォルトの名無しさん:2015/10/31(土) 00:19:52.01 ID:8+WZrGwR.net
requireに引数を送る方法はありますか?

616 :デフォルトの名無しさん:2015/10/31(土) 00:40:04.01 ID:llkezMza.net
明示的に import を呼びなさい。詳しく知りたければ
perldoc -f use
あるいは
http://perldoc.jp/func/use

617 :デフォルトの名無しさん:2015/10/31(土) 01:26:54.45 ID:8+WZrGwR.net
requireに引数を送る方法はありますか?

618 :デフォルトの名無しさん:2015/10/31(土) 09:08:36.82 ID:OL8aBQAL.net
ある

619 :デフォルトの名無しさん:2015/10/31(土) 20:46:17.25 ID:llkezMza.net
ご期待に添えなかったかな?
use Alpha 'Beta','Gamma';
的なことをしたいんだろうと想像したんだけど。

620 :perl初心者:2015/11/06(金) 21:09:59.94 ID:2g7/WV7u.net
local (*in) = @_ if @_;

これってどんな意味になるんですか?

621 :603:2015/11/06(金) 21:42:18.68 ID:2g7/WV7u.net
cgi-lib.pl っていうライブラリの
sub ReadParse  っていう関数の初めにあるんですけど
local (*in) = @_ if @_;
これを
local (*in) = @_ ;  
に書き換えても動作するんですけどこれってローカル変数宣言で配列を宣言してるんですよね?
でもこのif @_の意味がわからない

どなたか知ってませんか?

622 :デフォルトの名無しさん:2015/11/06(金) 22:44:26.20 ID:A8OcAOd1.net
@_ が存在すれば(nullじゃ無ければ)、代入する

じゃないの?よく知らないけどさ

623 :perl初心者:2015/11/06(金) 22:49:44.94 ID:2g7/WV7u.net
>>622
local (*in) = @_ ; だと送信データがnullのときエラーが起こった

local (*in) = @_ if @_; だと送信データがnullでもちゃんと動作した


なんでなの?

624 :606:2015/11/06(金) 22:53:28.19 ID:2g7/WV7u.net
ごめん606で書いたことは嘘

なんかコード終了の;をうち忘れてただけだった

やっぱlocal (*in) = @_ if @_; のいみがわからん・・・

625 :デフォルトの名無しさん:2015/11/06(金) 23:03:24.07 ID:6b5vFxa5.net
コメントに書いてあるんだけどね。
パースした結果は %in,@in,$in に入れるよ。
でも、リファレンスをくれたらそこに入れるよ。

626 :デフォルトの名無しさん:2015/11/06(金) 23:05:21.87 ID:A8OcAOd1.net
if A とは、Rubyにもある後置記法じゃないの?
if True 真なら、
if False 偽なら

X = A if A;

if A then
X = A
end

もしAが真なら(Aが存在すれば)、Xに代入する。
もしAが偽なら(Aが存在しないなら)、何もしない

よく知らんけどさ

627 :デフォルトの名無しさん:2015/11/07(土) 05:22:22.41 ID:7PiJ/e4L.net
if修飾子自体の挙動は、ぐぐりゃ終わる話

問題のコードって、
http://cgi-lib.berkeley.edu/
のv1.14のコードだよね?

local(*in) =の行は、作者の望んだ代入は成立してないんじゃね?
$ perl -MData::Dumper -le 'my $in ; local (*in) = (2,3,4) ; print Dumper $in, *in;'
$VAR1 = undef;
$VAR2 = *{'::2'};

仮に機能したとしても、
$inも、@inも、%inも後から上書きしてんじゃん。
# v2.18でも同様

628 :606:2015/11/07(土) 10:46:18.10 ID:H7agZdU4.net
>>627
perlって同じ名前で型かえれば変数何個もつくれるんじゃないの?

629 :デフォルトの名無しさん:2015/11/07(土) 11:59:27.37 ID:7PiJ/e4L.net
すまん、>>627のワンライナーは間違いだわ。
代入自体は成立するね。
ただし、no warnings, no strict の条件でだけど。

$ perl -MData::Dumper -le '$a = 42 ;@a = 1 .. 10 ; sub { local(*in) = @_ if @_ ; print Dumper $in, ¥@in }->(*a) '
$VAR1 = 42;
$VAR2 = [1,2,3,4,5,6,7,8,9,10];

630 :デフォルトの名無しさん:2015/11/07(土) 11:59:44.43 ID:wmMRTXvg.net
Version 1.14 を見てるならコメントに使用例が書いてあるでしょ? 型グロブを渡すんだよ。
Perl 5 ならリファレンスも渡せる。

http://perldoc.jp/docs/perl/5.20.1/perldata.pod
を読んで勉強しなさい。

631 :デフォルトの名無しさん:2015/11/07(土) 17:25:15.49 ID:hsJw7ECk.net
グダってんなー
単なる研究ならいいけど今時cgi-lib.plの書き方は参考にすべきではないとだけ言っておく

632 :606:2015/11/07(土) 20:45:37.44 ID:H7agZdU4.net
>>631
Perl 5 とも互換性ちゃんとあるんだね!
構文とか結構みてなんとなくわかってきたw

ふえた構文とかあるの?
どこかいいサイトない?

633 :uy ◆Qawu9.2l1E :2015/11/07(土) 21:33:13.01 ID:oj5NSdiM.net
英語追試レベルの俺ですら公式リファレンス読むのに

634 :デフォルトの名無しさん:2015/11/08(日) 11:33:55.51 ID:iOvet9fD.net
uy生きてたのかよ

635 :デフォルトの名無しさん:2015/11/08(日) 17:07:37.22 ID:Rsk88cb5.net
>>632
http://perldoc.jp/
をブックマークしとけばいいと思うよ。

636 :デフォルトの名無しさん:2015/11/08(日) 20:54:11.25 ID:by3hLAgU.net
perlのモジュール読み込み(use文)について質問です。

呼び出し元のモジュール ***.pl ファイルと同じフォルダに、
xxx.pm ファイルを置いています。(フォルダはデスクトップにあります)

@INC に . があるので、これで
use xxx.pm すれば読み込めるはずなのに、実行すると
Can't locate xxx.pm in @INC
のエラーが出ます。

この場合、どのようにしたらよろしいでしょうか。

637 :デフォルトの名無しさん:2015/11/08(日) 21:05:19.51 ID:AfSZKK5w.net
@INCの.は、スクリプト実行時のカレントディレクトリの事

use lib して、パスを @INCに追加するコードを ***.pl に加える

638 :デフォルトの名無しさん:2015/11/08(日) 21:11:49.23 ID:by3hLAgU.net
>>637
ありがとうございました。動きました。

639 :デフォルトの名無しさん:2015/11/11(水) 21:58:09.59 ID:IZk3uYUW.net
->
ってどんな意味があるのですか?

640 :デフォルトの名無しさん:2015/11/11(水) 22:47:27.91 ID:VZfzcqFQ.net
デリファレンスだよ。
http://perldoc.jp/docs/perl/5.20.1/perlreftut.pod
http://perldoc.jp/docs/perl/5.20.1/perlref.pod
を読みなさい。

641 :デフォルトの名無しさん:2015/11/12(木) 10:35:24.91 ID:lxsWFQ/W.net
>>640
あざます

642 :デフォルトの名無しさん:2015/11/12(木) 14:03:48.49 ID:DhWMoO2o.net
秀丸エディタって使いにくくね?
大学のPCにも最初から入ってたし、会社のPCにも最初から入ってたが、
何でこんなに使いにくいものを金出してまで入れてるのか意味不明
馬鹿なの?
K2EditorとかTeraPadのほうがマシだろ

まあいつまでも時代遅れのゴミにしがみついてるPerl厨は低知能のクズしかいないから秀丸エディタがおすすめだけども

643 :デフォルトの名無しさん:2015/11/12(木) 14:39:07.44 ID:XCvL4gE3.net
ふつう vi
それ以外は認めない

644 :デフォルトの名無しさん:2015/11/12(木) 19:10:20.03 ID:DhWMoO2o.net
普通はviだわな
そして普通はPerlなんてゴミは使わずにPHP使うわな

色々と(悪い意味で)普通ではないPerl厨

645 :デフォルトの名無しさん:2015/11/12(木) 21:26:17.51 ID:IFYI+LPx.net
君何しに来たの?

646 :デフォルトの名無しさん:2015/11/13(金) 00:45:40.71 ID:ikUKmVnv.net
PHPしか触れないマンは能力が低いとだけ

647 :デフォルトの名無しさん:2015/11/15(日) 16:06:14.57 ID:fMss6NJA.net
Notepad++, Sublime Text, Emacs 使いもみとめてくれ

648 :デフォルトの名無しさん:2015/11/16(月) 23:57:04.03 ID:uzaWZioD.net
ファイルハンドルを変数に格納するには
local(*IN);
my($fh) = *IN;

open($fh,"log_file.dat");
close($fh);
というやりかたで正しいですか?

649 :デフォルトの名無しさん:2015/11/17(火) 00:39:11.74 ID:c7Lcp+iz.net
そのコードを、デバッグ実行してみれば?

650 :デフォルトの名無しさん:2015/11/17(火) 00:41:00.33 ID:Lol1yQT9.net
おそらくだめ。動きはするけど。
型グロブはグローバル識別子の値の共有。
すごく古いPerlやモジュールではない限り型グロブを使ったファイルハンドルの受け渡しはしない。

目的と周辺環境がいまいちわからんけど、
古すぎる何かを使ってない限り
open my $fh, '>', $file_name;
でいきなり作れるし扱える。

INはどこから来たの?
おそらくINにグローバル共有で渡してるのが間違い。

モジュールが古すぎるなら別も物を使用する。(戻り値などでファイルハンドルを返したりできる形式の物)。
自分で作った関数なら、作り直す。(戻り値などにファイルハンドルを返したり受け取ったりする形式)
openする時に、無意味にINを作ってるだけなら、作る必要はない。 (上記の記述で、自動で「無名のグローバル識別子の実体」と「そのリファレンス(型グロブ)」と言う、謎の物が生成される。(つまりINと言う識別子名を必要としない))。

651 :デフォルトの名無しさん:2015/11/17(火) 01:56:10.24 ID:FRdVd2Wo.net
今時 open のために local は使わないかな。少なくとも直接は使わない。

open( my $fh,"log_file.dat");
close( $fh);

でいいと思うよ。
http://perldoc.jp/docs/perl/5.18.1/perlopentut.pod
の「間接ファイルハンドル」のところを読みなさい。
または標準モジュールの IO::File を使う。

$fh = IO::File->new("log_file.dat");

いずれにしても必ずエラーチェックすること。
それから、この書き方では入力しかできない。入力でいいなら >>650 の真似をしてはいけない。
入力以外をしたいならマニュアルを読むこと。
ちなみに、local で作られるのはローカル化されたパッケージ変数。グローバル変数ではない。
どうも >>650 はあまり理解できていないように見受けられる。

652 :デフォルトの名無しさん:2015/11/17(火) 02:52:54.08 ID:FRdVd2Wo.net
ごめん、聞きたいのはその書き方が正しいかどうかだよね。
書き方に明らかな間違いは無い。IN がそこにしか現れないならちゃんと動くだろう。
しかしバグを避けたいならその書き方はやめておいた方がいい。
理由を一言で言うならパッケージ変数はダイナミックスコープを持つからだ。

653 :デフォルトの名無しさん:2015/11/17(火) 02:55:17.89 ID:Lol1yQT9.net
>ちなみに、local で作られるのはローカル化されたパッケージ変数。グローバル変数ではない。
へぇー
まぁ何も言うまい

654 :デフォルトの名無しさん:2015/11/17(火) 11:14:19.85 ID:ioFPJbGAY
Perlのグローバル変数議論になると、グローバル変数とは何かの議論になって、実に不毛。
Perlにおいて、どこからでも参照できて、同じ内容を参照してることが保証されるのは、
特殊変数ぐらいなもの。

655 :デフォルトの名無しさん:2015/11/17(火) 18:51:49.72 ID:Lol1yQT9.net
たった今から外国人縛りなるものを始めた。

最初に全部解雇。
ドラフトは最下位の選手を取ってそのまま破棄
あとは安い外国人をどんどん雇う。2000万の外人とか超掘り出し物
トライアウトも外人は全部買い占め。


でも、なんだかバグったんだよね。

656 :デフォルトの名無しさん:2015/11/17(火) 21:19:27.96 ID:SsP+S201.net
ttp://hayabusa6.2ch.net/test/read.cgi/gameama/1441788288/881

657 :デフォルトの名無しさん:2015/11/17(火) 22:19:10.89 ID:Lol1yQT9.net
その再帰のスタックは一番最適化した時で、
ループの時の (3 * 2 / 6 * 5) / 3 だよ

だた最終的な順番性の保持が必要じゃないと思うけど。
なのでおそらく最低資源量の理論値が間違い

658 :デフォルトの名無しさん:2015/11/25(水) 23:17:39.10 ID:nppNKaNJ.net
POST送信の場合でブラウザの戻るボタンを押したとき
ページの有効期限切れとか出るんだけど
これが出ないようにすることはできますか?
PHPではこれが出ないやり方が書いてあったけどperlではなかったので

659 :デフォルトの名無しさん:2015/11/26(木) 03:04:16.75 ID:oAsmLq1R.net
PHPと同じやり方すればいいよ

660 :デフォルトの名無しさん:2015/11/26(木) 03:04:50.23 ID:oAsmLq1R.net
訂正
PHPと同じやり方すればいいにょ

661 :デフォルトの名無しさん:2015/11/27(金) 00:44:55.83 ID:VvUYa3rN.net
ブラウザの種類もバージョンも書かれていないが、そもそもperlはサーバー側
で動作するのでクライアント側の動作はコントロールできない。
JavaScript で書いて、ドキュメントに埋め込む方法で解決するべし。

662 :デフォルトの名無しさん:2015/11/27(金) 16:35:45.53 ID:xA1zct9c.net
decodeしてするとprintfが多バイト、1バイト両方を1文字として扱うため
表示がずれるんですが、printf関数だけは多バイト文字を2文字として扱うようにする
いい方法はないでしょうか?

$ perl -e 'use Encode; binmode STDOUT,":encoding(cp932)";printf"%05s\n",decode("Shift_JIS",qq/あい/)'
000あい
これを「0あい」と表示するようにしたいです

663 :デフォルトの名無しさん:2015/11/27(金) 16:50:33.59 ID:xA1zct9c.net
http://okwave.jp/qa/q7039163.html
事故レスですが、ここに答えありました

binmode(STDOUT,":bytes");

と出力をバイトモードにすればいいみたいですね

664 :デフォルトの名無しさん:2015/11/27(金) 22:14:46.79 ID:bQBvJ959.net
printfの成形の段階で文字じゃなくバイトで扱いたいならその時点でencodeすべき(decodeされた"文字"を渡すべきでない)と思う

665 :デフォルトの名無しさん:2015/11/28(土) 00:57:52.83 ID:5xoIDpx5.net
似たようなところで、Perlが様々な所で1文字を1単位として扱うのをやめさせるには
use bytes;
と言うのもあるよ。
レキシカルスコープだから好きなところでだけ使うといい。

use utf8;
my $p = 'あいうえお';


{
use bytes;

print + length($p) . "\n"; # バイト数(utf8なら15のはず)

my $byte_p = $p; # 置換用コピー
$byte_p =~ s/./0/g;
print + $byte_p . "\n"; # utf8なら0が15個になってるはず

}
{
print + length($p) . "\n"; # 文字数(5文字のはず)

my $string_p = $p; # 置換用コピー
$string_p =~ s/./0/g;
print + $string_p . "\n"; # 0が5個
}

666 :デフォルトの名無しさん:2015/11/28(土) 14:29:18.52 ID:YlOdRsn5.net
ActivePerlのPPMに登録するCPAN用のロケーションを教えてください。
以前のcpan.uwinnipeg.ca/PPMPckagws/10xx/は使えなくなっているようです

667 :デフォルトの名無しさん:2015/11/28(土) 23:34:39.74 ID:UVtxAzTA.net
>>666
今は ActiveState のリポジトリが充実してるから、
網羅的な外部リポジトリだと Bribes de Perl ぐらいしか有用な所は残っていない
http://www.bribes.org/perl/

668 :デフォルトの名無しさん:2015/11/28(土) 23:42:57.28 ID:fFFKFgep.net
Perlの正規表現でUTF-8のマルチバイト文字にマッチさせるにはどうしたらいいの?
色々試したら、16進数に変換してから、その16進数を使えばマッチするようになったんだが
めんどくさすぎる

669 :デフォルトの名無しさん:2015/11/29(日) 00:13:48.83 ID:DITQRgW6.net
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1448404407/-13

670 :デフォルトの名無しさん:2015/11/29(日) 01:13:07.59 ID:3h4H/kBH.net
>>669
何の宣伝か分からない。
カードゲームのシステムを安く作るってことか?

671 :デフォルトの名無しさん:2015/11/29(日) 01:16:30.30 ID:p0UOa4e5.net
>>668
>>5

672 :デフォルトの名無しさん:2015/11/29(日) 01:58:55.89 ID:a1noPb1L.net
>>664
なんでもかんでもデコードすればいいってもんじゃないんですね
>>665
これは便利ですね!いったんデコードした文字列もdo{use bytes;}
の中ならバイト列として扱えるのですね

673 :デフォルトの名無しさん:2015/11/29(日) 02:23:31.65 ID:+AoBy21/.net
>>667
CPANが網羅できてて安定してればいいんだが、そのURLが良さそうだな
サンクス

674 :デフォルトの名無しさん:2015/11/29(日) 03:13:39.70 ID:rf1AiNx3.net
win10の64bit版でperl32bit版動くかな?
ちなみにwin7の64bitではperl32動いてます

675 :デフォルトの名無しさん:2015/11/29(日) 11:43:31.98 ID:caDIIhtW.net
文字として扱いたいならdecodeする(perlにこのバイト列は文字だよと教えてあげる)、この場合出力するときはencodeが必要
基本的な考え方はこれだけで、バイトのまま扱いたいならdecodeする意味がない

>>668の場合「『文字』にマッチさせる」ならdecodeしようぜというだけの簡単な話

676 :デフォルトの名無しさん:2015/11/30(月) 01:24:27.68 ID:krhCx465.net
>>668
(?:[\x00-\x7F]|[\xC0-\xF4][\x80-\xBF]+)
こういうのを求めているのかい?

677 :デフォルトの名無しさん:2015/11/30(月) 08:15:05.54 ID:yyLLqUKU.net
>>670
非電源トレーディング・カード・ゲーム(TCG)をオンライン対戦化できるソフト。
更に様々な組み合わせでカードゲームのシステムを好みにエディット可能。

678 :デフォルトの名無しさん:2015/12/02(水) 08:12:04.67 ID:GMHMoCLy.net
リファレンスカウンタが動くとき手を加えたいのですが、
これはどのようにすれば良いのでしょうか。

具体的には、スコープを抜けたときの処理が自動 (イベントハンドラ?) なので、
連動して自動処理を組み込みたい場合などです。

679 :デフォルトの名無しさん:2015/12/02(水) 11:52:28.44 ID:bHvwVQ5s.net
>>678
何をしたいのかさっぱり分からんが、恐らくとてもPerlらしくないコードを書いてるんだと思う。
http://search.cpan.org/~pevans/Devel-Refcount/
http://perldoc.jp/docs/perl/perlobj.pod#Destructors

680 :デフォルトの名無しさん:2015/12/02(水) 12:33:56.27 ID:GMHMoCLy.net
上のリンクで半分だけ解決しますた。(まぁ元から知ってたけど)。
すまんが残りの半分(ハンドラ相当の部分)も頼む

681 :デフォルトの名無しさん:2015/12/02(水) 12:56:43.05 ID:uQGCYyvQ.net
perlでget送信で未入力のフォームを送信しない方法って
location使って未入力のデータを省いたURLを作りリダイレクトるす以外にありますか?

682 :デフォルトの名無しさん:2015/12/02(水) 13:04:56.34 ID:Qr4XnEb4.net
そういうのはWebProg板じゃないの?

683 :デフォルトの名無しさん:2015/12/02(水) 13:13:42.64 ID:xfNgImPx.net
> location使って未入力のデータを省いたURLを作りリダイレクトるす

酷い方法だな。そんなこと絶対にやらない。

684 :デフォルトの名無しさん:2015/12/02(水) 13:52:48.42 ID:GMHMoCLy.net
たぶん解決しますたー
解決法が分かって逆にPerl使うのやめようかと思うほどだったけど。
分かる人は分かるだろうからなぜかは言うまい。

685 :デフォルトの名無しさん:2015/12/02(水) 14:09:54.07 ID:skx8YAXh.net
>>684
で、どうやったの?
最初の質問からはデストラクタを連想したけど

686 :デフォルトの名無しさん:2015/12/02(水) 15:43:50.02 ID:uQGCYyvQ.net
>>683
location使う方法のどこがひどいのか答えろ
じゃあ他にいい方法あるの?

687 :デフォルトの名無しさん:2015/12/02(水) 16:16:30.40 ID:FA69z9wL.net
送信しないって、
フォーム上に何が入っていても無効にしたいということなんだろう?
HTML上にキャンセルボタンを付けたいと言う意味だと思うんだけど、
違うの?

688 :デフォルトの名無しさん:2015/12/02(水) 16:32:42.48 ID:xfNgImPx.net
>>686
if フォームが空なら
 処理をキャンセル


これだけじゃんw

689 :デフォルトの名無しさん:2015/12/02(水) 17:27:24.76 ID:skx8YAXh.net
まず質問の意味がよくわからん
もっと詳しく

690 :デフォルトの名無しさん:2015/12/02(水) 17:59:46.21 ID:uQGCYyvQ.net
<FORM METHOD="get" ACTION=\"test.cgi">
<input name="aaa">
<input name="bbb">
<input name="ccc">
<input type="submit" name="soushin" value="送信">
</FORM>

このフォームのaaaに100、bbbに200、cccに300を入れて送信すると
test.cgi?aaa=100&bbb=200&ccc=300となるやろ
そしてaaaに100を入力してbbbとcccに何も入力しなくて送信した場合
test.cgi?aaa=100&bbb=&ccc=となるけど
入力してないフォームのbbb=&ccc=の部分までurlに表示されてしまうので
test.cgi?aaa=100だけの形にしたいってことやで

691 :デフォルトの名無しさん:2015/12/02(水) 18:47:39.04 ID:xfNgImPx.net
>>690
それで、未入力のフォームを送信しない方法ですよね?

送信しちゃダメなんですよ?

692 :デフォルトの名無しさん:2015/12/02(水) 18:53:06.24 ID:uQGCYyvQ.net
書き方がおかしかったかもしれないけど
送信しないというよりURLに表示させないということを書きたかった

693 :デフォルトの名無しさん:2015/12/02(水) 19:31:38.07 ID:skx8YAXh.net
クライアントの動作なんてperlでどうにもできないのでjavascriptとかで頑張ってください

694 :デフォルトの名無しさん:2015/12/02(水) 19:50:18.63 ID:G6CksgA0.net
>?aaa=100&bbb=&ccc=
普通こういうのは、Form送信(Post)でする。
Getではやらない

>送信しないというより、URLに表示させない

普通はFormで(クライアント側のJavaScriptで)、
入力チェックするから、未入力項目があれば送信されない

初歩的なアプリの作り方がわかっていないのでは?

695 :デフォルトの名無しさん:2015/12/02(水) 19:56:41.86 ID:xfNgImPx.net
> 普通こういうのは、Form送信(Post)でする。
> Getではやらない

へぇ〜検索も?(・∀・)ニヤニヤ

> 初歩的なアプリの作り方がわかっていないのでは?
クスクスw

696 :676:2015/12/02(水) 20:43:48.41 ID:G6CksgA0.net
GETを使う場合は、そのURLをお気に入りに登録したいとか、
リンクとして使いたいなど

だから、そのURLが常に存在しないといけない。
誰かがアクセスしたら、そういうURLが存在しないではいけない

Formの入力欄に記入するようなものは普通、Postを使う

697 :デフォルトの名無しさん:2015/12/02(水) 21:19:51.89 ID:xfNgImPx.net
> Formの入力欄に記入するようなものは普通、Postを使う

へぇ〜検索も?(・∀・)ニヤニヤ

698 :デフォルトの名無しさん:2015/12/02(水) 22:15:13.24 ID:ReYMJI7v.net
普通って書いてるじゃん。気持ち悪いなぁ。質問への答えも的外れだし。
初心者うざいからどっか行ってくれない?

699 :デフォルトの名無しさん:2015/12/02(水) 22:18:24.24 ID:xfNgImPx.net
検索機能は普通の機能ですが?

700 :デフォルトの名無しさん:2015/12/02(水) 22:32:49.85 ID:ReYMJI7v.net
検索機能が普通の機能かどうかなんてお前しか話題にしてないんだが。
キチガイ?

701 :デフォルトの名無しさん:2015/12/02(水) 22:34:37.08 ID:xfNgImPx.net
> 普通こういうのは、Form送信(Post)でする。
> 普通って書いてるじゃん



そっかー、普通かどうかが重要なところなんだなー



> 検索機能が普通の機能かどうかなんてお前しか話題にしてないんだが。

ワロタwwwww

702 :デフォルトの名無しさん:2015/12/02(水) 22:37:28.54 ID:ReYMJI7v.net
<FORM METHOD="get" ACTION=\"test.cgi">
<input name="aaa">
<input name="bbb">
<input name="ccc">
<input type="submit" name="soushin" value="送信">
</FORM>

「こういうの」が検索に見えるか?

703 :デフォルトの名無しさん:2015/12/02(水) 22:43:35.03 ID:xfNgImPx.net
AND検索で有りそうだなw

704 :デフォルトの名無しさん:2015/12/03(木) 00:30:55.56 ID:57HAAYTY.net
([\x00-\x7F]|[\xC0-\xF4][\x80-\xBF]+)
にしたらperl4でもデコード(このバイト列は文字だよと教えてあげる)、できました

705 :デフォルトの名無しさん:2015/12/03(木) 13:28:03.02 ID:SmbrklNs.net
AND検索なら、スペース区切りでやりたいな

706 :デフォルトの名無しさん:2015/12/03(木) 15:10:38.45 ID:+xl+clky.net
>>692
問題は解決したかい?
そんなことしなくても誰も気にしないと思うんだけどね。
Google だってそんなことしてない。
どうしてもやりたいなら止めないけど少なくとも「javascript 必須」などという不親切はしないでほしい。

707 :デフォルトの名無しさん:2015/12/03(木) 15:46:18.27 ID:z7gVyZ5r.net
>>705
重要じゃないことなんだらいちいち言わなくていいよ。
「なら OR検索で」で終わる話だろ?

708 :デフォルトの名無しさん:2015/12/04(金) 12:43:39.83 ID:V2tRhvU9.net
test1.plに
package test1;
sub aaa{}という関数があり

これをtest2.plで呼び出すにはtest1::aaa();とするんだけど
aaaという関数をtest1.plからtest3.plにあるpacage test3;に移した場合
全てのtest1::aaa()を呼び出しているところをtest3::aaa()に書き換えなければならないのがめんどくさいです
違うpakageに関数を移して上記のように書き換えなくても処理できる方法を教えてください

709 :デフォルトの名無しさん:2015/12/04(金) 16:28:36.08 ID:IO9RpOoW.net
まずなぜ名前を変えるのか。名前を変えたらアクセス先が変わるのは当たり前。普通は名前を変えるなんて事態はおこさない。どんな言語でも。
それでもどうしてもそうしたいなら、オブジェクト指向かそれ相当の仕組みを作れば、名前に左右されるのはコンストラクタだけで済む。
メソッドについては、インスタンスが自分の所属を知っているから。
そんな理由でオブジェクト指向相当の仕組み作る人いないとは思うけど。

710 :デフォルトの名無しさん:2015/12/04(金) 16:29:50.68 ID:a4wJK9sN.net
普通にやれば、javascript 必須になるだろ

プログラミングの前にまず設計フェーズで、
画面構成を考える

画面入力 → 送信 → エラー
は、どう見てもおかしい

画面入力 → 入力チェック → 送信
送信の前に、未入力などは入力チェックではじくのが普通

一々、送信して確かめるまでもない。
もし送信エラーにでもなれば、ずっと待たないといけないし、
未入力を確かめるだけに、待つのはアホらしい

711 :デフォルトの名無しさん:2015/12/04(金) 16:39:47.69 ID:X5G422Yr.net
>>709
> まずなぜ名前を変えるのか。

適切じゃなくなったからだろ。
普通は最初は小さく作って大きくなったら
それぞれの役割に分けるものだよ。

最初から大規模を考えて作ったりしない。
時間の無駄だからね。

712 :デフォルトの名無しさん:2015/12/04(金) 16:48:42.73 ID:IO9RpOoW.net
俺にちょっかいけけてどうする
そう思うなら答えてやれよ。その知識()で。

713 :デフォルトの名無しさん:2015/12/04(金) 16:51:05.92 ID:IO9RpOoW.net
まぁさっき書いた方法以外にもいくつかあるが
どっちにせよ基本デザインから癖にしたほうがいいさ

714 :デフォルトの名無しさん:2015/12/04(金) 17:30:17.24 ID:+8iGMfAv.net
>>710
当人そっちのけでまだ続けるの? それは無能な奴の「普通」だ。
動作しなくても問題無いように書いて、動作させるかどうか
クライアントに選ばせるのがまともな人の「普通」だ。

715 :デフォルトの名無しさん:2015/12/04(金) 17:35:53.48 ID:2UHuclpm.net
>>708
適当なところで
*test1::aaa = *test3::aaa;
これで呼び出し元を書き換えなくてもtest3:::aaa()を呼んでるのとほぼ同じ

名前で指定している以上名前に依存しているので変更する可能性があるなら名前に依存しないようにするのがいいね
最初に依存させてしまった場合面倒でも書き換えるか上記のように小手先で凌ぐしかない

716 :デフォルトの名無しさん:2015/12/04(金) 17:47:14.94 ID:IO9RpOoW.net
ちゃちゃ入れたいわけじゃないが、それでは名前を変えてる意味自体がないような。
と言うか名前を変えたいのに呼び出しの名前は変えたくないって設計自体がおかしいんだが。

俺は山田太郎だったが、今日から鈴木太郎にすることにする。
でもお前らは山田太郎と呼べ。鈴木太郎と呼ぶな。

717 :デフォルトの名無しさん:2015/12/04(金) 17:55:12.54 ID:X5G422Yr.net
>>716
ご結婚おめでとうございます。

718 :sage:2015/12/04(金) 19:12:31.19 ID:nXWHZn48.net
こんなのどう?
# test1.pl
package test1;
use test3.pl;
sub aaa{
return test3::aaa(@_);
}

719 :デフォルトの名無しさん:2015/12/04(金) 19:20:46.54 ID:2UHuclpm.net
>use test3.pl;
アウト

720 :デフォルトの名無しさん:2015/12/04(金) 20:02:59.28 ID:M6a+qJl9.net
怠慢で傲慢な人間はすぐプログラムに逃げる!!!!!!!!!!!!!!!

721 :デフォルトの名無しさん:2015/12/05(土) 00:29:23.46 ID:ri/S3r3P.net
use Exporter; でエクスポートして、パッケージ修飾なしで呼び出すとよい。

722 :デフォルトの名無しさん:2015/12/06(日) 01:04:28.60 ID:IvZuYvTu.net
>>720
それでええんやで。
怠惰であるための努力は惜しまないのはプログラマの美徳。

723 :デフォルトの名無しさん:2015/12/06(日) 05:10:20.84 ID:8XEspSV4.net
関数やオブジェクトで想定済みのエラーが発生した際、
呼び出し元でエラーが発生したように die みたいのを出力する仕組みがあったと思うのですが、思い出せません。
どうやるのでしょうか

724 :デフォルトの名無しさん:2015/12/06(日) 05:13:24.94 ID:8XEspSV4.net
自己解説しました(速)

725 :デフォルトの名無しさん:2015/12/06(日) 10:43:20.32 ID:s7gSNx8c.net
自己解決したならその方法残してけよ
Carp::croakでしたとか

726 :デフォルトの名無しさん:2015/12/06(日) 16:05:37.79 ID:LGfwZwX+.net
Perlはとことんゴミだな
APNS使おうとしてもエラーでどうにもならない
CPANとかゆうゴミをいれたくなかったが入れたらどうにかなるかと思いきやこれもエラーでまともに動かない
サーバーが汚れただけ
そして数時間試行錯誤しても動かない
こんなゴミ言語が未だに存在してることに驚き
簡単な処理しかできない、簡単な処理ならわざわざこんなゴミを使わなくてもシェルスクリプトで十分

存在価値も学ぶ価値もないゴミ
それがPerl

727 :デフォルトの名無しさん:2015/12/06(日) 16:06:39.42 ID:0+P86g0v.net
>>726
perlもろくに使えない子かよ

728 :デフォルトの名無しさん:2015/12/06(日) 16:09:59.84 ID:tvkQIcTy.net
自分が使えない、できないことはなんでもゴミ扱いになる奴、いるよねぇwww

729 :デフォルトの名無しさん:2015/12/06(日) 16:29:49.95 ID:mcZOC1Ov.net
面接時に、「Perl使えますか?」って聞くと良いかもな

730 :デフォルトの名無しさん:2015/12/06(日) 19:33:37.72 ID:LGfwZwX+.net
諦めてPHPでやったら30分足らずでできたwwwwwwwwwwwwwwwwwwwwwwwwwww
Perlはゴミすぎてどうにもならんから先方には説明して外部コマンドでPHPを実行してもらうことにするわw

本当にPerlはゴミだな
時間の無駄にしかならない
使い物にならないゴミを使えるのははっきり言ってキチガイ
Perlみたいなゴミは使えなくて当たり前、使えるのは異常者

言い換えれば
ゴキブリは食えなくて当たり前、食えるのは異常者

ゴキブリイーターパール厨wwwwwwwwwwwwwwwwww

731 :デフォルトの名無しさん:2015/12/06(日) 19:37:39.05 ID:LGfwZwX+.net
2023年に消えてなくなるとかってスレ建ってたが、そんなにもつわけないだろww
オリンピックまでもつかどうかwwwwwww

732 :デフォルトの名無しさん:2015/12/06(日) 19:41:27.13 ID:3UcP48Kh.net
理解できないと言うのは、個人の能力だから仕方ないな。

CGIに限らず、Perlはサーバー管理のいたるところで使っている。
プログラム作成時にもPerlが必要。
管理者を目指したいならマスターと使いこなせる能力がどうしても必要になる。
管理者になりたくないなら必要ないかも知れないな。

733 :デフォルトの名無しさん:2015/12/06(日) 19:58:26.84 ID:8XEspSV4.net
触らなくもいいぞ

734 :デフォルトの名無しさん:2015/12/07(月) 07:30:47.52 ID:DL/Ny2Dm.net
偽サイト扱いにしようとしてるんだけど
見る方法あるかな?
http://webcache.googleusercontent.com/search?q=cache:I--rFvcld7oJ:item.rakuten.co.jp/gsc-rinkan/50829-151021-0291/+&cd=2&hl=ja&ct=clnk&gl=jp

735 :デフォルトの名無しさん:2015/12/07(月) 10:10:21.92 ID:g2cewZx1.net
>>726
APNSもCPANもロクに動かせないで可哀想
高校生の俺でもできるんだが?

736 :デフォルトの名無しさん:2015/12/07(月) 10:11:28.47 ID:g2cewZx1.net
>>730
君にはPHPがお似合いだよ

737 :デフォルトの名無しさん:2015/12/07(月) 17:56:48.21 ID:WaL6xLeX.net
>>735
「ゴキブリも食べられないなんて可哀想
高校生の俺でも食べられるんだが?」
と言ってるのと同じだということに気付かない

子供は自分の世界が全てだからそれが世間でどう見られるか分からないんだろうな
バカッターで犯罪自慢するガキとある意味同じ精神構造

738 :デフォルトの名無しさん:2015/12/07(月) 22:19:18.68 ID:7ldc1+VM.net
APNSもCPANはゴキブリじゃないので全く検討違いのたとえだなw

739 :デフォルトの名無しさん:2015/12/07(月) 23:18:48.88 ID:sV5LLRP4.net
もう触るなよ(呆れ)

740 :デフォルトの名無しさん:2015/12/07(月) 23:24:22.59 ID:WaL6xLeX.net
丸一日かかっても文字化けが直らない
これはもう完全にPerlがゴミだからだろう
マルチバイト文字すらまともに扱えないゴミそれがPerl

プログラム全般の腕は神クラスだからちょっとした機能追加程度ならPerlでもできるだろうと思って引き受けたのが間違いだった
Perlがゴミすぎて多少金もらったところで割に合わん

CPAN=世の中に不要=ゴキブリ
だから例えになってる
APNSゴキブリかどうか怪しいライン

文字コードすらまともに扱えないゴミ言語Perl

741 :デフォルトの名無しさん:2015/12/07(月) 23:25:34.32 ID:g3R3jQC/.net
$str = "abcdef";
$str = substr($str,0,4);
print "str=$str";
の場合はstr=abcdですが

$str = "abcあいうえお";
$str = substr($str,0,4);
print "str=$str";
の場合だと全角文字の1バイト分を切り取ってしまうのでabc?のように文字化けしまいます

そこで全角文字の1バイト分を切り取ってしまっている判定をするにはどうしたらいいんですか?

742 :デフォルトの名無しさん:2015/12/07(月) 23:30:39.77 ID:7ldc1+VM.net
> の場合だと全角文字の1バイト分を切り取ってしまうのでabc?のように文字化けしまいます

正しく扱っているならば「abcあ」とちゃんと4文字分表示されるはずですが?
ソースコードをUTF8で書いて、use utf8;をファイルの頭に入れてください。

743 :デフォルトの名無しさん:2015/12/07(月) 23:32:19.49 ID:7ldc1+VM.net
RubyでもPythonでもJavaScriptでもUTF8がソースコードの文字コードの標準なので、
ソースコードは必ずUTF8で書くようにしてください。

744 :デフォルトの名無しさん:2015/12/08(火) 01:32:22.78 ID:Vr6uKUE9.net
cpanがゴキってのはおかしくないか。世間一般では、cpanそのもはゴキではなく、ゴキの集まる排水溝や汚物入れのイメージだろう。

745 :デフォルトの名無しさん:2015/12/08(火) 01:53:20.21 ID:XWTC8s4u.net
cpanってなにかと思ったらRubyでいうGemsみたいなもんか。
ゴキブリ?

746 :デフォルトの名無しさん:2015/12/08(火) 18:23:20.26 ID:4zt2FdXQ.net
open(LOCK,"test.lock");
my($locked) = flock(LOCK,6);

print "locked=$locked<br>";

foreach(1...10){

sleep(1);

}

close(LOCK);#ロックの解除

これを実行して別プロセスで10秒以内にこれを実行すると
あとから実行したプロセスの$lockedが1なのでロックできたことになり排他処理にならないです
理論的にはあとから実行したプロセスは前のプロセスがロック中なのでロックできないので
$lockedが0にならないとおかしいのにロックできてしまう理由を教えてください

747 :デフォルトの名無しさん:2015/12/08(火) 23:31:16.80 ID:MH5dvwqp.net
>>746
実行環境ぐらい書いてくれんか。

http://perldoc.jp/docs/perl/perlfaq5.pod#How32can32I32lock32a32file63
http://perldoc.jp/func/flock
http://perldoc.jp/func/sleep

#!/usr/bin/perl -w
use strict;
use Fcntl qw(:DEFAULT :flock);
my $file = './count.txt';
$|++;
sysopen my $fh, $file, O_RDWR|O_CREAT or die "can't open $file: $!";
flock $fh, LOCK_EX|LOCK_NB or die "can't flock $file: $!";
my $num = <$fh> || 0;
seek $fh, 0, 0 or die "can't rewind $file: $!";
truncate $fh, 0 or die "can't truncate $file: $!";
print "count up $num -> ", $num + 1, ', wait...';
print $fh $num + 1 or die "can't write $file: $!";
sleep 10;
close $fh or die "can't close $file: $!";
print "done.\n";
__END__

Win7だとこれで後から実行したプロセスは
can't flock ./count.txt: ブロック不可のソケット操作をすぐに完了できませんでした。 at test.p line 7.
とすぐにエラー吐いて終わる。

748 :デフォルトの名無しさん:2015/12/08(火) 23:41:12.77 ID:4zt2FdXQ.net
win 7でperl5.8やで

749 :デフォルトの名無しさん:2015/12/09(水) 02:01:44.86 ID:Rl0M6cqs.net
Perl3の時点で8ビットクリーンだから文字コードの件は解決されてるよ
まさかPerl2を使ってるんじゃないだろうね?

750 :デフォルトの名無しさん:2015/12/09(水) 04:34:41.35 ID:ZwktDk40.net
>>749
文字コードの問題って?
言い方がアバウトすぎる。その言い方だと文字コードに
関する全ての問題が解決したかのようだ。

あたり前だが、どんな文字コードも扱えるってだけで
文字コードの変換は必要。

751 :デフォルトの名無しさん:2015/12/09(水) 07:53:11.22 ID:C7vm2jzF.net
>>746
こっちだと後からの$lockedは0になった
win7でcygwinでperl5.14.2

752 :デフォルトの名無しさん:2015/12/09(水) 08:58:01.77 ID:FsDy/hTq.net
open(LOCK,"test.lock");
my($locked) = flock(LOCK,6);

print "locked=$locked<br>";

foreach(1...10){

sleep(1);

}

close(LOCK);#ロックの解除

をlock_test.cgiファイルに保存して実行し、その数秒あと別プロセスでlock_test.cgiを実行すると
あとのプロセスのlockedも1になったが
同じプログラムでlock_test2.cgiを作りlock_test.cgiの数秒あとにlock_test2.cgiを実行したら
lockedが0になった
違うファイルとして実行すると結果が変わりました
これはどうしてですか?

753 :デフォルトの名無しさん:2015/12/09(水) 10:15:10.84 ID:RETk1FrE.net
プロセスが関係してると思われる。
それ以上は実行環境がわからんとわからん。

754 :デフォルトの名無しさん:2015/12/09(水) 15:32:32.02 ID:FsDy/hTq.net
foreach(1...10){

sleep(1);
my($time) = time;
print "time=$time";

}
このようにtimeを入れてプロセスを調べてみたら
プロセス1の処理中にプロセス2を実行しても
プロセス2の最初のtimeがプロセス1の一番最後のtimeより大きい値になっていたので
プロセス1と2は被らないことがわかりました。
たぶんプロセス1の処理が終わるまで待機しているんだと思う。

755 :デフォルトの名無しさん:2015/12/10(木) 17:59:54.68 ID:3u6QjuZw.net
パスワードを暗号化する場合crpty関数を使うのはやめたほうがいいですか?
この関数の暗号化は解読されにくいですか?

756 :デフォルトの名無しさん:2015/12/10(木) 18:42:16.45 ID:Ti4G586p.net
>>755
どんな暗号化でも、暗号に使ったキーがばれれば解読されます。

757 :デフォルトの名無しさん:2015/12/10(木) 18:43:53.98 ID:T5ZWNGJ6.net
cryptのことだと思うけど、そもそも非可逆です

758 :デフォルトの名無しさん:2015/12/12(土) 11:34:57.46 ID:l5nWdIDH.net
文字コード変換の話を持ち出してわざわざ問題を作っちゃいけないよ

759 :デフォルトの名無しさん:2015/12/15(火) 10:42:06.73 ID:lk10G3Xu.net
MACアドレスを取得する方法を教えてください
これが取得できればセッションIDなんて作らなくてもいいので

760 :デフォルトの名無しさん:2015/12/15(火) 11:48:54.31 ID:DSeHdp2+.net
同一セグメント内でなければ無理

761 :デフォルトの名無しさん:2015/12/15(火) 12:34:09.93 ID:xDMHhclP.net
>>759
ifconfig呼べば?

762 :デフォルトの名無しさん:2015/12/15(火) 15:05:13.03 ID:J0Uf6VI2.net
>>759
Windowsなら、これでいいんじゃない?
encode と decode をちゃんとやれば。

print `net config workstation`;

763 :デフォルトの名無しさん:2015/12/15(火) 15:52:58.98 ID:r7pOSKDf.net
どうせまたWebプログラムの話なんだろ?

764 :デフォルトの名無しさん:2015/12/15(火) 22:15:28.25 ID:ECtQrB8h.net
my @nihongo = $_ =~ m/(?:[^\p{InBasicLatin}。-゚])/g;
my $output = sprintf "%-*s%s", 24 - scalar @nihongo, $ko, $page;

マルチバイトの文字を抽出するのにこれよりいい正規表現はないでしょうか?
\p{InHalfwidthAndFullwidthForms}では半角カナ以外に全角英数にもマッチしてしまい
使い物になりませんでした

765 :デフォルトの名無しさん:2015/12/16(水) 01:02:45.56 ID:G9F0Y7Zn.net
Ruby は鬼車という超強力な正規表現エンジンを採用しているので、

正規表現で日本語のひらがな・カタカナ・漢字にマッチさせるのも簡単です

766 :デフォルトの名無しさん:2015/12/16(水) 02:15:49.00 ID:YMTo43VL.net
簡易的なWebサーバー機能が必要で、超簡易的なソケットで最低限の物を組みました。いま手元にコードがないのですが最終的にPARでexeにする予定で、Perl単体で完結、Brewとかそっち系ではダメな状況です。

while(my $c=<sock>){
print $c "HTTP/1.1 200 OK/n"
print $c "content-type: image/png;/n/n";
print $c $imgbin;
close($c);
}
こんなレベルです。
ローカルだとこれが500Mbpsの速度で取得できますが、同じネットワーク内の他PCからだと20Mbps程度にしかなりません。
Windows上にApacheを入れて動かすと、てくださいPCでも500Mbps前後の速度が出るので、Perlの問題かなと思っています。
ファイヤーウォールも切りまた、Linuxサーバーでも試しましたが変わりませんでした。
何かこうした方がいい、というアイデアはありませんでしょうか。

宜しくお願いします。

767 :デフォルトの名無しさん:2015/12/16(水) 02:26:32.04 ID:G9F0Y7Zn.net
ネット回線は0.5秒もかかり、メモリの千倍以上遅い

プログラムの0.1秒の遅さは、
ネット回線の遅さにうずもれるから皆、RoR を使う

ネット通信で遅いのは、気にしない方がよい

768 :741:2015/12/16(水) 04:21:18.07 ID:SEae+C8u.net
MACアドレスって偽造できるって本当ですか!?
他人のMACアドレスに簡単になりすませるって!
そしたらセッションIDどうやって作ればいいんですか

769 :デフォルトの名無しさん:2015/12/16(水) 06:04:06.36 ID:G9F0Y7Zn.net
MACを使うのは、同じLAN内だけでは?

スイッチングハブが同じLANのすべての機器に、ブロードキャストすると、
それをキャッチした各機器が、スイッチングハブにMACを伝える。
その後、各機器がスイッチングハブを通して、通信できるようになる

スイッチングハブにMACを伝える際、当然、
好きな数字を渡すこともできる

その結果、たまたま同じMACの機器が2台あると、通信できなくなるかも

770 :デフォルトの名無しさん:2015/12/16(水) 08:46:08.46 ID:YMTo43VL.net
>>767
RoRもJAVAもVB他使えるor経験あるけど、Perlである必要があります

771 :デフォルトの名無しさん:2015/12/16(水) 12:38:56.77 ID:IT3U5Wv/.net
>>766
apacheとperlは本当に同じ条件なの?
というかapacheの500mbpsはローカル通信じゃないの?

772 :デフォルトの名無しさん:2015/12/16(水) 13:02:21.46 ID:xeWyKFIm.net
>>771 詳しく書きますね
なおキャッシュは無効にしているためキャッシュで速度が上がったわけではありません。
[A:開発PC(Win10)]
Perlで簡易的なHttpサーバーを作成
開発PC内ブラウザでアクセスし、50MBのデータをダウンロード、約500Mbpsで完了
[B:タブレット]
ブラウザでAで稼働中のサーバーのURLを開き、50MBのデータを取得。20Mbps程度の速度しか出ない。
[A] の環境でネットワークかPerlかの問題切り分けのため、Apacheにて起動。HTMLやダウンロードするファイルは同じもの。
[B] タブレットでダウンロードすると400Mbpsの速度でダウンロード完了
[A]をPerlで作った簡易サーバーに切り替え、[A]内ではやはり500Mbps程度の速度が出るが、[B]からは20Mbps程度になる。
現在JAVAで作り直しているが、JAVAでも400Mbpsの速度が出ており、やはりPerlの問題だろうと推定中です。

773 :デフォルトの名無しさん:2015/12/16(水) 22:22:12.76 ID:WmK5OxGU.net
以前windowsで簡易的なGUIが簡単に出来るクラスを作ったんだよな。
簡単にwindow生成したり、画像を読み込んで好きな位置に表示したり、
表示物のメモリ内データをどうこうしたりとか、
クリックとかのイベントハンドラを簡単に作れた記憶があるんだ。
使い方さえ知ってればな。


見たところ、コードとかデザイン設計は丁寧に作ったと思われるくさいんだけど、
クラスの使いかたとか説明書を一切残していなかったっぽいせいで、
まじ使いかた分からん。
仕様書っぽいの大量に同封されてたけど、全部内部仕様書。外部仕様書が見当たらない。

いったいこれは何が出来て何が出来ないんだ。
そして出来ることはどうやれば出来るんだ。
まじいい加減にしろや。使いかたの分からんソフトなんていらねぇんだよ。

774 :デフォルトの名無しさん:2015/12/16(水) 22:23:13.99 ID:WmK5OxGU.net
Perlで手っ取り早くアルゴリズム内部の視覚化テストやろうと思ったんだけど、
しょうがねぇからJava使うか。

775 :デフォルトの名無しさん:2015/12/17(木) 01:30:00.16 ID:ldEcnmm8.net
Apacheを使って、同じネットワーク内の他PCからLWP::Simpleでgetしたら速い
の?それとも遅いの?遅いならPerlのソケット処理のせい。速いのなら"簡易的
なWebサーバー機能"の書き方の問題。そもそも

while(my $c=<sock>){
print $c "HTTP/1.1 200 OK/n"

は正しい?$c はソケットなの?パケットのデータなの?

776 :デフォルトの名無しさん:2015/12/17(木) 09:13:09.82 ID:CLoQ9apk.net
>>772
最初の書き込みの他のPCとはタブレットだったの?
もしかしてWiFi?
そうなら400Mbpsの方が速すぎ

777 :デフォルトの名無しさん:2015/12/17(木) 15:57:06.92 ID:GhSUIBXP.net
ハッシュについてですが

my %array = (
apple =>

778 :デフォルトの名無しさん:2015/12/17(木) 15:58:48.13 ID:GhSUIBXP.net
うまく投稿できなかったので再投稿。

my %array = (
apple => "red",
remon => "yellow",
melon => "green"
);

my $array ="fruit";

print "ARRAY: $array / APPLE: $array{'apple'} / REMON: $array{'remon'} / MELON $array{'melon'}\n";

という具合に%arrayでハッシュを定義しつつ、$arrayという変数って使っても問題ないんですか?
やってみたら大丈夫そうだったので$array = \%array;としてリファレンスを入れて使おうかなと思ったので。
それとも混乱を招くからやめておくべき?

779 :デフォルトの名無しさん:2015/12/17(木) 16:55:37.38 ID:EBFCSaOt.net
その使い方で混乱した試しは一度もないが
hashにarrayと言う名前を付ける方が問題だろう

780 :デフォルトの名無しさん:2015/12/17(木) 17:00:48.86 ID:pKEeQlLl.net
>>775
ごめん、雰囲気だけで入力したもんで違います

$data には画像データが入ってます。
while (accept( $sock_client, $sock_receive )) {
my $content;
while (my $line = <$sock_client>) {
$content .= $line;
if($line eq "\n" || $line eq "\r\n"){last;}
}

print $sock_client "HTTP/1.1 200 OK\n";
print $sock_client "Content-Type: image/jpeg;\n\n";
print $sock_client $data;
close $sock_client;
}

>>776
11acはアンテナ1本でも800Mbps以上出る規格なんで不思議じゃないですよ
ユーチューバー避けたりしてるといい動画が見当たらなかったので適当に出してきましたが
外のサーバーに対する測定で
https://www.youtube.com/watch?v=qsVs0rWPKxc DL 230Mpbs / UP 130Mbps
https://www.youtube.com/watch?v=jsEutRQ2Zyo DL 228Mbps / UP 60Mbps
の速度が出ます。これをローカルで図ってるので400Mbpsでも不思議はありません(Surfaceでは530Mbps出てました)

781 :デフォルトの名無しさん:2015/12/17(木) 17:04:29.53 ID:GhSUIBXP.net
>>779
レスthx
phpの連想配列のノリでarrayって名前を付けてました…。

782 :デフォルトの名無しさん:2015/12/17(木) 17:18:18.33 ID:pKEeQlLl.net
>>780ですが
図解するとこういう感じです
http://i.imgur.com/ZjyQFEB.png

783 :デフォルトの名無しさん:2015/12/17(木) 17:38:43.47 ID:tEQhDMc4.net
2ちゃんねる風の掲示板でCookieをセットしてないで書き込みを行おうとすると
http://i.imgur.com/92opkeI.png のような画面が出ますが
予めクッキーを設定する事ってPerlだとどのような関数を使うのでしょうか?

784 :デフォルトの名無しさん:2015/12/17(木) 17:43:43.26 ID:2TBI1XHI.net
内側からだと同じものが外側からだと遅くなるってこれもうわかんねぇな
本当にperlレベルの問題なのか?

>>778
$var と @var と %varは全て別のものなので、そういう意味では問題ない(ややこしいが)
最初からリファレンスが欲しいなら $hash = {foo => 'bar'} のように () ではなく {} で作れる

785 :デフォルトの名無しさん:2015/12/17(木) 17:45:39.52 ID:pKEeQlLl.net
>>783
それはHTTPの仕様で(ほぼ)Perlとか関係ないよ

print "Content-type: text/html\n";

と同じように

print "Set-Cookie: KEY=VALUE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT\n";

のように書く。

参考
http://www.tohoho-web.com/wwwcook.htm

786 :デフォルトの名無しさん:2015/12/17(木) 17:46:56.08 ID:2TBI1XHI.net
>>783
>予めクッキーを設定する事
どういう意味?というかクッキーの仕組み分かってる?

787 :デフォルトの名無しさん:2015/12/17(木) 17:47:31.33 ID:pKEeQlLl.net
>>784
>本当にperlレベルの問題なのか?
正直なんとも。Javaで作ったところこちらは400Mbpsの速度が出ました。
なので今のところ、Apache,Java => 400Mbps , Perl => 40Mbps という感じですね。
コード自体は問題ないとは思うんですが。

788 :デフォルトの名無しさん:2015/12/17(木) 21:11:03.47 ID:X03/A5Pd.net
>>787
perl製のサーバーとapacheで吐くヘッダーは同じ?
apacheではContent-LengthやTransfer-Encodingが吐かれてるけどperlでは吐かれてないとか。
後はchunk、rwinとかが怪しいかな。
perlの問題かアプリの問題かを切り分けるためにplackup等で想定の速度が出るか試した方が良いと思う。

789 :デフォルトの名無しさん:2015/12/17(木) 21:28:26.04 ID:E7N+Lp99.net
いいかげんWebProgでやれや。

790 :デフォルトの名無しさん:2015/12/17(木) 21:28:57.06 ID:TfrmoFMM.net
やずや

791 :デフォルトの名無しさん:2015/12/18(金) 00:03:56.40 ID:F3M2aD/V.net
PerlでWebクライアント作って試してみたか?あと間にプロクシーを挟んで
パケットのダンプをとると予想外のことが分かるかも。

792 :デフォルトの名無しさん:2015/12/18(金) 17:28:55.91 ID:cbXr3ozq.net
bashで、「command 2>&1 | tee file」のようにして、
Linuxコマンドcommandの標準出力と標準エラー出力を、ターミナルとファイルfileにリアルタイムに出力しています。
これをPerl上で、(1)(2)(3)のように行ったのですが、上手くいきません。
対処方法を教えて下さい。

(1) ターミナル、file 共に出力されない
my $command = "command 2>&1 | tee file";
open( my $handler, $command );

(2) 一部ターミナルとfileに出力される
  しかし、進捗(◯◯%)が出力されない
my $command = "| command 2>&1";
open( my $handler, $command );
open( my $out, '>', $file );

while(<$handler>){
chomp;
print $out $_, '\n';
}

(3) file、ターミナル共に出力されない
my $command = "command 2>&1 | tee file";
`my $handler, $command`;

793 :デフォルトの名無しさん:2015/12/18(金) 18:12:43.87 ID:m1ruI8Ik.net
flockを使ってロック用ファイルとテンポラリファイルを使わずに
直接ファイルをロックした場合
ファイルの一番最初の行にデータを追加していくようなことは不可能ですか?

794 :デフォルトの名無しさん:2015/12/18(金) 18:16:27.99 ID:m1ruI8Ik.net
それと@lines=<IN>のように全部一括読み込みはしないものとし
while($line=<IN>){}のように1行ずつ読み込むものとします

795 :デフォルトの名無しさん:2015/12/18(金) 20:56:10.16 ID:AHc8NOa/.net
>>792
perlでコマンドと同じ動作を再現したいのかperlで外部コマンドを実行したいのかはっきりして

>>793-794
1行ずつしか読み込まないなら一時ファイルに書き出していくしかないんじゃないかな
なので安全にロックしながらやるなら「ロック用ファイルとテンポラリファイルを使」うのが最適解かと

796 :デフォルトの名無しさん:2015/12/19(土) 02:05:18.10 ID:akpvQEZV.net
>>793-794
1行ずつではなく追加する行のバイト長ずつだが

#!/usr/bin/perl
use strict; use warnings; use Fcntl qw(LOCK_EX SEEK_CUR);
my $ow_line = "append line to top of file.\n";
my $ow_len = length $ow_line;
open my $fh, '+<', $ARGV[0] or die $!;
flock $fh, LOCK_EX or die $!;
binmode $fh;
while (my $buf_len = sysread $fh, my $buf_line, $ow_len) {
  sysseek $fh, -$buf_len, SEEK_CUR;
  syswrite $fh, $ow_line;
  $ow_line = $buf_line;
  $ow_len = $buf_len;
}
syswrite $fh, $ow_line;
close $fh or die $!;

797 :デフォルトの名無しさん:2015/12/19(土) 17:05:13.36 ID:3J24i6x7.net
>>792
system使ってみては?

>>793
多分アドバイサリロックを分かってない
ロックするとファイルアクセスできなくなると思ってるでしょ

798 :デフォルトの名無しさん:2015/12/20(日) 11:26:07.63 ID:kojJskyY.net
このソースってどこかに間違いがあるのでしょうか?
#!/usr/bin/perl
require "cgi-lib.pl";
print "Content-type: text/html; charset=Shift_JIS\n\n";
print <<EOL;
<html>
<body>
<h2>一行掲示板</h2>
<form method="post" action="bbs1.cgi">
メッセージ:<input type="text" name="message" size="60">
<input type="submit" value="送信">
</form>
<hr>
EOL
&ReadParse(*form);
$message = $form{"message"};
open(IN, "bbs1.txt");
@log = <IN>;
close(IN);
if ($message ne "") {
unshift @log, "$message\n";
open(OUT, "> bbs1.txt");
print OUT @log;
close(OUT);
}
foreach $data (@log) {
chop $data;
print "$data<br>\n";
}
print "</body>\n</html>\n";

799 :デフォルトの名無しさん:2015/12/20(日) 11:40:35.46 ID:kVJMqtKU.net
何が問題なのかわからない

800 :デフォルトの名無しさん:2015/12/20(日) 12:22:23.21 ID:mtCgH6UA.net
<script>location.href="http://google.com/";</script> って発言してみて

801 :デフォルトの名無しさん:2015/12/20(日) 13:53:14.40 ID:jqjYNF9z.net
>>798
cgi-lib.plは過去のものなので今は使ってはいけない。
今時Shift_JISはありえない。動くだろうけど
&ReadParseのように関数名に&をつけるのは古い書き方、今は使わない
HTMLとPerlをそんなの混ぜて書くやり方は良くない。
ま、全体的に古い書き方で、今そんな書き方をしたら笑われるような
ものってのが原因かな。参考にしているものが悪い。

802 :デフォルトの名無しさん:2015/12/20(日) 15:21:26.74 ID:THHI+nfG.net
>cgi-lib.plは過去のものなので今は使ってはいけない。
>今時Shift_JISはありえない。

ワロタw
日曜の昼下がりに真正のキチガイ発見w

803 :デフォルトの名無しさん:2015/12/20(日) 21:46:48.88 ID:kojJskyY.net
500internal Server errorになってしまいます><

804 :デフォルトの名無しさん:2015/12/21(月) 01:47:30.14 ID:Z/vHz/9R.net
>>803
web serverのエラーログをチェック

805 :デフォルトの名無しさん:2015/12/21(月) 03:10:05.01 ID:CPIsv/NK.net
cgi-lib.plうpってないんじゃねーの?

806 :デフォルトの名無しさん:2015/12/21(月) 03:13:43.45 ID:6AgT1ZIG.net
板違いの話題をいつまでも続けるとはさすがPerl厨。
板のルール無視とか迷惑だからスレごと出ていけ。

リアルでもそうやってルール無視するからウザがられてるんだよ。
Perl厨は頭悪いし他人に迷惑かけても平気な奴しかいないから気付いてないのかもしれんが。

807 :デフォルトの名無しさん:2015/12/21(月) 06:44:19.37 ID:sJg48j5/.net
WebProgがある以上、全面的にお前さんの言う事に賛成なんだけど、
まさかと思うけどPHPの人じゃないよねw

808 :デフォルトの名無しさん:2015/12/21(月) 09:45:47.06 ID:w2+uVVcZ.net
WebPrgとやらがなくてもPerlはPerlであってHTTPサーバーにもCGIにもブラウザにもHTMLにも関係ない

>>803
500internal Server error って書いてあるじゃないか
インターネットサーバーエラーって読むんだ。分かるか?
Apacheスレかどっかに行け

809 :デフォルトの名無しさん:2015/12/21(月) 09:47:32.82 ID:w2+uVVcZ.net
インターナルだった

810 :デフォルトの名無しさん:2015/12/21(月) 19:41:23.70 ID:xlJCQDSb.net
>>808
アホじゃね?Apacheスレがどこにあると思ってんだよ

811 :デフォルトの名無しさん:2015/12/21(月) 19:55:50.95 ID:w2+uVVcZ.net
さぁ?興味ないですけど。
ここでそんなこと言われてもね

812 :デフォルトの名無しさん:2015/12/21(月) 20:05:36.35 ID:xlJCQDSb.net
>>811
WebProgだよバカ
なんで、板違い誘導だけど、煽り入ってるレスと、
それをやんわり諫めてるレスのあとに
とんちんかんなレスをカマして胸が張れるんだよ

あともう一つ言うとWebProgには、
「Perl初心者スレ」
もある。WebProg無関係に初心者も誘導できるんだよ

今更本気で誘導しようとは思わんが、
>PerlはPerlであってHTTPサーバーにもCGIにもブラウザにもHTMLにも関係ない
こんなこと言うアホは、PHP厨よりタチが悪い。
初心者スレに行ってこい

813 :デフォルトの名無しさん:2015/12/21(月) 20:09:55.91 ID:w2+uVVcZ.net
あ、急に思い出した。Apacheは自鯖板ですわ。
長文乙

814 :デフォルトの名無しさん:2015/12/21(月) 20:15:54.29 ID:xlJCQDSb.net
>>813
自鯖でプログラムの話すんのか?
まさかと思うが、本当にズブの素人かよ

815 :デフォルトの名無しさん:2015/12/21(月) 20:19:44.54 ID:w2+uVVcZ.net
それについてこのスレが関知することではない。そちらでどうぞ。
何度同じこと言われれば分かるんだ?頭が弱い子なのか?
即ち邪魔だからさっさと消えろって言ってんだよ

816 :デフォルトの名無しさん:2015/12/21(月) 20:22:33.05 ID:NuDtbaVg.net
>>815
おまえ、迷惑。

817 :デフォルトの名無しさん:2015/12/21(月) 20:24:05.54 ID:w2+uVVcZ.net
お、自演が始まったか?

818 :デフォルトの名無しさん:2015/12/21(月) 20:30:24.24 ID:NuDtbaVg.net
自分に反対する奴は全て自演かいw

>あ、急に思い出した。Apacheは自鯖板ですわ。
これで、御里が知れてるってのに、どっちが頭が弱いんだか

819 :デフォルトの名無しさん:2015/12/21(月) 20:36:45.29 ID:w2+uVVcZ.net
ほれ見ろ。自演だろ。
いい分けがましいことを言い続けても、板自体からしてム板内ではないものを必死でアピールするのがやっとなんだろ。
もういいから消えな

820 :デフォルトの名無しさん:2015/12/22(火) 00:10:08.68 ID:diOEhBX7.net
>>798
これはWebProgっての分かるけど
>>789
これはHTTPだからWebProgって言いたいんだろうがソケット通信だからここでいいんじゃ?もう質問者居なさそうだけど

821 :デフォルトの名無しさん:2015/12/22(火) 15:01:10.38 ID:zJUyXx9D.net
エラーログが、Software error:Can't find string terminator "EOM" anywhere before EOF at test1.cgi line 13.Can't find string terminator "EOL" anywhere before EOF at test1.cgi line 13.
13行目がヒアドキュメントの始まりでした。
(*こっちに貼ったソースは投稿の都合上編集してます
sssp://o.8ch.net/21ur.png

822 :デフォルトの名無しさん:2015/12/22(火) 17:44:39.00 ID:Wi3bsd/I.net
>>821みたいなクズがいなければ社会がかなり良くなるのにな
コイツみたいな精神異常ギリギリのラインで正常に分類されてるキチガイ迷惑

さっさと消えろ

823 :デフォルトの名無しさん:2015/12/22(火) 20:23:21.08 ID:ugCyQzkf.net
荒れてんな〜

824 :デフォルトの名無しさん:2015/12/22(火) 20:28:23.19 ID:46TQzEc+.net
すげえ自意識過剰な荒し

825 :デフォルトの名無しさん:2015/12/22(火) 20:44:04.42 ID:Wi3bsd/I.net
本日の荒らしID:zJUyXx9D

編集したソースで質問とかクズすぎる。
金払って業者に直してもらえクズ。

826 :デフォルトの名無しさん:2015/12/22(火) 20:52:15.06 ID:V2XYGiCZ.net
数年前にもいたね攻撃だけする人

827 :デフォルトの名無しさん:2015/12/22(火) 23:04:43.53 ID:mKaKHK+Q.net
同じ人が帰ってきただけと思われ

828 :デフォルトの名無しさん:2015/12/22(火) 23:08:25.69 ID:lJMFjOKo.net
帰ってきたとか、それを知ってるってことは、お前らずっとやってんのか?

829 :デフォルトの名無しさん:2015/12/23(水) 01:00:09.17 ID:RaRt0JiM.net
やるってなにを…?
職種なら30年ほど同じなまま日本の歯車と化して使われ続けてるが

830 :デフォルトの名無しさん:2015/12/23(水) 01:21:06.25 ID:+daiOjD/.net
>>829
> やるってなにを…?
2ちゃんねるをだよw

攻撃だけする人を、同じ人って言ってるだろ? 攻撃をしている人が
本当に同じ人かは知る由もないが、数年前に居た人と同じ人じゃないか?って
思うのは数年前からずっとやってるってことだろう?

まあ数年前にやって、しばらくやめていて、再開したって
場合もあるけど、そんな都合のいい話はないだろうし。

831 :デフォルトの名無しさん:2015/12/23(水) 02:07:35.50 ID:RaRt0JiM.net
力説ご苦労

832 :デフォルトの名無しさん:2015/12/23(水) 02:48:04.49 ID:/wOBmLFi.net
攻撃だけする人ってザメフォンかw
ザメフォン元気?w

833 :デフォルトの名無しさん:2015/12/23(水) 04:05:50.83 ID:RaRt0JiM.net
いやおまえさんのことだろう。特徴的

834 :デフォルトの名無しさん:2015/12/23(水) 04:56:22.56 ID:/wOBmLFi.net
>>833
自己紹介乙
ここまで簡単に炙り出されるとは

835 :デフォルトの名無しさん:2015/12/24(木) 12:16:14.44 ID:aTU1cTcf.net
思い出せるだけ思い出してみるか。嵐の特徴

質問者に対し、質が低く (おそらく本人は低質と思ってない) 人間性に対しての攻撃を中心に行う。
攻撃の際は敵対心むき出しな書きかたをするが、話の流れや繋がりがなく、意味が分からないケースも多い。
罵れるなら、どんな理由で罵るのか内容を選ばない。とにかく理由をつけては罵りたがる。
その場で作り出した出鱈目で質問者などを攻撃することもあり。

質問者への攻撃以外では、Perlの悪口に終始する。

プログラムの実力は皆無で、情報系の高校生より低いと思われる。(ほとんどの場合一言目からおかしいので分かる)。
ある程度は高くなった可能性があるが、新入社員が1週間で覚え切る内容を、1年経ってもほとんど出来なかったので、現在でもレベルは低いと推察される。
少なくとも、CPUやメモリを使うような知識は全くない。(アセンブラやネイティブなど)。
質問者より理解が低かったり知識や経験が少なかったりすることはザラ。

時間はかなり一般的な学生、社会人とは違う活動帯。
異様な (←うまい表現が思いつかない) 自作自演をおこなうことも多数あり。

意味の分からない単語、本当に意味不明な攻撃、脈絡のない会話の(ようなもの)、などを突如始める。
造語や嘘、虚偽の内容を作ることにためらいがない。
辻褄が合わないこと、意味がないこと、内容が無いことを書くのにためらいがない。

全ての書き込みのレベルが低く、終始特有の雰囲気とうさんくささ (出鱈目さ) や無意味さをかもし出している。
人の反応が自分の思った通りにならないと突如無差別に暴れだす。
かまって貰えないと、様々な方法で暴れだす。
荒らすこと自体がほぼ目的であるような振る舞いを取り続けることがある。(一度始まると長期に渡る)
その気になれば3スレ粘着なんて当たり前。
本気を出した場合、質問者にいち早く返信するのは必ず彼。

おそらく知能レベルはかなり低い上、精神的(性格的)にも難ありで、人を不快にさせることを当然の権利と思っている。
おそらく他人との間合いや距離が計れず、まともな会話ができない。

まぁさらにこの数年前にはもっと強烈なのが居たんだが、それを思い出しちまった。

836 :デフォルトの名無しさん:2015/12/24(木) 12:40:13.40 ID:ybAdxPqK.net
どーでもいいから元の空気に戻して

837 :デフォルトの名無しさん:2015/12/24(木) 13:09:28.32 ID:MYEsZXge.net
Strawberry Perl 5.22.1.1 released.
http://strawberryperl.com/

838 :デフォルトの名無しさん:2015/12/25(金) 05:46:37.05 ID:wx0vRYD+.net
>>835
そうやって書いてれば自分が荒らしだとバレないと思ってるのか。
だとしたらかなりおめでたい。
お前頭悪そうだし、どうせブルーカラーの童貞なんだろうな。

839 :デフォルトの名無しさん:2015/12/25(金) 09:16:09.78 ID:OJPyRqtL.net
そうやって書いてれば自分が童貞だとバレないと思ってるのか。

840 :デフォルトの名無しさん:2015/12/25(金) 13:17:59.52 ID:Ug/OzCZs.net
悪口には自分が言われて嫌な言葉が選ばれるらしい
??「人の嫌がることを進んでやります」

841 :デフォルトの名無しさん:2015/12/25(金) 14:30:21.93 ID:H65SAupI.net
この場合、>>840が自分が言われて嫌な言葉として選んだ悪口とは
「人の嫌がることを進んでやります」ってことなのかな?

842 :デフォルトの名無しさん:2015/12/25(金) 18:54:41.06 ID:kan7orvo.net
まったく俺と関係ないやつらが勝手に言い返し合ってって草なんだが…

843 :デフォルトの名無しさん:2015/12/26(土) 07:01:51.71 ID:PQT39fnH.net
>>842
ああやっぱりだったか
相手は1人だろうとは思った
すまんね、スルーしとけばよかった。本人気づいてないみたいだし

844 :デフォルトの名無しさん:2015/12/26(土) 11:24:03.27 ID:QraEy9L6.net
日本語文字を含む日付関係の処理をする効率の良いパッケージありませんか。
2015年12月29日 といった文字列を日付として扱い、
n日後の日付などを効率よく計算したいです。

845 :デフォルトの名無しさん:2015/12/26(土) 12:40:03.97 ID:PQT39fnH.net
Time::Local

846 :デフォルトの名無しさん:2015/12/26(土) 17:19:03.24 ID:PiMfYnB0.net
use Time::Local 'timelocal';
my($year,$month,$day) = '2015年12月29日' =~ /(\d+).*?(\d+).*?(\d+)/;
my $epoch = timelocal(0,0,0,$day,$month-1,$year);
my $after_n_days = localtime($epoch + (60*60*24) * $n);

847 :デフォルトの名無しさん:2015/12/26(土) 19:10:46.98 ID:h8/CI80S.net
またクソひでーコードだなw

848 :デフォルトの名無しさん:2015/12/26(土) 19:19:43.27 ID:h8/CI80S.net
質問者が可哀想だw

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

my $date = '2015年12月29日';
my $t = Time::Piece->strptime($date, '%Y年%m月%d日');
$t+=ONE_DAY*3;
print $t->strftime('%Y年%m月%d日');

849 :デフォルトの名無しさん:2015/12/27(日) 18:10:29.69 ID:pD3iRYFS.net
require "timelocal.pl";
sub ONE_DAY { 60*60*24 }
($year,$month,$day) = '2015年12月29日' =~ /(\d+)\D*(\d+)\D*(\d+)/;
$time = &timelocal(0,0,0,$day,$month-1,$year);
($year,$month,$day) = (localtime($time + &ONE_DAY * $n))[5,4,3];
printf("%04d年%02d月%02d日",1900+$year,$month+1,$day);
これでもいけました。

850 :デフォルトの名無しさん:2015/12/27(日) 18:34:31.41 ID:YWwZOVBb.net
ムダなコードありすぎw

851 :デフォルトの名無しさん:2015/12/30(水) 14:20:41.49 ID:HIAhfYzf.net
LWP::UserAgent

↑これでページのhtmlを取得するプログラムを書いたんだが
取得できるページとできないページがある
なんでだ???

852 :デフォルトの名無しさん:2015/12/30(水) 21:45:20.70 ID:/v1xmcd/.net
どんなプログラムで何を取得できなかったのか書いてくれないと……

853 :デフォルトの名無しさん:2015/12/30(水) 23:35:16.26 ID:Gf1fPU7V.net
v6はどうですか
いい感じですか

854 :デフォルトの名無しさん:2016/01/02(土) 16:51:42.09 ID:8QYJ/a7C.net
まだ紙の本が出版されてないからなあ。ホライリーはふにゃちんだから期待できないぞ。

855 :デフォルトの名無しさん:2016/01/06(水) 00:59:12.56 ID:Zgv3h2Jt.net
require "timelocal.pl";
($year,$month,$day) = '2015年12月29日' =~ /(\d+)\D*(\d+)\D*(\d+)/;
($year,$month,$day) = (localtime(&timelocal(0,0,0,$day,$month-1,$year) + 60*60*24 * $n))[5,4,3];
printf("%04d年%02d月%02d日",1900+$year,$month+1,$day);
月日の計算、ベタでしてた回答ってこのスレだったっけ?

856 :デフォルトの名無しさん:2016/01/06(水) 07:31:37.90 ID:wURx2dCr.net
ベタっていうなら、関数使うな。

857 :デフォルトの名無しさん:2016/01/06(水) 20:48:38.01 ID:Df/hMGBY.net
#!/usr/local/bin/perl
$y =<STDIN>;
chomp($y);
if(0<$y){{$a =$y * 2 * 3.141592654;
print $a;}
else {print 0;}

これが間違っている理由教えてもらえませんか? syntax error でelse付近が間違っているってでるのですが
何が原因かわかりません。

858 :デフォルトの名無しさん:2016/01/06(水) 20:51:28.08 ID:Df/hMGBY.net
自己解決しました。

859 :デフォルトの名無しさん:2016/01/07(木) 02:38:56.53 ID:uRL08pKF.net
レスじゃなくてスレな。おれもよく間違えるけど。

860 :デフォルトの名無しさん:2016/01/07(木) 21:17:47.55 ID:gH/noaIC.net
#!/usr/local/bin/perl
print "last time,press control z\n";
chomp(@numbers=<STDIN>);
@lines2=qw(fred betty barney dino wilma pebbles bamm-bamm);
foreach ($lines2[@lines-1]){
print "$_\n";}

これで自分の入力した数字に対して名前を表示させたいんですが、
予期した結果が得られない。どうしてでしょうか?

861 :デフォルトの名無しさん:2016/01/07(木) 21:25:00.20 ID:gH/noaIC.net
@linesのとこが@numbersです。誤字しました。

862 :デフォルトの名無しさん:2016/01/07(木) 22:29:34.47 ID:uRL08pKF.net
#!/usr/local/bin/perl
print "last time,press control z\n";
chomp(@numbers=<STDIN>);
@lines2=qw(fred betty barney dino wilma pebbles bamm-bamm);
for my $number (@numbers) {
  print $lines2[$number-1], "\n";
}

863 :デフォルトの名無しさん:2016/01/08(金) 10:59:45.48 ID:rjYD9Qf7E
https://ideone.com/Mt6KE0

何か問題があるのか?

864 :デフォルトの名無しさん:2016/01/08(金) 22:13:44.02 ID:0MogF7lC.net
ありがとうございます。
また質問で申し訳ないのですが、


#!/usr/local/bin/perl
use strict;
use warnings;

my @fred=qw{1 3 5 7 9};
my $fred_total=total(@fred);
print "The total of \@fred is $fred_total.\n";
print "Enter some numbers on separate lines:";
my $user_total = total(<STDIN>);
print "The total of those numbers is $user_total.\n";

sub total {
my @array=@_;
foreach (@array){
my $number +=$_;}
}

これが変数展開されないんです。・・is.で終了してしまうのですが理由はわかりますか?
(コマンドプロンプトでやっています。

865 :デフォルトの名無しさん:2016/01/08(金) 22:28:27.01 ID:VW69zanW.net
何をしたいか知らんけどとりあ
my $number +=$_
これはおかしいんじゃないかね
my は実行中に動的な新規メモリ宣言

866 :デフォルトの名無しさん:2016/01/08(金) 23:15:13.88 ID:Gzfc+6YM.net
>>864
total関数のように返り値が欲しいならちゃんとreturnしろ

867 :デフォルトの名無しさん:2016/01/09(土) 11:39:51.74 ID:mFlxLm5Y.net
returnで戻り値は返ってきたんですけど、パラメータリストの数字を合計した数を戻したい場合にはどのように書けばいいのでしょうか?

868 :デフォルトの名無しさん:2016/01/09(土) 11:42:42.62 ID:qsis99MQ.net
>>865

869 :デフォルトの名無しさん:2016/01/09(土) 11:50:37.99 ID:5qP+Va2j.net
つーか、totalなんてのを自作しないで、
List::Utilのsum(もしくはsum0)を使えばいいやん
自分で作るなよ。

870 :デフォルトの名無しさん:2016/01/09(土) 12:14:03.79 ID:dZoBTR45.net
>>867
sub sum{
 my @array = @_;
 my $sum = 0;
 $sum += $_ for @array;
 return $sum;
}

あなたはこのサイトの「本体」や「関数」に目を通すなどして基本文法から学んだ方が良い
ttp://perldoc.jp/

あと原因を自力である程度特定できないのが一番まずい
変数に何が入っているのか?関数は予想通りに動いているのか?まず自分で問題を小さく整理して確認しようよ

871 :デフォルトの名無しさん:2016/01/09(土) 12:21:56.20 ID:5qP+Va2j.net
>>870
だから標準モジュールにあるのを再実装するなって。

872 :デフォルトの名無しさん:2016/01/09(土) 12:23:32.87 ID:5qP+Va2j.net
しかも標準の名前と違う実装をしてるし、

873 :デフォルトの名無しさん:2016/01/09(土) 12:32:15.06 ID:koh/iwz9.net
俺的には自分で簡単に実装できる物をわざわざモジュールにするなよって感じがする。

874 :デフォルトの名無しさん:2016/01/09(土) 12:37:32.60 ID:qqzsfGlZ.net
>>873
sumみたいな単位でモジュールにせずに
rubyみたいに汎用的なやり方のなかで解決できるほうがいいってこと?
numbers.inject(:+)

875 :デフォルトの名無しさん:2016/01/09(土) 12:59:56.14 ID:5qP+Va2j.net
>>873
標準モジュールとしてPerlに標準で付属している、
Perlの機能の一部を自分で実装するな

876 :デフォルトの名無しさん:2016/01/09(土) 13:03:55.02 ID:qsis99MQ.net
キチガイが沸いたぞおい

877 :デフォルトの名無しさん:2016/01/09(土) 13:14:54.88 ID:5qP+Va2j.net
うざっ

878 :デフォルトの名無しさん:2016/01/09(土) 13:45:25.82 ID:koh/iwz9.net
いやただシンプルに、さらっと書ける物をわざわざモジュールにして、
そのモジュールあるんだから使えよ、作るなよってのはおかしいんじゃねーのって思っただけ。
無い方がいいとまでは言わないけど「俺的」にはそんな小単位モジュール不要って話
いろんな作り方できるよってのがPerlのモットーなんだし。好きにすればいいんじゃね。
無駄に標準関数的な物が増えるのは俺はPerlっぽくないとは思うけど。

879 :デフォルトの名無しさん:2016/01/09(土) 14:28:51.30 ID:Xn2sBiMs.net
少なくとも>>867に対するレスではないだろうな
基地外と言われてすぐに自分と察知できる状態もどうよ

「どうだ俺は物知りだろ、そうだろ?早くそうと言えよ」
「誰も俺に同意しない。発狂して5レスもしてしまった」
ちらしの裏にどうぞ

880 :デフォルトの名無しさん:2016/01/09(土) 14:29:26.40 ID:5qP+Va2j.net
>>878
だからなんで新しくモジュール作る話してるの?

すでにモジュールが標準でPerlに付属されてるんだから
それを使えって話してる。

Perl標準モジュールを使えない(知らない)っていうのは
Perlを使えないのと同じ意味だよ。

881 :デフォルトの名無しさん:2016/01/09(土) 14:37:36.99 ID:Xn2sBiMs.net
>>874
普段俺が自分で使ってるのを、例外チェックその他削って最小限にカットしまくった物。動作は遅い。

sub sfa (&@){ ## ScalarFromArray.
 my $code = shift;
 local ($a, $b); #不要だがマナーを弁えない人のためにlocalする。 ($_, $a, $b, は特殊変数のため)。
 my $res;
 $res = $code->() for(@_);
 return $res;
}
my @nums = (1..10);
my $sum = sfa { $a += $_ } @nums; #ここ。スカラーを返す処理ならなんでも可。でも長くなる場合は素直に普通のループ
print $sum;


これと速度重視用にxsでコンパイルした使いにくいやつと使い分けてる。
Cなので仕様はかなり違うけど。(例えば数値演算専用とか)
俺もこうゆうのはあんま標準モジュール使わないかな

882 :デフォルトの名無しさん:2016/01/09(土) 14:55:43.61 ID:5qP+Va2j.net
List::UtilはXSだから動作も早いんだよな。

883 :デフォルトの名無しさん:2016/01/09(土) 15:06:27.36 ID:5qP+Va2j.net
ちなみに>>881のようなことをしたければ「Perl標準モジュール」を使ってこのように書く。

use List::Util qw(reduce);

my @nums = (1..10);
my $sum = reduce { $a += $b } @nums;
print $sum;


変更点
・sfaという世間で全く知られていない名前の関数はまるまる不要なので削除
・Perl以外の言語も含めて一般に知られているreduceを使う
・$_の代わりに$bにする
以上。これだけ。

884 :デフォルトの名無しさん:2016/01/09(土) 15:09:15.14 ID:5qP+Va2j.net
また書き忘れたけど、これもxsなので速い。

こういうのは基礎知識なので、こういうのがあると知った上で
独自実装する必要があるか?と自分自身に問いかけるという
プロセスを省いてはいけない。

知った上で、独自実装するのならいいが、
知っていたら独自実装しなかったと思ったら負けだからねw

885 :デフォルトの名無しさん:2016/01/09(土) 15:14:37.53 ID:Tdn6T+zC.net
>>883
せっかくだからつっこんでおくが
それreduceの動作を良くわかってない奴特有の勘違いなw
{ $a += $b }じゃなくて{ $a + $b }で良いんだよ

886 :デフォルトの名無しさん:2016/01/09(土) 15:15:34.32 ID:5qP+Va2j.net
>>885
ごめんw
それはコピペしたから間違えただけw

887 :デフォルトの名無しさん:2016/01/09(土) 15:18:19.07 ID:dZoBTR45.net
変数の扱い方すら間違えている人に標準モジュール使えというのは解決になるのか…?
車輪の再発明以前の段階なのに

888 :デフォルトの名無しさん:2016/01/09(土) 15:18:58.19 ID:/zf3lzOM.net
標準とは、バッテリーインクルードだろ?
それを使えばいい

自分で作るな。バグが出るだけ

889 :デフォルトの名無しさん:2016/01/09(土) 15:21:43.24 ID:5qP+Va2j.net
>>887
揚げ足取りで引っ張るなよw

俺がいいたいのは、これが標準モジュールであり、
Perlを知るということは、標準モジュールを知るということでもあること。

標準ではないライブラリならまだしも、標準を知らないってことは
自分で車輪の再発明をして、時間をムダにすることにしかならない。

プログラミングの技術力をつけるってことは、先人の知恵を
学ぶことでもあるんだからね。

890 :デフォルトの名無しさん:2016/01/09(土) 15:27:34.64 ID:dZoBTR45.net
>変数の扱い方すら間違えている人
これはtotal関数が動きませんって言ってる人のことね
標準だからこっち使えとかそういうレベルの話じゃないでしょ
論点がずれてる

891 :デフォルトの名無しさん:2016/01/09(土) 15:28:15.76 ID:5qP+Va2j.net
>>890
やっぱりそっちのことかw
俺が間違ったのは変数じゃなかったから
ちょっとおかしいと思ったんだw

892 :デフォルトの名無しさん:2016/01/09(土) 15:31:18.95 ID:Xn2sBiMs.net
触るなよ、居付いたぞ。
俺も触ったけど反省してる

893 :デフォルトの名無しさん:2016/01/09(土) 15:33:40.46 ID:5qP+Va2j.net
安心してください。反省していません。

894 :デフォルトの名無しさん:2016/01/09(土) 15:58:14.08 ID:xdUtZYCE.net
ところで僕の宿題の件はどうなりましたか?火曜日に提出しないといけないんです。

895 :デフォルトの名無しさん:2016/01/09(土) 16:03:41.03 ID:mFlxLm5Y.net
>>870
大変助かりました。基本から学びたいと思います。


もうひとつわからないことなのですが、

#!/usr/local/bin/perl
use strict;
use warnings;
my @fred=above_average(1..10);
print "\@fred is @fred\n";
print "(Should be 6 7 8 9 10)\n";
my @barney=above_average(100,1..10);
print "\@barney is @barney\n";
print "(Should be just 100)\n";

sub above_average {
my $number =0;
my @upper=0;
$number=($number+$_ for @_)/$#_
if(@upper=$number<$_ for @_){
return @upper;}
-1;}

これが14行目のnear $_ for、17行目のnear }のsyntax errorが考えたのですが、
よくわかりませんでした。教えていただけると幸いです。

896 :デフォルトの名無しさん:2016/01/09(土) 17:06:32.35 ID:dZoBTR45.net
セミコロンの付け忘れとかかっこの閉じ忘れのような単純な文法エラーの話はキリがないので自分で解決して

>my @upper=0;
配列を明示的に初期化するなら @array = () のように右辺をリストに

>$number=($number+$_ for @_)/$#_
後置の文は単純な場合にのみ限定すべき、こんなトリッキーな使い方しないで合計値が欲しいなら先ほどの関数を再利用しようぜ
$#array は配列の最後のインデックスだから要素の数が欲しいなら配列をスカラーコンテキストで評価する

>if(@upper=$number<$_ for @_){
ある条件で配列をフィルターしたいなら例えば grep { $_ > $average } @array のように書くのが一般的でわかりやすいと思う

897 :デフォルトの名無しさん:2016/01/09(土) 17:34:13.13 ID:tT8a+Ei+.net
遅レスだが、標準モジュール盲信は辞めとけ。
コード見りゃクソコードってのは多い。

地雷モジュールは、そこらで話題になってるから、
ここで紹介されたモジュールでも一回はググってから
自分の判断で使え。

と、暗にTime::Pieceを批判しとく。

898 :デフォルトの名無しさん:2016/01/09(土) 18:09:49.18 ID:5qP+Va2j.net
調べた結果問題なければ使えばいい。

899 :デフォルトの名無しさん:2016/01/09(土) 19:23:49.33 ID:fWScuht8.net
ウホウホ言ってんじゃねえぞこのゴリラが

900 :デフォルトの名無しさん:2016/01/09(土) 21:10:17.64 ID:Xn2sBiMs.net
Perlと言うかスクリプト系は変なのが出てくるもんだ

901 :デフォルトの名無しさん:2016/01/10(日) 08:38:57.49 ID:CVYyQQ5m.net
突っ込みどころは多いがevalをxsだと思うのはさすがに…

902 :デフォルトの名無しさん:2016/01/10(日) 09:19:08.87 ID:NOoJBtEZ.net
>最新 Perl 5.20.1 2014年9月22日リリース

perl5は、もうバージョンアップ終了なの?

903 :デフォルトの名無しさん:2016/01/10(日) 09:19:53.92 ID:NOoJBtEZ.net
チェルノブイリより酷いということは

904 :デフォルトの名無しさん:2016/01/10(日) 09:33:49.71 ID:CVYyQQ5m.net
http://www.cpan.org/src/README.html

905 :デフォルトの名無しさん:2016/01/10(日) 13:12:14.42 ID:/ndDSiBm.net
971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某

強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ

フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない

異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン

30秒ごとに口と鼻から異音
ふんっっ!    ふんっっ!   

備品破壊 貸与P C 破壊 他人のもの破壊

奴の作ったスクリプトとプログラムは使えない バグ製造機

電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない

906 :デフォルトの名無しさん:2016/01/10(日) 17:49:06.31 ID:B3HWZnWD.net
Time::PieceよりDate::Timeの方が標準にふさわしいと思うんだ

907 :デフォルトの名無しさん:2016/01/10(日) 20:08:45.05 ID:mfbMaCRH.net
むしろ関数はすべてCPANに格納してもらっても構わない。
モジュールがなければその場で自動インストールさせるスイッチのOnOffがあればなお良し

908 :デフォルトの名無しさん:2016/01/13(水) 12:48:14.84 ID:/DjkzKjX.net
"フォームタイプ_use_使用するデータリスト"という形式の文字列があるんだけど
例えばmy $str = "select_use_todouduken_list";
(これはセレクトボックスで都道府県データリストを使うフォームという意味)で
フォームタイプ部とデータリスト部に分けたいんだけど
if($str=~/(.*)_use_(/*)/){
$form_type = $1;
$use_data_list = $2;
}
でやると取得できたんですが$str="select_use_use_list";のように_use_が2つある場合だとうまく分けられません
どうすればうまく分けられるんですか?この場合$form_typeがselectで$use_data_listがuse_use_listになればいいんですけど

909 :デフォルトの名無しさん:2016/01/13(水) 12:56:56.57 ID:/DjkzKjX.net
訂正
$use_data_listがuse_use_listではなくuse_listです

910 :デフォルトの名無しさん:2016/01/13(水) 13:49:55.40 ID:/DjkzKjX.net
もう1つ訂正
if($str=~/(.*)_use_(/*)/)ではなくif($str=~/(.*)_use_(.*)/)です

911 :デフォルトの名無しさん:2016/01/13(水) 15:26:24.04 ID:hQopSc6Z.net
正規表現最短マッチの問題?

912 :デフォルトの名無しさん:2016/01/13(水) 15:43:17.06 ID:eEc9xDJtx
(.*?)_use_(.*)
([^_]*)_use_(.*)

913 :デフォルトの名無しさん:2016/01/13(水) 17:48:49.60 ID:wRKDQAF7.net
split /_use_/, $str, 2

914 :デフォルトの名無しさん:2016/01/14(木) 00:59:02.10 ID:PztBbIzN.net
if($str=~/(.*?)_use_(.*)/)でできた

915 :デフォルトの名無しさん:2016/01/14(木) 18:15:10.15 ID:xIeZvwhR.net
use utf8;を全てのcgiに入れるのが面倒です。
htaccessみたいにまとめて入れたようにするとかできないでしょうか

916 :デフォルトの名無しさん:2016/01/14(木) 21:17:36.73 ID:K+NWQdoJ.net
いや、それを面倒と言われても……気持ちはわからなくもないけど。
eval("use utf8; $text")
みたいなことはあるけどね。
多分、新規ファイルにエディタが

#!/usr/bin/perl
use utf8;
use strict;

みたいなテンプレートを挿入するとかそういうことをお望みですか?

917 :デフォルトの名無しさん:2016/01/14(木) 22:39:28.49 ID:GBHRpQtn.net
php.iniみたいに一回で全部

918 :デフォルトの名無しさん:2016/01/15(金) 00:23:48.33 ID:9J5ucqYC.net
プラグマっていうのはそういう使い方するものじゃないしなあ
新たに書くならエディタの設定などで解決する話だし、既にあるものを外から一括で解決するような類でもないかと
結局は何のために use utf8 するの?と

919 :デフォルトの名無しさん:2016/01/15(金) 05:35:22.66 ID:+ccYGEMj.net
use common::sense
すりゃいいって話か

他のモンもあるんちゃうん?

920 :デフォルトの名無しさん:2016/01/15(金) 06:56:16.80 ID:pw2OtLR4.net
サーバの引越しをするのに誰が作ったかもわからないcgiにuse utf8;を入れないといけないことが判明、涙目ですわ

921 :デフォルトの名無しさん:2016/01/15(金) 15:16:30.89 ID:F13ndxIM.net
>>920
それだけで済むならラッキーだろう

922 :デフォルトの名無しさん:2016/01/15(金) 18:43:08.06 ID:upNVNMhN.net
たしかにuse utf8;だけではだめっぽいです

部分的にまだ文字化けが発生します。

発狂しそう

923 :デフォルトの名無しさん:2016/01/15(金) 20:13:02.43 ID:3J5F25K4.net
> たしかにuse utf8;だけではだめっぽいです

最初っからわかってたけどなw
無駄な作業ご苦労さんwwww

use utf8の意味をちゃんと知っていれば、
サーバーの引っ越しで、それが必要になることはないのは
最初からわかってる話。

924 :デフォルトの名無しさん:2016/01/15(金) 21:11:03.63 ID:9J5ucqYC.net
結局は何のために use utf8 するの?と

925 :デフォルトの名無しさん:2016/01/15(金) 21:40:58.09 ID:3J5F25K4.net
可哀想(ウソw)だが、他人が作ったcgiを
設定しているレベルの人には理解できないんですよ。

もう自分でフリーCGIを設置する時代じゃない
ブログなどのウェブサービスを使う時代だ
KENTとかの時代はとっくに終わってる。

926 :デフォルトの名無しさん:2016/01/15(金) 23:51:32.89 ID:l565ucbK.net
EUCで書かれたスクリプトだったのでuse utf8;せずにそのまま実行できました。

927 :デフォルトの名無しさん:2016/01/15(金) 23:54:35.57 ID:gi9M5Usq.net
うん、当たり前だよ?

928 :デフォルトの名無しさん:2016/01/16(土) 00:07:15.56 ID:PzDjhQsr.net
ただしjcode.plの警告でログがいっぱいになりました。

929 :デフォルトの名無しさん:2016/01/16(土) 01:04:40.93 ID:ZDbRl/Eo.net
jcode.plのような古いものを、新しいPerlで使えば
当然そうなるだろうねw

930 :デフォルトの名無しさん:2016/01/16(土) 01:23:23.81 ID:hqdIojtX.net
EUCで書かれたスクリプトをuse utf8したら壊れるだろうなあ
手直しレベルの現実的な解決策はjcode.plの部分をEncodeで置き換えるといったところだろう

931 :デフォルトの名無しさん:2016/01/16(土) 07:34:54.94 ID:bEoGxi1M.net
そこまで古くないんですけど
Jcode.pmを多用してるのはどうすればいいんですか?
utf8フラグとかイライラします

932 :デフォルトの名無しさん:2016/01/16(土) 09:15:12.79 ID:JiyhPObB.net
意味不明だな。
#もちろん、新規に書くならJcodeなんて御呼びじゃねーが
Jcode.pmのコードなら今でも動くだろ。
なんで、use utf8入れにゃあかん?

他の要因で移植失敗してるだけじゃねーのか?

933 :デフォルトの名無しさん:2016/01/16(土) 09:30:15.99 ID:ORxbMq6u.net
それがperl5.8.8ではちゃんと動いていたんですが新しいサーバが5.10.1で
移設したら文字化けしはじめまして、use utf8;で一部直ることはわかったのですが
まだ完全に直ったわけではなく、どうもJcode.pmも直さないといけないのかなと

934 :デフォルトの名無しさん:2016/01/16(土) 13:41:29.06 ID:hqdIojtX.net
Jcodeってutf8フラグ周り触るような使い方したっけ
聞き方が悪すぎてアドバイスしようがないぞ

935 :デフォルトの名無しさん:2016/01/16(土) 18:33:06.98 ID:bEoGxi1M.net
DBIのmysqlで、blobのバイナリデータをスカラに入れたら文字化けしてます
テキストデータは文字化けしていません。これはフラグの問題ですか?
バイナリもUTF8です

936 :デフォルトの名無しさん:2016/01/16(土) 20:07:12.55 ID:hqdIojtX.net
直接コードを抜粋して貼るのが早そうだな
エンコーディングとか文字フラグのことわかってなさそうだし

937 :デフォルトの名無しさん:2016/01/17(日) 00:28:41.01 ID:ROqcaX3c.net
http://blog.iss.ms/2007/03/22/051610
は読みましたか?INSERT時にプレースホルダを使いましたか?

938 :デフォルトの名無しさん:2016/01/17(日) 19:27:28.13 ID:QAXp5FFb.net
性器表現で痴漢する
http://yomogi.2ch.net/test/read.cgi/radio/1312692319/

939 :デフォルトの名無しさん:2016/01/17(日) 22:49:04.12 ID:pSWLpytB.net
>>935
>バイナリもUTF8です

文字コードがあるのはテキストのみで、
バイナリには文字コードなどない

バイナリをテキストとして読み込んではいけない。
バイナリはバイナリとして読み込む

940 :デフォルトの名無しさん:2016/01/18(月) 07:25:02.12 ID:9Tlb62GQ.net
>>939
あざすやってみます

941 :デフォルトの名無しさん:2016/01/18(月) 10:37:19.02 ID:YJeMRYLJ.net
>>1
RPGツクール2000 , RPGツクールMV https://tkool.jp/mv/ ( JavaScript 採用 )

WOLF RPGエディター http://www.silversecond.com/WolfRPGEditor/

デュエル・マスターズ Android版 ,i-OS版、公式 http://dm.takaratomy.co.jp/extra/dmapp/entrygate_ds/
デュエル・マスターズ対戦CGI ex
https://web.archive.org/web/20150809154946/http://www53.atwiki.jp/dmsuishinparty/pages/314.html

デュエル・マスターズ(デュエマ)DM ONLINE 1.8a  /  VanGuard ONLINE 1.5a
https://web.archive.org/web/20150809160254/http://uhyohyohyo.sak ura.ne.jp/hsp.html

ヴァンガード専用ネット対戦ツール【 VanGuard Online 】
https://web.archive.org/web/20150809155032/http://kiimaa.jugem.jp/?eid=61

「カードファイト!!ヴァンガード」のネット対戦ができる公式オンラインゲーム「Cardfight!! Online」 2015年冬スタート
https://web.archive.org/web/20150809153724/http://supersolenoid.blog63.fc2.com/blog-entry-6886.html

遊戯王 Automatic Dueling System
https://web.archive.org/web/20150809164855/http://www3.atwiki.jp/ads-wiki/pages/20.html

遊戯王 デュエル・オンライン
https://web.archive.org/web/20150809171527/http://www31.atwiki.jp/vipdo/pages/15.html
https://web.archive.org/web/20140628005202/http://do.yugioh-portal.net/

ウィクロス( WIXOSS ) WEBXOSS http://webxoss.com/about_en.html http://webxoss.com/DeckEditor/

BG(ボードゲーム)Engine https://web.archive.org/web/20151209080842/https://bgengine.net/
https://web.archive.org/web/20151209172205/http://14owl.hateblo.jp/entry/2015/12/09/011234

アプレンティス  マジック:ザ・ギャザリング(MtG)オンライン化 http://homepage1.nifty.com/Q_Q/ap.html
https://web.archive.org/web/20151202202725/http://homepage1.nifty.com/Q_Q/ap.html

942 :デフォルトの名無しさん:2016/01/18(月) 10:38:28.99 ID:YJeMRYLJ.net
【 オンラインTCGエディター 】   >>1,>>941

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
デュエマ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、旧ガンダム・ウォー、ライブオン、ディメンション・ゼロ、シャーマン・キング、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書け。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストしろ。
個vs個、多数乱戦、チームvsチーム、個vsチームを実現し、P2P通信対戦プラグイン有り。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみろ。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
バトスピ、ヴァンガ、デュエマなど発売済みゲームソフトが存在してるTCGはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正 + コード記述の仕様書(設計書)を作成。

機能制限した下位版を制作しても原則として発売せず + 上位版デュエリ−グ用でサーバー稼動。

下位版を仮に発売した場合の改造および商用利用には、別途で当社との契約が必要。

さ〜て、インド人ベンダーと日本人の翻訳担当SEを見つけよっと!ww
http://wc2014.2ch.net/test/read.cgi/entrance2/1451262577/-16

943 :デフォルトの名無しさん:2016/01/18(月) 15:55:25.01 ID:2lazm5To.net
解決しませぬ、mysqlの問題なのか、perlの問題なのかもよくわからない


dbiでblobの中にutf8のテキストがあって

これだと文字化け
SELECT blobtxt FROM table;

これだと文字化けしません、
SELECT CAST(blobtxt AS CHAR(10000) CHARACTER SET utf8) FROM table;

perl5.8.8+mysql-5.0.95-5.el5_9だと文字化けしません、
perl5.10.1+mysql-5.5.47-1.el6だと文字化けします。

944 :デフォルトの名無しさん:2016/01/18(月) 16:16:10.85 ID:xk2uumt0.net
>>943
blobtxtの型定義に問題があるんじゃないの?
もしかしてbinaryだったりして

945 :デフォルトの名無しさん:2016/01/18(月) 16:26:36.72 ID:2lazm5To.net
>>944
blobなのでbinaryです。
ん〜

946 :デフォルトの名無しさん:2016/01/18(月) 17:18:41.84 ID:h0S1UEJK.net
・mysql_enable_utf8の設定値は?
・文字化けはどういう風に確認している?

947 :デフォルトの名無しさん:2016/01/18(月) 17:24:09.72 ID:2lazm5To.net
接続時にまずこれを実行して
${ *hDB }->{mysql_enable_utf8} = 1;
${ *hDB }->do( "SET NAMES utf8" );
${ *hDB }->do( "SET CHARACTER SET 'utf8'" );

blobがある場合は
${ *hDB }->do( "SET NAMES binary" );
を実行してから取得していました。これを外したりしてますが変化ありません

/etc/my.cnfは
[mysqld]
character-set-server=utf8
skip-character-set-client-handshake

[client]
default-character-set=utf8
となっております。

948 :デフォルトの名無しさん:2016/01/18(月) 17:38:23.57 ID:h0S1UEJK.net
perl            mysql
コード EUC
$blob UTF8?     ← blob 文字化けする
$text 内部文字列? ← text 文字化けしない

Jcodeなどをどこで何にどういう風に使っているのかコード持ってきて

949 :デフォルトの名無しさん:2016/01/18(月) 17:55:33.77 ID:2lazm5To.net
複数の箇所で文字化けを起こしているので、
まずはblobについてのみです。

単純に読み込んで出力しています。

950 :デフォルトの名無しさん:2016/01/18(月) 18:02:42.38 ID:2lazm5To.net
blob入れた変数にdecode_utf8でフラグを立てれば直りました。

951 :デフォルトの名無しさん:2016/01/18(月) 18:30:08.79 ID:2lazm5To.net
blobの話は終わりです。

つぎの文字化けはjfoldをしてるところで文字化けしています。
これはどう直したらよいでしょうか
use utf8;
use Encode;
use Jcode;
$Swap = Jcode->new($utf8txt, 'utf8');
($Folded, $Rest) = $Swap->jfold(10);

952 :デフォルトの名無しさん:2016/01/18(月) 18:32:57.26 ID:2lazm5To.net
decode_utf8($Folded)で直りました。すいません。

953 :デフォルトの名無しさん:2016/01/18(月) 18:35:13.54 ID:2lazm5To.net
次ですが三点リーダが文字化けします。
「…」これ使ってはいけない文字でしょうか

954 :デフォルトの名無しさん:2016/01/18(月) 19:21:20.54 ID:2lazm5To.net
全部どっかにdecode_utf8を入れれば解決するような気がしてきました。

955 :デフォルトの名無しさん:2016/01/18(月) 20:04:04.72 ID:9Tlb62GQ.net
utf8のフラグがついた変数から別に新規に宣言した変数に代入するときに
utf8のフラグが付かずdecode_utf8をしないといけないというのが文字化けの原因ぽいのですが、
これ継承されることできないんでしょうか

956 :デフォルトの名無しさん:2016/01/18(月) 20:45:56.31 ID:h0S1UEJK.net
>utf8のフラグがついた変数から別に新規に宣言した変数に代入するときにutf8のフラグが付かず
そんなことはない
どこかでフラグ有りと無しをくっつけているとかJcodeを通ってフラグが剥がれていると思われる

957 :デフォルトの名無しさん:2016/01/18(月) 21:53:37.85 ID:RaE8va4R.net
だからフラグは付けるなって口が酸っぱくなるほど言ってあったのに・・・

958 :デフォルトの名無しさん:2016/01/19(火) 00:36:16.03 ID:lFJIU7vI.net
キスはお酢のように酸っぱい。
口が酸っぱくなる。

959 :デフォルトの名無しさん:2016/01/19(火) 09:18:03.59 ID:RZ9UlhQV.net
perl5.8.8と5.10.1のuse strict;ではutf8フラグの扱いが変わったということなんでしょうか
そもそもなぜ文字化けしたのかの根本の理由が知りたいです

960 :デフォルトの名無しさん:2016/01/19(火) 09:48:11.52 ID:iNNfG/UU.net
そんな話聞いたことがない

961 :デフォルトの名無しさん:2016/01/19(火) 22:11:07.49 ID:qpKC7Im2.net
perlが原因なのかmysqlが原因なのか調べるために
perl5.8.8+mysql-5.5.47-1.el6
perl5.10.1+mysql-5.0.95-5.el5_9
を試してみたらどう?一度に2つのものを変更したら、どっちが原因なのか分から
ないからね

962 :デフォルトの名無しさん:2016/01/20(水) 01:12:34.78 ID:X0JkwFym.net
めんどくせーからろくすっぽ読んでなかったが
MySQLがからんでるのか?
じゃあ単なるお前の設定の問題だろ

963 :デフォルトの名無しさん:2016/01/20(水) 02:17:26.63 ID:NsmSPaQP.net
俺ならDBD::mysqlPPに手を加えて、DBから取得直後のデータをヘキサダンプするよ

964 :デフォルトの名無しさん:2016/01/20(水) 07:40:38.69 ID:qWryGyIX.net
だいたい落ち着いたのでまとめると、

use utf8;をつける

BLOB型がある場合は以前から文字化け対策としてSET NAMES binaryをクエリ直前に実行していた。
しかしこれをやると、CHARや全てのutf8フラグが付かなくなる。以前は何もしなくても文字化けしなかったが
これをやった後は取得したもの全てにdecode_utf8を実行するようにする。

あとJcodeの機能を使ったらdecode_utf8を実行するようにする。

あと自分のコーディングの方法では画面出力前に出力関係で使うものを一括で処理できる部分があるので
そこでフラグが外れているものがあってもいいようにdecode_utf8を実行するようにする。

とりあえずこれで今のところ文字化けは全て解消
前よりutf8フラグに対してシビアになってる気がします。

965 :デフォルトの名無しさん:2016/01/20(水) 10:56:00.70 ID:MFk6X+zP.net
>前よりutf8フラグに対してシビアになってる
お前のやり方が悪いだけ

966 :デフォルトの名無しさん:2016/01/21(木) 01:21:32.59 ID:IBB4depX.net
またエンコードがらみか。早く卒業したいものだな、この話題は

967 :デフォルトの名無しさん:2016/01/28(木) 04:33:18.39 ID:GDEXV+mQ.net
初心者 やることを制限してフラグを使わずに済ます
中級者 ネットの情報を頼りにフラグを使って処理をする(そして罠にはまる)←イマココ
上級者 フラグを使わずにやりたいことを全部こなす

968 :デフォルトの名無しさん:2016/01/28(木) 18:26:52.60 ID:mFPQrw87.net
Perlはゴミすぎて使い物にならない
systemで&付けて外部コマンド実行してもバックグラウンド実行にならないゴミっぷり
こういう言語は消滅すべき

969 :デフォルトの名無しさん:2016/01/29(金) 08:58:48.48 ID:uNLw2+tE.net
バックグランド実行されるよ

970 :デフォルトの名無しさん:2016/01/29(金) 09:36:50.36 ID:G034Tjvl.net
なんや?Perlがゴミじゃなくて俺がゴミだっていいたのか?

971 :デフォルトの名無しさん:2016/01/29(金) 21:29:34.46 ID:9Ge45nDk.net
2歳児が見慣れないおもちゃに手を伸ばしたけど思い通りにならなくて駄々こねてるって感じかな。
とりあえず、Perl はシェルじゃないよ。

972 :デフォルトの名無しさん:2016/01/30(土) 08:08:14.69 ID:Xlz0mKM6.net
system("実行ファイル &");
で実行ファイルが終了するまで制御戻ってこず、数時間ハマる

実験用Perlスクリプトを作成し、中でsleep(5);を実行
このスクリプトをバックグラウンドで実行できるかテスト
system("./実験用スクリプト.pl &");
5秒間制御戻ってこず
sleep(10);なら10秒制御戻ってこず

PHPで試したら一発OK
最初からPHPでやれば人生を数時間無駄にしなくても済んだ

結論:Perlはゴミ
CGIどころかコマンドラインですら使えないことが判明

追記:環境による可能性あり
検索した結果だとバックグラウンドで動作させることに見事成功した人もいるみたい
環境によって成功するかどうか分かれる可能性あり
少なくともCentOS上では使えないことが確定

973 :デフォルトの名無しさん:2016/01/30(土) 08:34:20.81 ID:1uFZLt6C.net
普通に、ミニマルに
$ perl -e 'system("sleep 5 &")'
で確かめろよ。
なんで実験用のスクリプトなんだか用意すんの?

974 :デフォルトの名無しさん:2016/01/30(土) 14:21:32.41 ID:mLqIkhjr.net
オンラインマニュアルが読めないような奴に何を言っても無駄

975 :デフォルトの名無しさん:2016/01/30(土) 23:59:02.00 ID:+Pg6hfQV.net
鯖設定の問題の気もしているのですが、質問させてください

いつの間にかモジュールのpathが通らなくなってしまい
例えばテンプレートツールキットで
> Can't locate Template.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 以下略
このようなエラーが出るようになってしまいました

元々はApacheの設定で環境変数を設定していたのですが
何かが悪さをしており上手く行かかなくなってしまい、
応急処置的に
> BEGIN {
>  push @INC, (必要なpath);
> }
としたのですが

> my $t = Template->new(これまでは動いていた各種引数);
> print STDERR Dumper($t);

これでログにundefが表示されており、悩んでいます。
エラーになるわけでもなく、インスタンスがundefになるという現象が初めてで困惑しているのですが
逆にここまで珍しい?なら何か知ってる人がいるかもと思い書き込みました。
原因について心当たりある方いましたら、ご教示お願いしますorz

976 :デフォルトの名無しさん:2016/01/31(日) 02:05:33.03 ID:kB7BIzkV.net
perlで既存のword文章を開いて編集保存って出来ないでしょうか?
具体的にはA4の宛名10面を印刷できるラベルシールのwordテンプレートファイルに対して、
既に用意されている宛名をperlで指定場所に挿入したいです。
htmlのように作成出来たりしないでしょうか?
宜しくお願い致します。

977 :デフォルトの名無しさん:2016/01/31(日) 03:03:40.29 ID:GPj4igvU.net
Word, Excel などは、単純なテキスト形式ではなく、
色んな見た目の形式なども含んだ、独自形式のファイルでしょ?

他のアプリで、その形式を解析するのは無理だと思う。
ただし、LibreOfficeなら出来るかも

978 :956:2016/01/31(日) 03:16:38.40 ID:kB7BIzkV.net
どうやらモジュールがあるようでした。
ここだと作成しか載ってませんが、編集が出来るかどうか調べてみます・・・
http://codezine.jp/article/detail/1567

979 :デフォルトの名無しさん:2016/01/31(日) 03:23:53.46 ID:GPj4igvU.net
>>975
「perl can't locate pm in inc」で検索!

Perlモジュールの読み込みに失敗する場合のチェックポイント
ttp://qiita.com/Cside/items/14d82883a6e9741ea0ae

デバッグできないの?
それか、HelloWorldのような、もっと単純な構成のもので、
動くかどうか試してみる

980 :デフォルトの名無しさん:2016/01/31(日) 11:18:36.60 ID:GhZKQ5FXR
CPANに怪しげなモジュールあるじゃん。
https://metacpan.org/pod/MsOffice::Word::HTML::Writer

981 :デフォルトの名無しさん:2016/01/31(日) 15:11:15.62 ID:h5e2cEyg.net
>>979
モジュールを読み込んでも、
インスタンスを作るとundefになってしまうという現象の質問です。

982 :デフォルトの名無しさん:2016/01/31(日) 16:04:52.33 ID:0OoJBV50.net
>>981
マニュアル読めよ

>A reference to a new Template object is returned, or undef on error. In the latter case, the error message can be retrieved by calling error() as a class method or by examining the $Template::ERROR package variable directly.

983 :デフォルトの名無しさん:2016/01/31(日) 16:18:16.64 ID:GhZKQ5FXR
>>981
newしてるあとに、
or die($Template::ERROR, "\n");
を付けたせ。

エラーは全部拾う。
基本をしっかり守れ。

984 :デフォルトの名無しさん:2016/01/31(日) 16:40:50.66 ID:h5e2cEyg.net
>>982
ありがとうございます…
下でコケてるのかorz

985 :デフォルトの名無しさん:2016/02/01(月) 08:59:15.60 ID:2Lopcu1u.net
>>976
オレ、同じようなことやってるよ。
1.wordで雛形の文章作って、html形式で保存する。
2.html形式の雛形ファイルをperl でいじって、新規htmlファイルを作る。
3.新規htmlファイルをword で開く
というふうにするといい。

986 :デフォルトの名無しさん:2016/02/01(月) 18:46:47.99 ID:YLbRqwKb.net
>>973
あたりまえだが、
普通にCentOSでバックグラウンドになるな。
単に、ヘボスクリプトでどっかミスってんだろ

987 :デフォルトの名無しさん:2016/02/01(月) 20:59:27.95 ID:rMTqXsJZ.net
バックグランドで動かないって泣いてる人は、どうせ apache の cgi の
perlスクリプトとかじゃないの?
phpとか言ってるし

988 :956:2016/02/01(月) 21:01:35.43 ID:qbG9bpQz.net
>>985
サンクス、参考にします

989 :デフォルトの名無しさん:2016/02/02(火) 10:41:09.52 ID:BLKJLUrI.net
>>972
まだ見てる? 問題は解決した?
そのやりかただと Perl とシェルを使うから「シェルだけ」、「Perl だけ」でやってみるといいよ。

990 :池田大作・人殺しの殺人鬼!  :2016/02/02(火) 14:15:22.50 ID:dwq5YKX9.net
 
キチガイの集まり・創価学会・公明党!

人殺しの殺人鬼が政治活動・創価学会・公明党!

池田大作・人殺しの殺人鬼・創価学会・公明党!

あやかりドチンピラの池田糞作・創価学会・公明党!

池田大作・人殺しの殺人鬼!
 

991 :デフォルトの名無しさん:2016/02/02(火) 19:58:47.96 ID:3wwqVUnZ.net
すみません、どなたかわかる方、教えてください。

一般ユーザーで、webから情報をもってきて、テキスト整形、単純な演算して、内容をメールをするとい
うperlスクリプトを書きました。ターミナルからコマンド打つと、ちゃんと動いてメールも届きます。
しかし、cronに登録すると、動かないのです。atでもだめです。

他のスクリプト(bashスクリプト)はcronでもatでも動いています。当然crondも動いています(runレ
ベル2,3,4,5でON)。cronのログには、指定時間にこのスクリプトが起動がされていると記されて
います。(perlスクリプト内にデバグ用にFHでopenして、起動時刻書き込むのも動いていない、コマン
ドラインから起動すると書き込まれる)。

atの場合はちょっと変わっていて、時間がきても実行されないのですが、時間後に、atq(at -l)で確認す
ると、他の残っているタスクと記述が違うのです。以下のような感じ。(19:25頃に出力)
$atq
6123 2016-02-02 19:06 = User
5856 2016-02-21 12:45 a User
5857 2016-03-20 12:46 a User

実行されず、その時刻のあと、他のjobはaになってるところが=になっています。実行されなかったという
意味かもしれません。とにかく、atで動かなくてもcronで動けばいいのですが。

まさか、cronで起動できるのは、shスクリプトだけ、という事はないだろうとgglましたが、そういう事はな
いようです。実行権限(775)確認、パスは通っている。cronの書式には問題はない(フルパスでコマンド
記述)。crontab中、コマンド直後に標準エラーをログる指定しても何もなし。

ありうるとすると、perlの必要な環境変数とかが設定されていないとか、と。スクリプト先頭のおまじないは、
#!/usr/bin/env perl、plenvで5.22.1が動いています。

もう他にやりようがありません。どなたか、ヒントでもおねがいします。

992 :デフォルトの名無しさん:2016/02/02(火) 20:08:30.49 ID:KYl+p0oO.net
スクリプトはどこに置いているの?
フルパスで指定している?

993 :デフォルトの名無しさん:2016/02/02(火) 20:16:37.41 ID:3wwqVUnZ.net
>>992

$HOME/hogehoge/check.pl

のような感じです。このhogehogeにはPATHは通っておらず、crontab内で、
スクリプトをフルパス指定しています。他のbashスクリプトはそれでも問題
なく動いていますが。perlだと違うのでしょうか?

よろしくお願いします。

994 :デフォルトの名無しさん:2016/02/02(火) 20:37:08.30 ID:KYl+p0oO.net
>>993
/home/user/・・・

って指定して試してみて

995 :デフォルトの名無しさん:2016/02/02(火) 21:20:43.79 ID:3wwqVUnZ.net
>>994

もともと、crontab内では、/home/User/hogehoge/check.plで指定しています。

996 :デフォルトの名無しさん:2016/02/02(火) 22:12:48.39 ID:KYl+p0oO.net
>>995
crontabとシェルでの直接実行に違いがあるとすると
後は環境変数くらいしか思いつきません。
perlスクリプト内で環境変数を参照はしているのでしょうか?
もしもしている場合は明示的に教えた方が良いかもしれません。

997 :デフォルトの名無しさん:2016/02/02(火) 23:40:33.99 ID:Fw307SWV.net
>>991
スクリプトの先頭のshebangを、envじゃなくperlへのフルパスにしてみるとどう?

998 :デフォルトの名無しさん:2016/02/03(水) 05:57:05.46 ID:Lo86feSu.net
>>991
なんかグダグダしてるなぁw

こういうのは最小の状態を作って実験するんだよ。
何やってるかわからんスクリプトじゃなくて、
例えば/tmp/hogeファイルを作成するだけの簡単なPerlスクリプト作って動くか確認する。
plenvも使わない。

そこからはじめて少しづつ増やしていくんだよ。

999 :デフォルトの名無しさん:2016/02/03(水) 06:04:31.15 ID:U8rS0pSn.net
>>996 >>997

ありがとうございます。

crontab内で、cd /home/User/hogehoge && /home/User/hogehoge/check.pl と
かやってみたものの状況変わらず。

別途、起動用のshスクリプト作って環境変数読み込んでplenv初期化してからperl
スクリプト呼べば行けそうな気はしますが、直接plファイル起動したいので、
/home/hogehoge/でplenvを呼び出し、global local systemにしてcentos7オリジ
ナルのperl 5.16に戻してみることにしました。

plenvすごくいいのですが、こういうところでつまずくとは。。。

1000 :デフォルトの名無しさん:2016/02/03(水) 06:15:10.73 ID:Lo86feSu.net
>>78
plenvの仕組みとLinuxのユーザーの考え方がわかってないだけ。

plenvがどういう仕組で動いているのかと
cronがどのユーザーの権限で動いていて、セキュリティのために
環境変数を初期化しているということを知っていれば簡単に解決できる問題。

1001 :デフォルトの名無しさん:2016/02/03(水) 06:15:57.05 ID:Lo86feSu.net
> /home/hogehoge/でplenvを呼び出し、global local systemにしてcentos7オリジ
> ナルのperl 5.16に戻してみることにしました。

plenvの仕組みを勉強しろ。
これは全く意味が無い。

1002 :デフォルトの名無しさん:2016/02/03(水) 06:24:40.56 ID:U8rS0pSn.net
>>991です。

さっそくやってみました。

system perlが参照する先にはモジュール足りなかったのでcpanで入れて
/home/User/hogehoge/でplenv local systemを叩きこのディレクトリでは
systemなperlが起動されるようにしたところ、cron起動で動き出しました。
という事は、似たような事が、pyenvな環境でも起きる可能性あるという事
でしょうか。

あとから情報ですが、gglと、同じような事で悩んでいる方多いようです。
plenvな環境の人ばかりのようです。

いくつかログを取ってても、何もそれらしい事は書かれておらず、まいり
ました。以上です。

1003 :デフォルトの名無しさん:2016/02/03(水) 06:30:27.10 ID:U8rS0pSn.net
>>991 です。

>>1000

あなたは、自分以外の人間も、自分と同じ力量であるという前提で
書かれていませんか?
相手をこきおろして、批判して、楽しいのでしょうか。スレの雰囲気が
悪くなるだけです。

1004 :デフォルトの名無しさん:2016/02/03(水) 08:03:15.02 ID:/0P6zwpR.net
>991

スクリプト先頭を
#!/bin/sh
として

コマンドやファイルを
全てフルパスで指定してどうなる?

1005 :デフォルトの名無しさん:2016/02/03(水) 15:27:57.49 ID:lxST4PlE.net
セッションのモジュールが使えないレンタルサバなので自作でセッションID作ってみたけど
どこか問題ある?

my $time = time;
my $rand = int(rand(10000000));
my $pro_id = $$;

my $session_id = $time.$rand.$pro_id;

1006 :デフォルトの名無しさん:2016/02/03(水) 17:26:14.79 ID:UKSoJdac.net
>>1003
力量が下だと自覚したのなら、
力量を上げればいいだけだろう?

1007 :デフォルトの名無しさん:2016/02/03(水) 17:29:12.54 ID:UKSoJdac.net
>>1002
> という事は、似たような事が、pyenvな環境でも起きる可能性あるという事
> でしょうか。

お前は、すべてを覚える気か?

理由もわからずに、pyenv環境では〜という謎なことが起きる。でいつも終わってるだろ?
原因を調べずに、いろんな発生する問題を覚えようとしている。
効率が悪すぎる。

まず仕組みを調べろって。そうすれば何故そうなるのかがわかるだろ。
お前がやろうとしているのは仕組みを知らないで、結果だけをしろうとしている行為だ。

1008 :デフォルトの名無しさん:2016/02/04(木) 01:01:28.90 ID:WWqaejBP.net
そんなことのために system 関数使うとかないわー
……と、つっこみそこねた。いや、>>972 に対してだけどね。

1009 :デフォルトの名無しさん:2016/02/04(木) 02:02:24.55 ID:w2AdpGYg.net
>>991
cronにはユーザの環境変数が引き継がれないため、
設定する必要がある

/etc/crontabと/etc/cron.d設定ファイルの書き方
ttp://www.server-memo.net/tips/etc-crontab.html

cronの環境変数は特殊だから、皆cronではまる
「cron 環境変数」で検索!

Linux板で聞いた方がよいかも。
もっと、HelloWorldとか、単純なものから始めること

総レス数 1009
298 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★