Perlについての質問箱 64箱目 [転載禁止]©5ch.io
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2014/11/30(日) 05:11:36.58ID:F+8+iHjqPerlに関する質問スレです。
最新 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
0002デフォルトの名無しさん
2014/11/30(日) 05:12:30.77ID:F+8+iHjqhttp://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 対応
0003デフォルトの名無しさん
2014/11/30(日) 05:13:18.39ID:F+8+iHjq初めての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/
0004デフォルトの名無しさん
2014/11/30(日) 05:14:10.58ID:F+8+iHjqプログラミング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/
0005デフォルトの名無しさん
2014/11/30(日) 05:15:04.87ID:F+8+iHjqEncodeモジュール
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
0006デフォルトの名無しさん
2014/11/30(日) 05:16:03.39ID:F+8+iHjq※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;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。
0007デフォルトの名無しさん
2014/11/30(日) 05:17:30.41ID:frlGdpGZ質問をどうぞ
0008デフォルトの名無しさん
2014/11/30(日) 10:49:51.30ID:XYqV7W5h【ActivePerl Community Edition】
http://www.activestate.com/activeperl/downloads
直近2つのバージョンしか公開されておらず、再配布もできないので個人的な
学習用に使用
【Strawberry Perl】
http://strawberryperl.com/
Larry Wallも使っていて、長期的なプロダクトでも安心して利用できる
0009デフォルトの名無しさん
2014/12/04(木) 02:19:44.71ID:TDiayB+/その名前とバージョンを書いてください。また説明に使う用語は可能な限り調べて
正しい用語を使ってください。質問文の用語がでたらめな場合、正しい回答が得
られず、お互いに無駄になってしまいます。
アンチPerlのレスは無視します。
0010デフォルトの名無しさん
2014/12/05(金) 13:23:17.10ID:o40hdMhHaa/bb/cc → aa/bb
としたいので(切り取り)
s/\/\w+$//;
とすると aa/bb と切り取りできます。
しかし、aa/bb/cc() だと文字列に記号が入ると
当然切り取りできなくなります
s/\/.+$//;のようにすると、全部切り取れます。
記号入りの
aa/bb/cc() → aa/bb にするにはどうすればよいでしょうか?
0011デフォルトの名無しさん
2014/12/05(金) 18:36:13.30ID:wsf0zRCt0012デフォルトの名無しさん
2014/12/05(金) 18:37:00.37ID:wsf0zRCt0013デフォルトの名無しさん
2014/12/06(土) 15:23:32.16ID:Oq8ILO6Cユニコードで \w は使いものにならなくなったと申し添えておく
0014デフォルトの名無しさん
2014/12/06(土) 17:18:16.00ID:dYckGB2Sイージーミスだけに、かっこ悪いぞ
0015デフォルトの名無しさん
2014/12/06(土) 18:34:56.22ID:GPtOp1dg重複スレ:
Perlについての質問箱 63箱目
http://peace.2ch.net/test/read.cgi/tech/1392906213/
本スレ:
Perlについての質問箱 63箱目
http://peace.2ch.net/test/read.cgi/tech/1392820583/
001610
2014/12/07(日) 11:54:39.44ID:CEiqcgxp配列 = SPLIT(”¥/”) "aa/bb/cc/dd()”;
作業用文字列
ループ(配列 [配列個数-2] ){
作業用文字列 .”$_” . ”¥/”;
}
作業用文字列 =^ s/¥/$//g #最後の/を消す
な感じで・・・・
0017デフォルトの名無しさん
2014/12/07(日) 13:38:36.08ID:EVS/iDzZ0018デフォルトの名無しさん
2014/12/12(金) 00:56:09.11ID:/vyLMUkiuse File::Basename;
print File::Basename::dirname('aa/bb/cc/dd()');
# s|/[^/]*$||; デモイイヨ!
0019デフォルトの名無しさん
2015/01/03(土) 03:35:55.08ID:z4sjuxFo0020デフォルトの名無しさん
2015/01/03(土) 10:11:29.32ID:9yXYqvm60021デフォルトの名無しさん
2015/01/03(土) 11:04:10.67ID:Ukcf8MFpT-SQLでどんなアプリケーション書いてるのかそろそろ教えてよ
0022デフォルトの名無しさん
2015/01/03(土) 11:09:33.00ID:9yXYqvm60023デフォルトの名無しさん
2015/01/03(土) 13:33:21.01ID:b/9bEf+N0024デフォルトの名無しさん
2015/01/04(日) 09:37:16.26ID:w9Cj0tkOなんか、CGI自体下火とか抜かしてたやつもどっかで見かけたが
0025デフォルトの名無しさん
2015/01/04(日) 09:58:06.99ID:JDtmWI5yPythonやC++で書かれたCGIは未だに存在する。
0026デフォルトの名無しさん
2015/01/04(日) 10:28:22.33ID:d5IQgmaJ今はPSGIを使うんよ。
http://gihyo.jp/dev/serial/01/perl-hackers-hub/000101
0027デフォルトの名無しさん
2015/01/05(月) 09:23:06.57ID:NRlwke4r0028デフォルトの名無しさん
2015/01/05(月) 20:43:23.81ID:KQNQflUf2ちゃんってPerlで書かれてないの?
0029デフォルトの名無しさん
2015/01/05(月) 20:48:10.26ID:dcVDuqIPPerl+C+JSじゃないっけか
0030デフォルトの名無しさん
2015/01/05(月) 22:29:53.84ID:HnMh9gySシェルスクリプトでCGIプログラム書いているよ。
Windows 7のガジェット(HTML+CSS+JS)から
アクセスすると残り容量をJSONPで返す。
そういうシェルスクリプト
0031デフォルトの名無しさん
2015/01/06(火) 02:51:10.39ID:gxyFRR6Uecho Content-Type: text/plain
echo.
echo.
dir c:
0032デフォルトの名無しさん
2015/01/13(火) 02:35:51.69ID:WJdHMFeU#!/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;
この様にしてもエラーになってしまいます。どこに問題があるのでしょうか?
0033デフォルトの名無しさん
2015/01/13(火) 02:41:58.98ID:fYHyjqVd0034デフォルトの名無しさん
2015/01/13(火) 04:54:39.25ID:pEsQ+pp8ここのどちらかの、クォーテーションが変?
0036デフォルトの名無しさん
2015/01/13(火) 19:44:14.94ID:DywLXJJx$str =~ s/ab(.)/$1$1/;
print $str;
これだと、
cc
と表示されるのに、
$str = 'abc';
$rep = '$1$1';
$str =~ s/ab(.)/$rep/;
print $str;
こうすると、
$1$1
になってしまう
うまく動くオプションとかある?
0037デフォルトの名無しさん
2015/01/14(水) 22:01:41.11ID:bmsBHzdL$str =~ s/ab(.)/$rep/ee ;
これが何をしてるか理解できないなら eval 使えばいいと思うよ。
eval したら $@ を確認しようね。
もっと柔軟にしたいならこんな感じか。
$func = sub { "$1$1" };
$str = "abc";
$str =~ s/ab(.)/ $func->() /e ;
0038デフォルトの名無しさん
2015/01/15(木) 01:48:30.87ID:KHeQBVOf一般的にどの言語でも、ソースコードを書くときは、
コメント以外では、全角を使ってはいけない。
半角英数字記号のみを使う
" 半角のダブルクォーテーション
' 半角のシングルクォーテーション
>>36
>$str =~ s/ab(.)/$1$1/;
>$rep = '$1$1';
>$str =~ s/ab(.)/$rep/;
Perlをよく知らないけど、
たぶん上は、正規表現オブジェクトか何かで、
下は文字列になるのでは?
0039デフォルトの名無しさん
2015/01/15(木) 02:22:21.67ID:5irEx8LZ文字列リテラルもあるでよ
0040デフォルトの名無しさん
2015/01/15(木) 06:23:15.10ID:l/H+BQr/$str =~ s/ab(.)/qq{"$rep"}/ee;
置換パターンが大量にないならパターンに応じて関数を定義するのがお勧め。
0041デフォルトの名無しさん
2015/01/17(土) 08:22:17.87ID:ZvXMCZRdq()が鍵なのかな
0042デフォルトの名無しさん
2015/01/18(日) 01:03:44.79ID:WOJrRr7a0043デフォルトの名無しさん
2015/01/18(日) 02:04:23.51ID:aSyqWTebしそうなので俺的には「初めてのPerl」がおすすめ
Perl5のリファレンスを使い始める前にPerl4部分をしっかり覚えて欲しい。
0044デフォルトの名無しさん
2015/01/18(日) 02:38:31.68ID:1HDk1G1l初心者を惑わせる罠のつもりなんだろうなw
Perl 5.0のリリースは1994年10月17日
もうこれだけで4を勉強する価値なんて無いってわかるでしょ
今となってはバッドノウハウでしかないものの塊で
Perl4なんか勉強したらマイナスになるだけだよ。時間の無駄
今となってはゴミ。その知識は脳の貴重な記憶容量の無駄に消費するだけ
0045デフォルトの名無しさん
2015/01/18(日) 18:20:13.75ID:A5yzNlpG0046デフォルトの名無しさん
2015/01/18(日) 18:55:01.12ID:H4Qq5dvfモジュールはuseで読むのが大半。
use strictだけではなくuse warnings使うのが常識
ローカル変数で常に使うmy。
リファレンス必須だし、リファレンス前提のオブジェクト指向も常識
使う文字コードはデフォがUnicode。そしてEncodeモジュール
これらを使う一般的なコードはPerl4では書けない
0047デフォルトの名無しさん
2015/01/18(日) 19:22:24.91ID:A5yzNlpG配列とか連想配列とかダイアモンド演算子とか制御文とか
0048デフォルトの名無しさん
2015/01/18(日) 19:54:02.15ID:9c4B87qA紫式部読めば、現国のテストに役立つ
くらいの主張だな
0049デフォルトの名無しさん
2015/01/18(日) 20:13:55.20ID:fm6KJFw04と5で変わらないならばこそ、
5でいいだろ。
4と5があるなかで、あえて4を使う理由がない。
4でできることは5でもできる。
何言ってんだ?
0050デフォルトの名無しさん
2015/01/18(日) 20:17:50.73ID:fm6KJFw05でしかできない。ローカル変数(my)
オブジェクト指向(package)
これらはどんな言語でも常識とされる
プログラムを組むときの基本中の基本だが、
これがPerl4ではできない。
プログラムの基本を学ぶことに対して
明らかなデメリットも有る。
0051デフォルトの名無しさん
2015/01/18(日) 20:31:22.18ID:evwOrnCS全部グローバル変数なのは大昔のBASICの頃の話だ
0052デフォルトの名無しさん
2015/01/18(日) 20:34:05.41ID:/Es8fzpE少なくとも5が出てしばらくは
4にそんな機能は無かったような
localならあったけど
0053デフォルトの名無しさん
2015/01/18(日) 20:45:21.30ID:fm6KJFw0Perl4が〜とか言ってるわけさ。
な? 害悪でしか無いだろ?こいつの存在が。
0054デフォルトの名無しさん
2015/01/18(日) 20:48:05.00ID:fm6KJFw0投げ捨てたほうがいいよwww
0055デフォルトの名無しさん
2015/01/18(日) 21:24:53.15ID:LIlFSWHFさすがにperl4はないわ。
0056デフォルトの名無しさん
2015/01/18(日) 22:23:58.23ID:y7kj+MYX文字通りPerl4を学べっていいたかったわけじゃないんでしょう
最新版の「初めてのPerl」はPerl5前提ですよね?
たぶん「続・初めてのPerl」で書かれている内容に進む前に
「初めてのPerl」の内容をちゃんと理解して使いこなせるように
しといてと言いたかったんでしょう
0057デフォルトの名無しさん
2015/01/18(日) 22:50:12.17ID:9c4B87qA0058デフォルトの名無しさん
2015/01/19(月) 01:15:03.69ID:3g+53XGQPerl4という名前を出すこと自体おかしい。
0059デフォルトの名無しさん
2015/01/19(月) 03:37:07.91ID:xfteSUpK0060デフォルトの名無しさん
2015/01/19(月) 08:07:11.33ID:4O8sQ6M+ありえない
0061デフォルトの名無しさん
2015/01/19(月) 20:13:43.17ID:KRgt1oEf0062デフォルトの名無しさん
2015/01/20(火) 02:01:11.38ID:qh3uAgM0perl5は…来世で学べばいいよ。
ゆっくりやってくれたまえ。
0063デフォルトの名無しさん
2015/01/20(火) 05:59:29.04ID:p5BhMaBc0064デフォルトの名無しさん
2015/01/20(火) 06:16:18.54ID:B1RIAFel学んでからレスれな。
触った事も無いくせに perl4とかウゼーよ、釣り師
http://perldoc.jp/docs/perl/5.14.1/perltrap.pod
0065デフォルトの名無しさん
2015/01/20(火) 06:19:03.40ID:YBhsuE8kうん。仕様はPerl。実装はPerl4。
Perl4はPerlの仕様の一部しか実装されてない
myやpackageなどの超基本が実装されてない。
だからPerl5を使えって話だよね。
0066デフォルトの名無しさん
2015/01/20(火) 06:24:28.69ID:B1RIAFel言語仕様も、同名なだけで変更されただろ、
0067デフォルトの名無しさん
2015/01/20(火) 06:39:05.71ID:B1RIAFel本人か釣り師か知らんが、前スレでは、
同様のperl4に言及する馬鹿は、perl5.005とperl5.5の
区別が付いてなかったぜ
0068デフォルトの名無しさん
2015/01/20(火) 06:44:29.79ID:tNNew0EG0069デフォルトの名無しさん
2015/01/20(火) 20:16:29.34ID:LXStG+t6use Encode;
0070デフォルトの名無しさん
2015/01/20(火) 21:07:30.40ID:THOt6njyuse warningsしろや
0071デフォルトの名無しさん
2015/01/20(火) 22:17:59.43ID:C0ccJEs90072デフォルトの名無しさん
2015/01/20(火) 23:07:31.58ID:p5BhMaBc0073デフォルトの名無しさん
2015/01/21(水) 01:14:29.44ID:7CfJSlyJPerlがまだまだ生きてることを知らしめれば
Perl本出版事情も改善するかもしれない
0074デフォルトの名無しさん
2015/01/21(水) 02:33:54.19ID:TKQcMheJ刊行日: 2014年1月予定
0075デフォルトの名無しさん
2015/01/21(水) 08:24:18.70ID:iPVXK3uGそもそも「敢えて入れないと」Perl4自体が無いのが基本だし…
0076デフォルトの名無しさん
2015/01/21(水) 21:42:02.23ID:n02BC3Phuse strict;
use warnings;
は、開発後には捨てるものだけどな
0077デフォルトの名無しさん
2015/01/21(水) 21:46:25.57ID:mXw559efPerl4ネタじゃ満足できなかったんだろうねw
0078デフォルトの名無しさん
2015/01/22(木) 23:11:08.43ID:CypOiZreEncodeのことちゃんと書いた紙の本ってないのかな?特に罠のところとか詳しい
解説が載ってるのが欲しいんだけど
0079デフォルトの名無しさん
2015/01/23(金) 00:03:47.03ID:6Fnjy6esちゃんと文字コードとして扱えば何の問題もない
0080デフォルトの名無しさん
2015/01/23(金) 00:07:05.62ID:eqfcLCWo一般的にはEncode::EUCJPMSを使った方がいいというやつだね。
Encodeモジュールは文字コードを正しく扱うがゆえに
現実に合わせた変換を行ってくれない。
確かにUnicodeの仕様はそのとおりだけど(間違った実装の)Windowsの
せいで、その変換ではだめなんだってことがある。
そして一番現実的なのはNKFだったりする。
所で実はEncodeモジュールを拡張するのは簡単で、
新しいエンコーディング名に対応するのは
モジュール一個作って、encodeとdecodeメソッドを用意するだけでいい。
なので、nkf-eucjpとかnkf-shiftisとかいうエンコーディング名を作ってるよ。
日本語以外にも対応する必要があったので、Encodeモジュールの仕組み自体は使う
だけど文字コード変換自体は内部でnkfを使っている。
0081デフォルトの名無しさん
2015/01/23(金) 00:31:01.76ID:bLSRjsAV例えば?
0082デフォルトの名無しさん
2015/01/23(金) 00:38:57.01ID:DAkROUe3どうぞよんでね。
Encode - 規格のバグまでは直せません
http://blog.livedoor.jp/dankogai/archives/50488765.html
0083デフォルトの名無しさん
2015/01/23(金) 00:44:55.12ID:bLSRjsAVなるほど
辛い話しだね
0084デフォルトの名無しさん
2015/01/23(金) 08:20:15.51ID:6Fnjy6es0085デフォルトの名無しさん
2015/01/23(金) 23:44:32.96ID:PLrM2j7r0086デフォルトの名無しさん
2015/01/23(金) 23:51:58.94ID:8Ft3ozd1基本はEncodeモジュールが対応しているものだよ。
それ+日本語は特別に拡張対応w
メールソフトみたいなものだと思ってくれればいい。
送信者はいろんな言語を送ってくるわけで
0087デフォルトの名無しさん
2015/01/24(土) 00:14:01.74ID:8Lo2ixHgのか不安じゃない?おれは不安だな
0088デフォルトの名無しさん
2015/01/24(土) 01:47:16.70ID:H0FHHZ5/そんなもの翻訳ツール使えばわかることだよ。
日本語のように波ダッシュとかある種の文字だけ
化けるなんてのには対応できてないだろうが概ね表示できればOK。
何か問題があったらその時報告でもくるだろ。
0089デフォルトの名無しさん
2015/01/24(土) 12:49:13.24ID:8Lo2ixHg半角カナだらけで読めないのがあったり・・・
0090デフォルトの名無しさん
2015/01/24(土) 14:20:27.39ID:pFUl8Xhjややこしいのは日本くらいだろ。
ほかの言語なら変な文字化けとかは
あんまり心配いらんのでは。
0091デフォルトの名無しさん
2015/01/24(土) 14:37:53.66ID:3WuJ0aJV日本語が(読めるけど)おかしいのは、翻訳の問題であって
文字コードの話とは関係ないだろ。
EUC⇔SJISを取り違えると、全く読めない文章になるわけで
所々化けるわけじゃないよ。
翻訳ソフトでそれなりの文章になれば
少なくとも大筋では正しく文字コードを扱ってるといえるだろう。
0092デフォルトの名無しさん
2015/01/24(土) 23:54:07.25ID:lCRanfvM欧米は欧米で苦労してるよ。
国の数だけでもえらい多いのに、同じ字形のダイアクリティカルが
別々の符号化方式で実装されてるんだから。
0093デフォルトの名無しさん
2015/01/25(日) 00:05:27.09ID:WeB4tC0Zそこからダイアクリティカルマークの統合が実施されて、その勢いでハンユニフィケーション。
欧米の文字は数字の仲間なんだろうけど、漢字は絵の仲間。最近、絵文字をサポートし始めて
ようやく漢字がどんなものなのか、C,J,K,Vの漢字をどうサポートすればよかったのか悟りつつ
あるようだ。
0094デフォルトの名無しさん
2015/01/25(日) 07:49:47.55ID:VXh7McAu欧米は基本全部ISO-8859シリーズだと
思ってたが、違うの?
0095デフォルトの名無しさん
2015/01/25(日) 12:57:56.23ID:rE6cly2Miso-8859シリーズじゃ我慢できないレベルで圧倒的に足りなかったんだと思うよ。
cp737とか見るとダメ文字使ってでもめいっぱい領域よこせ的な雰囲気がある。
そもそも8859以下のエンコーディングは全部別々だからその間では化けるし、日本語以上に自動判別なんて無理そう。
メールなんかでSMTPに流そうとすると8ビットクリーンにしなきゃいけないから結局MIMEの出番だし。
日本の都道府県が勝手に符号化方式を拡張してるイメージなのかな。
北海道が独自にアイヌ語表記用のひらがな追加してたらやっぱり混乱してたと思う。
009695
2015/01/25(日) 13:04:32.41ID:rE6cly2M0097デフォルトの名無しさん
2015/01/25(日) 13:13:32.17ID:puUqp4ZNどうしてたんだろ
0098デフォルトの名無しさん
2015/01/25(日) 13:49:48.08ID:WeB4tC0Zだけにしたいなら、そういう方法になる。異体字セレクタとかは一般民は使うはずがない。
0099デフォルトの名無しさん
2015/01/25(日) 14:47:05.84ID:GYzk0joc普通に使われてる。
正確には異体字セレクタではないが、
絵文字は異体字セレクタと同様の仕組みで
絵文字化している。
0100デフォルトの名無しさん
2015/02/15(日) 22:15:31.88ID:4RXg+5Yt0101デフォルトの名無しさん
2015/02/16(月) 10:07:10.87ID:McaEaMoK0102デフォルトの名無しさん
2015/02/18(水) 00:30:45.39ID:b4QEjz5u0103デフォルトの名無しさん
2015/02/22(日) 20:14:32.60ID:jGeuUSRA負荷のかかる処理を排他する場合の関数ってありますか?
例えば
ロック
データを30万行1行ずつ読み込み(高負荷)
ロック解除
というようにしたいんです
というか30万行でも高負荷といえるのしょうか?
0104デフォルトの名無しさん
2015/02/22(日) 20:16:05.62ID:jGeuUSRAつまり
ロック
30万行読み込み
検索
ロック解除
というようにしたいんです
0105デフォルトの名無しさん
2015/02/22(日) 20:31:03.92ID:UZqTxAidそういう時はデータベースを使う。
知らないからって甘えないように
データベースを勉強すればいいだけ。
みんなそれで解決している典型的な問題。
0106デフォルトの名無しさん
2015/02/22(日) 22:03:26.65ID:jGeuUSRAmkdirを使ってロックディレクトリが残っていれば処理をしないというようにすれば
検索処理を排他することができました
0107デフォルトの名無しさん
2015/02/22(日) 23:16:47.04ID:Tf8seuYjオプションを調べるといい。まさかPerl4なのか?
0108デフォルトの名無しさん
2015/02/23(月) 00:32:57.58ID:pG3LwxQC意味ではなくて、基本をまず覚えろって意味
おれはこのスレで覚えたlocaltimeには今でも感謝している
データベースだのTime::Pieceだのを持ち出す前にPerlをよく知ってほしい
0109デフォルトの名無しさん
2015/02/23(月) 06:58:42.19ID:eK56KkkA>おれはこのスレで覚えたlocaltimeには今でも感謝している
このスレで覚える様なアホが、Perl(4も5も)語るなよ
0110デフォルトの名無しさん
2015/02/23(月) 08:12:30.68ID:EFdND4romkdirで排他ロックのやりかたはいろんなサイトに書いてありましたが、mkdirで共有ロックについては書いてありませんでした
そこでmkdirでロック用ディレクトリを作りそのディレクトリの中に排他ロックがかかっているのか
または共有ロックがかかっているかを判別するためのディレクトリを作ることにしました。
ロック用ディレクトリの中にrwというディレクトリがあれば読み書き禁止の排他ロック
wというディレクトリがあれば読み込みOKで書き込み禁止の共有ロックという感じです
この方法だと何か問題ありますか?
もっといい方法があれば教えてください
0111デフォルトの名無しさん
2015/02/23(月) 09:06:18.71ID:feaNRgVgいまどきは大丈夫だけど、flockが使えない環境ってことは、
10年以上前のシステムを使ってるってことだから、その辺は心配だな。
0112デフォルトの名無しさん
2015/02/23(月) 12:30:29.58ID:hyNQWBteもっといい方法の前に
だめな理由をかいておく。
まずデータが30万件だ。
つまりいかなるロック方法であっても
そのデータを処理している間、他の処理ができなくなる。
それを避けるには、行ロックがが必要。
データ30万件の1行毎にロックが掛けられるようになる。
これを使えば並列に処理できるようになるから
パフォーマンスが大幅に上がる。
だが行ロックできるようにするためには、ファイルのフォーマットを
変えないといけない。単純なテキストファイルやCSVファイルでは
行ロックは不可能。
そして、行ロックが出来るようにしたものが
データベース。
0113デフォルトの名無しさん
2015/02/23(月) 16:09:07.50ID:jEdpJRTO行ロックとかしないけど
0114デフォルトの名無しさん
2015/02/23(月) 17:05:18.21ID:zNLn6pFR中にディレクトリを作るための排他ロックと共有ロックの使用数をカウントするものがほしくなるなw
0115デフォルトの名無しさん
2015/02/24(火) 03:03:40.47ID:OzhdDlTU0116デフォルトの名無しさん
2015/02/24(火) 06:17:15.80ID:ri5TzV3bじゃあ共有ロックは誰が解除するの?wwww
0117デフォルトの名無しさん
2015/02/24(火) 12:27:40.41ID:6vv1mCHrなぜわざわざ茨の道をいこうとするのか?
それは先人がこれではだめだと引き返した道。
その道を進む行為は賢くないよ。愚かだよ。
0118sage
2015/02/24(火) 20:40:05.57ID:aDKRFdovどれがお勧めなのでしょうか?
ネットで検索してもそれらしいライブラリが見つからないようで
教えて頂けると助かります。
7年くらい前は、全文検索ライブラリにmecab-perlとかを使っていた記憶があります。
0119デフォルトの名無しさん
2015/02/24(火) 21:42:36.35ID:OzhdDlTU0120デフォルトの名無しさん
2015/02/24(火) 22:11:47.39ID:6vv1mCHrオレオレロック機構を実装して
アプリが異常終了してロックが解除できなくなって
壊れたとかよくあるよなw
0121デフォルトの名無しさん
2015/02/25(水) 01:12:24.88ID:u9apSz6m解決の仕方だからね。いいのが出来たらライブラリとして公開してくれるだろ。
0122デフォルトの名無しさん
2015/02/25(水) 06:40:27.69ID:vrjMDbEAデータが詰め込まれたデータベースほど
恥ずかしいものはないw
0123デフォルトの名無しさん
2015/02/26(木) 12:06:49.72ID:9YTrvgco排他ロック・共有ロックともにそのプロセスを介するというのはどうか
まあDBMSがやってる仕事をかわりにやるだけな訳だが
0124デフォルトの名無しさん
2015/02/26(木) 12:25:50.57ID:0ruku8I/そんなことできる技術もないし、
そんなことが許されるサーバーも使っていないし使えない。
http://kotowaza-allguide.com/he/hetanokangae.html
【下手の考え休むに似たりの解説】
【注釈】 囲碁や将棋で、下手な者がいくら長時間考え込んでも名案など浮かばず、まるで駒を手にしたまま何も考えずに休んでいるようなものだということから、よい考えなど浮かぶはずもないのに、あれこれ考えて時間を無駄にするという意味。
【出典】 −
【注意】 「下手な考え休むに似たり」というのは誤り。
【類義】 下手な思案は休むに同じ/下手の考え休むに如かず
【対義】 下手の考え休むに如かず
【英語】 Mickle fails that fools think.(馬鹿が考えていることは、たいてい役に立たない)
【用例】 「そういうのは下手の考え休むに似たりというものだよ。いい加減降参したらどうだい」
0125デフォルトの名無しさん
2015/02/27(金) 00:48:13.26ID:88OXUGFl0126デフォルトの名無しさん
2015/02/27(金) 02:33:17.69ID:F989SPSP0127デフォルトの名無しさん
2015/02/28(土) 07:54:32.57ID:6vZKnEo0追記するだけでいい場合はだめだめロックでもわりとなんとかなっちゃったりするんだよな
0128デフォルトの名無しさん
2015/03/07(土) 00:31:09.31ID:639b0hNr�@シングルタスクOS上でアプリを書く
�Aフォルダを使ってロックする
�Bflockを使う
�CDBMSを使う
�D追記の場合はだめだめロックでも可
次スレのテンプレに追加すること
0129デフォルトの名無しさん
2015/03/07(土) 08:07:08.11ID:jW+ek3hJ保証されるようになるはずだよね?w
0130デフォルトの名無しさん
2015/03/10(火) 05:33:44.69ID:dWaMJNFMわりとなんとかなっちゃう、というのは、大丈夫、とか、なにかが保証される、というのとはちょっと違う。
0131デフォルトの名無しさん
2015/03/11(水) 02:12:12.02ID:bSZHOSLF2と5は間違いなので追加してはいけない。
0132デフォルトの名無しさん
2015/03/13(金) 13:02:28.46ID:+e2bgrgv0133デフォルトの名無しさん
2015/03/14(土) 13:28:00.55ID:ra/AMlN3されないのならrequireするファイルにもuse strict;とuse warnings;を記述しないとだめってことですか?
0134デフォルトの名無しさん
2015/03/17(火) 01:17:39.48ID:nEqloX6Quse warnings;も同様。インタプリタにひと手間かけて欲しければ、その指定を
プログラマがひと手間かけて行う必要がある。それがラリーのセンスだ。
0135デフォルトの名無しさん
2015/03/21(土) 00:43:34.53ID:jjT9Gnx+たとえば猿真似のpythonなんか2015年にもなってまだ日本語が不得手だ。
LLの種類に関係なくEncodeの神になれよ。
0136デフォルトの名無しさん
2015/03/29(日) 12:42:33.67ID:5vNHXOnnんじゃないか?Perlは今後ともLLのモルモットとして役に立っていくのだろう。
0137デフォルトの名無しさん
2015/03/29(日) 18:08:31.48ID:F8+FjfS71:open関数の読み書きモードで開いてflockで排他ロックして書き込むアクセスカウンタ
2:読み込みモードで開きflockで排他ロックしtmpファイルに書き込んでからrenameするアクセスカウンタ
2つを同時に貼り付け100回連打したら、2の方がカウント数が全然少なかったです
renameは遅いのでやめたほうがいいんでしょうか?
0138デフォルトの名無しさん
2015/03/30(月) 03:26:34.94ID:x/GhIrok読み込みモードは他人の読み込みを邪魔しない。
AさんとBさんは同じ数字を読む可能性がある。
0139デフォルトの名無しさん
2015/03/30(月) 12:19:57.60ID:Lq0egyTjseekで指定した位置から1文字ずつ削除する方法を教えてください
どちらもテンポラリファイルを使わない方法でお願いします
0140デフォルトの名無しさん
2015/03/30(月) 12:28:01.22ID:Lq0egyTj一括読み込みじゃない方法でお願いします
0141デフォルトの名無しさん
2015/03/30(月) 12:32:32.86ID:O9aguycE0142デフォルトの名無しさん
2015/03/30(月) 14:12:22.95ID:FyB5h3Ft0143デフォルトの名無しさん
2015/03/30(月) 15:23:59.96ID:eFvOQ4YdCGIバブルが終わってからは、あるべき姿に落ち着いてそのままだよ
てかそれは随分と昔の話なんで、未だにPerl終了と声高に叫ぶ輩が生き残ってることのほうが不思議
0144デフォルトの名無しさん
2015/03/31(火) 00:03:39.74ID:OIxY6GETopen(IN, $datafile) || last;
$data = <IN>;
close(IN);
}
これってファイルが開けたらループから抜けるという意味ですか?
0145デフォルトの名無しさん
2015/03/31(火) 01:19:44.02ID:kv4yZW7+人に訊くより自分で試した方が早く解決できると思います。
まぁ答えはとしてはそれであってるけど、そのままだとファイルが開けないときにcpu食い潰すよ。
0146デフォルトの名無しさん
2015/03/31(火) 02:14:23.38ID:DVVpWgeR0147デフォルトの名無しさん
2015/03/31(火) 02:26:22.41ID:kv4yZW7+あ、ほんとだ。すんません。スーパー恥ずかしい...
っつーと、ループ内で$datafileのファイル名が変わるのかな。
0148デフォルトの名無しさん
2015/03/31(火) 09:01:50.49ID:IugrT7n6一応回答すると、ファイルが開けなかったらwhileループから抜ける。念のため
0149デフォルトの名無しさん
2015/03/31(火) 11:54:41.74ID:SqSmYtEXuse strict;use warnings;use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
#コメントテスト;
my $i = 10;
print $i, "\n";
これをコマンドプロンプトで実行しても何も表示されなくて
コメントの行を消すとちゃんと10って表示されるんですが何か設定がおかしいのでしょうか?
0150デフォルトの名無しさん
2015/03/31(火) 15:08:39.18ID:xBEas+F+poor client相手に、月額1000円のサーバの固定費とCMSの運用費払わせる方がどうかしてる
0151デフォルトの名無しさん
2015/03/31(火) 16:11:46.48ID:DVVpWgeR月1000円って小学生のお小遣いじゃんかw
0152デフォルトの名無しさん
2015/03/31(火) 17:14:17.46ID:xBEas+F+イニシャルコストと導入後のメンテ費用を考えたら素のhtmlとcgiで書いた方が良心的
0153デフォルトの名無しさん
2015/04/01(水) 08:41:54.94ID:JORFK8wqこの部分についての質問です
まずsubで関数名がないのと、戻り値がないのに$SIG{ALRM}にはどんな値が格納されるのですか?
そしてdie関数はwindowsだと使えないのでwindowsではどのように書けばいいのでしょうか?
0154デフォルトの名無しさん
2015/04/02(木) 00:14:11.31ID:tnulMQUl$SIG{ALRM} には関数を代入してるよ。
dieはWindowsのばあ
0155デフォルトの名無しさん
2015/04/02(木) 09:04:28.21ID:aIeKvK0iActivePerl 5.16.1 だけど die 使えてるっぽいけど
C:\>perl -e "print 'ABC'; die 'timeout'; print 'DEF';"
timeout at -e line 1.
ABC
0156デフォルトの名無しさん
2015/04/02(木) 10:23:28.67ID:4ZZsgi5w0157デフォルトの名無しさん
2015/04/02(木) 21:08:36.38ID:JH1Mqqb4これが動かなかったら大変なことになるぞw
0158デフォルトの名無しさん
2015/04/02(木) 21:53:22.87ID:sYN9b3250159デフォルトの名無しさん
2015/04/04(土) 17:17:39.67ID:xbtlZw9Yforeach(1..100){
print "aaa=====$n<br>";
}
$nに変数を何も代入しなくてループ処理をするとperlがフリーズしました
原因を教えてください
0160デフォルトの名無しさん
2015/04/04(土) 17:26:39.68ID:sl6pa7sN0161デフォルトの名無しさん
2015/04/07(火) 16:19:35.80ID:y6ne4vkDConfigure: 行 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
0162デフォルトの名無しさん
2015/04/08(水) 19:14:41.36ID:ajF3hp/Zsrand(900);
int(rand(10));だと0になってしまいます
どうすればいいんですか?
srand使わないとアクセスするたびに乱数が変わってしまうので値を固定したいんです
0163デフォルトの名無しさん
2015/04/08(水) 20:12:07.81ID:CYuqSHduちょっと何言ってるかわからない
最大限努力してエスパーすると0から9の整数を適当に並び替えた配列が欲しいという意味かな?
0164デフォルトの名無しさん
2015/04/08(水) 20:25:03.59ID:WFBZO/E0/proc/curproc/exe
Winのパス区切り文字は、\ では?
/ も使えるの?
それは、Win向けのスクリプトなの?
\proc\curproc\exe
それか、\ を、\ でエスケープして、
\\proc\\curproc\\exe
>>162
固定取得とはどういう意味?
例示して説明せよ
0165デフォルトの名無しさん
2015/04/08(水) 20:45:13.88ID:gn+rALV1> / も使えるの?
Win32 APIも含めて、パスの区切りは
/でも動くような気がする。
いろんな言語、ライブラリで/で動くから
深く考えないで動くもんだと思ってしまってる。
どのレイヤーが変換してるんだろうか?
0166デフォルトの名無しさん
2015/04/08(水) 20:58:58.93ID:WFBZO/E0だから、パスと認識しているね。
そういうファイル・ディレクトリが存在しない
NetBSD /proc/curproc/exe
このパスは、NetBSDという事?
よく見ると、exe というファイル名は変だね。
ファイル名.exe じゃないの?
それとも、ディレクトリ名かな?
0167デフォルトの名無しさん
2015/04/08(水) 21:18:07.68ID:ajF3hp/Zだけど何回実行しても結果が同じようにしたい
例えば乱数の基数を1にしたら8が何回実行しても出る
基数を2にしたら3が出る
基数を5にしたら9が出るという感じ
0168デフォルトの名無しさん
2015/04/08(水) 21:20:19.11ID:gn+rALV10169デフォルトの名無しさん
2015/04/08(水) 23:13:04.24ID:ajF3hp/Zfor($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になっちゃう
0170デフォルトの名無しさん
2015/04/08(水) 23:57:25.91ID:cLFBRghz0171デフォルトの名無しさん
2015/04/09(木) 01:42:19.49ID:r2hp3hxjとっておき、プログラムの実行時にそのファイルを参照することで毎回同じ
乱数を使えるようにする、でいいですか?
0172デフォルトの名無しさん
2015/04/09(木) 02:40:04.67ID:+7hvEmMbsrandに同じ種を与えて、2回実行したらどうなる?
0173デフォルトの名無しさん
2015/04/09(木) 11:45:47.57ID:E0v+Buu6for($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にならないにはどうしたらいいんですか?
0174デフォルトの名無しさん
2015/04/09(木) 12:39:17.03ID:f/5UDar+手元のマシンも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
0175デフォルトの名無しさん
2015/04/09(木) 16:45:39.45ID:Vuzz2A3sPerl本体をビルドするときの
$ 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: コマンドが見つかりません
0176k
2015/04/09(木) 17:31:03.07ID:bPVf1A9quse 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です。内容に特に意味はないです。ヒアドキュメントが調べてもよくわからない。
初歩的な質問ですいません。
0177デフォルトの名無しさん
2015/04/09(木) 18:00:46.10ID:d4jlQFlQ0178デフォルトの名無しさん
2015/04/09(木) 19:30:15.27ID:Zaj1yAit0179k
2015/04/09(木) 20:49:02.45ID:bPVf1A9qThe 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.
こう表示されます;
0180デフォルトの名無しさん
2015/04/09(木) 21:00:50.57ID:peeQLIsXまずは、warnings のタイポ直してから、それでも駄目だったら、
PHP板に行けば?
0181k
2015/04/09(木) 21:37:17.12ID:bPVf1A9q>>1 さんのレスみてcgiの話題大丈夫かと思ってました・。
0182デフォルトの名無しさん
2015/04/09(木) 21:41:38.74ID:peeQLIsX>>1がどう言おうと、板全体の方針の方が優先されるぜ。
0183デフォルトの名無しさん
2015/04/09(木) 23:52:30.19ID:d4jlQFlQアパッチのエラーログに詳細情報があるんじゃない?
それを見てみたら?
0184デフォルトの名無しさん
2015/04/10(金) 00:22:13.20ID:XYVxfdlnperlのパスは/usr/local/bin/perlであってるのか?
サーバーの設定によっては755では動かないようにしてある場合もあるがあってるか?
スクリプトの文字コードは問題ないのか? メモ帳でUTF-8で保存してBOMが付いてるとかありがち
0185k
2015/04/10(金) 21:42:02.36ID:k00nOeV8perlパスはあってます。755で他のcgiは動いています。(同一サーバー)
文字コードはshift-jisになってます。テキストエディターはterapadを使ってます。
0186デフォルトの名無しさん
2015/04/10(金) 21:51:58.93ID:XnlVh9yU動作している環境はもしかしてUNIX?
ソースの編集をWindows上で行ってるんですよね?
行末にゴミが残っているかも知れません。
0187k
2015/04/11(土) 00:31:09.61ID:YBDEAPKuコマンドプロンプトでは、syntax okっと出たので、謎です^^;
0188デフォルトの名無しさん
2015/04/11(土) 00:37:56.32ID:pm/uZPWMためしに、terapad使って、ソースの改行コードを
[ CR+LF ] から [ LF ] に変換してから
サーバーに上げてみて。
0189デフォルトの名無しさん
2015/04/11(土) 01:07:58.32ID:DGTXgMDHxreaは拡張子を.cgidにしてうpればエラー詳細出せるみたいだけどやってみれば?
0190デフォルトの名無しさん
2015/04/11(土) 01:25:48.84ID:hRe3cPjf0191k
2015/04/11(土) 04:37:47.41ID:YBDEAPKuエラ-原因が
Script is not executable. Issue 'chmod 755 filename'
属性が755じゃ駄目だってことなのかな・・。
0192デフォルトの名無しさん
2015/04/11(土) 08:36:37.16ID:TjKNTTtC続けるのか?
0193デフォルトの名無しさん
2015/04/11(土) 09:52:08.49ID:xPz3Wm/g0194デフォルトの名無しさん
2015/04/11(土) 10:26:58.59ID:pm/uZPWMScript 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」となり実行できません。
違う理由の場合はごめん。
0195デフォルトの名無しさん
2015/04/11(土) 13:56:57.30ID:ykBWyHan質問者(初心者) >>> スレ主(中級者) >>> 回答者(ベテラン)
でお願いします。
0196デフォルトの名無しさん
2015/04/11(土) 14:03:51.73ID:hp4FkV79my $tmp = {
$a => sub { $_ = 処理A},
$b => sub { $_ = 処理B},
$c => sub { $_ = 処理C},
};
ループ中に↑のように書いている場合、一つの変数に対して複数の処理($a に 処理A' やA''を追加)を
加えたい場合、どのように書くのでしょうか?
0197デフォルトの名無しさん
2015/04/11(土) 15:34:33.51ID:UKPnNYb6Perlの構文はよく知らないので、
一般論で、ヒアドキュメントについて書くが、
print <<"EOS";
ここに書いたものは、改行も含めて、
見たままそのままに、変数に代入される
EOS
print は変数名ではない。
そこに何か変数名を書く。
そして、print 変数名 とすればよい
0198デフォルトの名無しさん
2015/04/11(土) 15:52:09.61ID:TjKNTTtC0199デフォルトの名無しさん
2015/04/11(土) 15:55:52.96ID:TjKNTTtC質問者のその部分自体にはperl的ミスはねーよ。
ヒアドキュメントは変数に突っ込まなきゃつかえない訳じゃねーぞ。
$ cat <<FOO
heredoc> foo
heredoc> bar
heredoc> FOO
foo
bar
それ以外の部分のトラブルだから、とっととWebProgに行けと言われてんのに。
0200デフォルトの名無しさん
2015/04/11(土) 16:37:52.64ID:jprZbhPv> ループ中に↑のように書いている場合、
それ自分が書いたコードじゃないだろ?
まず他人のソース、会社のソースを弄る前に
Perlの基礎を勉強してからにしろよ。
単純に変数に関数の戻り値の結果を入れるだけの話だから、
↑のように書いているかどうかは全く関係ない。
つまり、その質問はあんたが自分のやりたい事と書いてあるコードを
全く読めてないってことを告白していることになってるんだよ。
レスつかんはずだわw
0201デフォルトの名無しさん
2015/04/11(土) 22:44:04.23ID:d2KPF5yqヒァ〜〜!
0202デフォルトの名無しさん
2015/04/11(土) 22:59:11.44ID:ykBWyHanテキストエディタで開いて、何も編集せずに、お前の行っている操作方法で元の
名前で保存(上書き保存)する。この操作でCGIスクリプトが動作しなくなったら
テキストエディタ、ないしその操作方法に問題がある。
問題なく動くのであれば、その動くプログラムを少しずつ書き換えていって、自分の
作りたいスクリプトに近づけていく。一度にたくさん書き換えず、ちょっと変えて
保存して、実行して、を繰り返すと、どこで不具合が発生しているかが分かる。
0203k
2015/04/12(日) 13:54:34.19ID:jIVNY2vPヒアドキュメントがあるとうまくいかないってことがわかりました。
ヒアドキュメントをもう少し個人的に調べてみます。
色々助言してくだった方、親切にありがとうございました。
0204デフォルトの名無しさん
2015/04/13(月) 07:58:16.02ID:wj7rKPvKこれだけの痛さはそうそう出せるもんじゃないな
実に味わい深いw
0205デフォルトの名無しさん
2015/04/13(月) 23:38:15.33ID:+3GTN8vq0206デフォルトの名無しさん
2015/04/14(火) 00:42:23.04ID:oXtat8760207デフォルトの名無しさん
2015/04/15(水) 00:59:37.51ID:8TvJxe7E0208デフォルトの名無しさん
2015/04/16(木) 00:57:11.31ID:bLWn78BU0209デフォルトの名無しさん
2015/04/16(木) 19:53:32.64ID:DU3YUAwL0210デフォルトの名無しさん
2015/04/17(金) 22:37:47.72ID:UHVCP2Vk正解
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;
0211デフォルトの名無しさん
2015/04/17(金) 23:12:42.75ID:OFoEPQZ/0212デフォルトの名無しさん
2015/04/17(金) 23:15:03.75ID:UDbFCugu0213デフォルトの名無しさん
2015/04/17(金) 23:52:03.56ID:eADhUYSQ0214デフォルトの名無しさん
2015/04/18(土) 00:42:24.85ID:28SXig6k0215デフォルトの名無しさん
2015/04/18(土) 17:51:31.68ID:TTmK2bDQなんだ、そゆことかw
0216デフォルトの名無しさん
2015/04/18(土) 21:43:34.50ID:K7f11N+p機能はなく、ひとたび使ってしまうとメンテで苦労する。それがTime::Piece。
0217デフォルトの名無しさん
2015/04/18(土) 23:09:50.41ID:dV26hKK2ところがuse warnings;を使うとフォームに何も入力してない場合は変数にデータが入ってないらしく、が初期化がされてないといわれエラーが出てしまいます。
print "$FORM_DATA{'textbox1'}";のようにtextbox1のフォームが未入力の場合です。
このような入力フォームハッシュは初期化しようがないと思うんですが、どうすればエラーを回避できるんでしょうか?
0218デフォルトの名無しさん
2015/04/18(土) 23:30:48.75ID:j/wjXDDU最初に空文字列でも代入して、初期化しておけば?
$FORM_DATA{$form_name} = "";
$FORM_DATA{$form_name} = $form_value;
それか、$FORM_DATA{'textbox1'}を使う前に、
エラー処理を入れる
if($FORM_DATA{'textbox1'} == nil){
エラー処理
}else{
print "$FORM_DATA{'textbox1'}";
}
0219デフォルトの名無しさん
2015/04/18(土) 23:50:04.98ID:09otItWeクソコード書くな。
>>217
一旦変数に入れると良い。
特にPerlはリストコンテキストとスカラコンテキストの問題で
フォームからのデータを変数にいれないで扱うとバグの元になる。
まずフォームからの入力だが、フレームワークを使っているならそのやり方をするとして
使ってないならば、おそらくCGIモジュールを使っているだろう?
ならば、こうだ。
my $q = CGI->new;
my $value = $q->param('value') // '';
'' の代わりに、何も入力されていない時の初期値を入れれば良い。
0220デフォルトの名無しさん
2015/04/19(日) 07:33:57.07ID:Z1tOTu1C>>218
お前、レスんなよ。
0221デフォルトの名無しさん
2015/04/19(日) 09:44:55.05ID:KgvSDjWg糞初心者ガキが
0222デフォルトの名無しさん
2015/04/19(日) 12:22:34.39ID:Z1tOTu1C初心者認定は構わんが、%FORM_DATA なんぞ使ってる
コマンドラインアプリがあったら教えてくれよ
それよか == nil なんぞ、このスレに書くアホに怒るべきじゃねーの?
0223デフォルトの名無しさん
2015/04/19(日) 12:31:02.57ID:qB4dXJA/直前のレスに
>my $q = CGI->new;
こんなのがあんのに、そのレスする度胸は凄いわ
0224デフォルトの名無しさん
2015/04/19(日) 17:08:28.41ID:vTL3Mzewプログラムを作りたいんだけど、それって
CGIじゃないからここでいいよね?
0225デフォルトの名無しさん
2015/04/19(日) 17:33:10.28ID:EueKgq+R↓こんなのとかいっぱいあるよ
http://kanae.2ch.net/test/read.cgi/php/1078997682/
0226デフォルトの名無しさん
2015/04/19(日) 21:48:27.34ID:7svrhlbQどこどこのサーバーでperlで書いたCGIが動かないみたいなのはさすがにね
0227デフォルトの名無しさん
2015/04/20(月) 00:39:31.33ID:xc0HJa8rno warnings 'uninitialized';
print "$FORM_DATA{'textbox1'}";
}
ttp://perldoc.jp/docs/perl/5.18.1/perllexwarn.pod
0228デフォルトの名無しさん
2015/04/22(水) 16:23:38.90ID:CYsRD/7Plocaltimeの値を全部取得して一部だけ取り出そうとする人はいないだろ
0229デフォルトの名無しさん
2015/04/22(水) 18:11:20.27ID:sdnJBf1e年月日だけ必要な場合とかあるよw
0230デフォルトの名無しさん
2015/04/23(木) 02:31:54.87ID:/mzS0WKLCommon Gateway Interface関係の話題もOKになったと読める。初心者対策だな。
0231デフォルトの名無しさん
2015/04/23(木) 18:44:54.11ID:uaw1qxyQ$::fnc{ shift @in }->(@in)
shiftが実行されてるのに値が捨てられてねぇ
0232デフォルトの名無しさん
2015/04/23(木) 22:33:20.15ID:uaw1qxyQ-------------------------------------
# @_ は標準入力から入ってきた数字の文字。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
--------------------------------------------
どれも全部警告が出る以外は正しく動作します。
もう警告消そうかな…
0233デフォルトの名無しさん
2015/04/23(木) 22:56:48.15ID:RQ6uYe2n$ 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.
0234デフォルトの名無しさん
2015/04/23(木) 23:31:29.88ID:uaw1qxyQ0を受け取ってたのが勘違いに拍車をかけていた
0235デフォルトの名無しさん
2015/04/23(木) 23:33:21.86ID:usUmjU70全部取得したいなら
@t=localtime;
今の時間だけなら
($s,$m,$h)=localtime;
でいいって事を言いたかっただけ
0236デフォルトの名無しさん
2015/04/24(金) 11:39:22.38ID:W/fXv6jM今の年月日だけ必要な場合は?
そういう風に途中だけ必要なのに
明らかに何処かのクソコードをコピペしただけの
コードが多いなって話をしてる。
年を取り出して+1900する
月を取り出して+1する
それを何も考えずに繰り返してる奴。
0237デフォルトの名無しさん
2015/04/24(金) 11:43:00.72ID:W/fXv6jM一言言っておくは。
Perl知ってる、知らない以前の問題で
自分が困るような、複雑な書き方をするんじゃない。
きっとあんたPerl以外でもそんな書き方をするだろう?
リーバブルコードでも指摘されてることだぞ。
無理やり一行に詰めこむことで、自分が賢いと勘違いしているだけだ。
式の何にshiftを入れるんじゃなくて、一旦先にshiftしておくなどして
わかりやすいコードを書くようにしろ。
0238デフォルトの名無しさん
2015/04/25(土) 00:10:15.48ID:48xF3CQb何のメリットもない。漢数字なら一、二、三、ローマ数字ならI, II, III だ。
プリミティブなものは分かりやすいから廃れない。工夫しました系は塗り替えら
れて終わる。
0239デフォルトの名無しさん
2015/04/25(土) 21:44:28.75ID:1Xoffzaq月や曜日が0から始まらないと月名とか参照するのに少し困るけどな。
strftimeは外部モジュール入れるから使う人は少ないだろう。
use utf8;やstrict、warnings すら極力使わずに負荷を下げて処理したい人は多いだろうし
0240デフォルトの名無しさん
2015/04/25(土) 21:46:16.65ID:TJPbTXdwそういう話じゃねーよ。
毎度毎度、使うたびに年に+1900、月に+1する
単純作業やるなっていってるんだよ。
0241デフォルトの名無しさん
2015/04/25(土) 21:46:38.03ID:TJPbTXdw標準モジュールだが?
0242デフォルトの名無しさん
2015/04/25(土) 23:10:56.36ID:VJ48Az800243デフォルトの名無しさん
2015/04/26(日) 01:54:46.37ID:JEE8tkGa言いたいことはわかるけど
ジャンル柄、ライブラリを一切使いたくない時もあるので
まあそんときは怒らずに付き合ってくれよ
0244デフォルトの名無しさん
2015/04/26(日) 09:54:33.74ID:uRRZSCQD訂正。外部モジュールじゃなくて、単にモジュール入れるという意味。
ライブラリ使いたくないからなあ。
全ての主要な標準ライブラリから、strict と warnings 外してやったよ
0245デフォルトの名無しさん
2015/04/26(日) 10:50:44.09ID:Ovagqc5g議論自体はどーでもいいが、
>単にモジュール入れるという意味。
糞意味不明。元々入っているものを「入れる」???
更に、
>全ての主要な標準ライブラリから、strict と warnings 外してやったよ
こんな事言ってるし。
0246デフォルトの名無しさん
2015/04/26(日) 10:53:06.13ID:lX4K+qPz0247デフォルトの名無しさん
2015/04/26(日) 11:46:26.65ID:HAckIWsW自称高速なコードを書く俺は天才
じゃね?w
0248デフォルトの名無しさん
2015/04/26(日) 14:34:59.80ID:FlkKeK75CGIモジュールもそろそろ外れるし、もしかしたらE
0249デフォルトの名無しさん
2015/04/27(月) 09:11:38.32ID:wWpiPENM小さいことに拘るなって。
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も可笑しいからなあ
0250デフォルトの名無しさん
2015/04/27(月) 10:27:35.23ID:d1QnfTlAいや、だから、POSIX.pmは標準モジュールだから
最初っから入ってるんだってw
0251デフォルトの名無しさん
2015/04/27(月) 10:59:30.72ID:vaJOoflW>軽くなったから
労力に対して具体的にどの程度の効果があったの?
0252デフォルトの名無しさん
2015/04/27(月) 11:24:02.24ID:W95auXF3労力は必要ないって。
自分で正規表現使って圧縮するスクリプトぐらい書けるだろ
0253デフォルトの名無しさん
2015/04/27(月) 11:54:07.49ID:vaJOoflW0254デフォルトの名無しさん
2015/04/27(月) 19:45:36.45ID:GvO7a/ob相手するだけ無駄だわ。
0255デフォルトの名無しさん
2015/04/27(月) 19:45:53.47ID:yuVlndLMwindows 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分
0256デフォルトの名無しさん
2015/04/27(月) 19:51:51.84ID:d1QnfTlA一番最初にUTF8に変換してから扱う
0257デフォルトの名無しさん
2015/04/27(月) 19:59:03.64ID:yuVlndLM事故解決しました。
move ディレクトリ名+ファイル名, 移動先ディレクトリ名
でやっていたのを
move ディレクトリ名+ファイル名, 移動先ディレクトリ名+ファイル名
に変えたところ動作するようになりました。
0258デフォルトの名無しさん
2015/04/29(水) 23:37:44.60ID:ijRzeJvh木曜ドラマ9「潜入探偵トカゲ」第4話―@“医療ミスを暴\け!!vs天才外科医” [TBS] 2013年05月09日(木) 21時00分〜21時54分
0259デフォルトの名無しさん
2015/04/30(木) 03:57:32.40ID:4/nMvxH/あんま入出力せずに記述の中だけでかなり色々やりたい時はutf8
どっちつかずの時はもう昔の方法でいいよってことでEUC
0260デフォルトの名無しさん
2015/05/01(金) 22:18:04.69ID:JkgSPIp9perlのように便利なハッシュとは程遠い感じだった。
perlのハッシュってどうなってんの?
0261デフォルトの名無しさん
2015/05/02(土) 17:27:32.11ID:R7a0WGMJ便利なのはプログラマが値のデータ型を区別しなくていいから。
0262デフォルトの名無しさん
2015/05/02(土) 21:29:19.10ID:ve2TTn4S書いてあるコマンドに対応したクラスを呼び出して処理している。
クラスはモジュールとしてファイルがわかれていて、
プログラムの先頭でuseして読み込んでいる。
対応するコマンドを増やすときは、モジュールを増やす。
モジュールのBEGINで、メインプログラムにある
「コマンド解析用リスト」にオブジェクトを追加すると
対応できるコマンドが増える という仕組みを作ったんだけど
こういうのは普通はどういうロジックで作るものなの?
0263デフォルトの名無しさん
2015/05/02(土) 22:08:11.65ID:gGCqgUJNmy($IN) = *IN;のように変数に格納すると
used only once possible typoという警告が出るんですが
どこが間違っていますか?
0264デフォルトの名無しさん
2015/05/03(日) 00:41:54.12ID:o9NCZLQkUNIX系では、半角 ! は、sh では通常の文字だったが、
csh, bash では特殊文字となった
! はコマンドヒストリ。
!! は直前のコマンドを実行する
! は、' '(シングルクォーテーション)で囲むか、
\でエスケープすれば、通常の文字として扱われるが、
" "(ダブルクォーテーション)では展開されてしまう
echo '!!', echo \!\! → 展開されない
echo "!!" → 展開される
以前もLinux板で、同じ質問を見かけたが、
ファイル名に特殊文字など、
まぎらわしい文字を使わない方がよい
また、- ハイフンなどでも、何種類もあるから、
どのハイフンを使ったのか、わからなくなるかも
誰かが入力した文字列をチェックせず、
そのままファイル名に使うと、
システム設計上、バグになることは明らか
0265デフォルトの名無しさん
2015/05/03(日) 01:26:26.91ID:G0S6iNs3すまん意味がわからん。
俺がハッシュを作ろうとしてんのに、「おまえが作ろうとしてるハッシュと同じだよ」って返答だぜ、それは。
0266デフォルトの名無しさん
2015/05/03(日) 01:48:45.69ID:KzoPxOzkINがファイルハンドルじゃないのでは?
抜粋や加工せず、コードもエラーも全文載せてみては?
0267デフォルトの名無しさん
2015/05/03(日) 02:15:29.50ID:cXs5Mf40そんなミスだったら、他のワーニングが出てるよ
>(変数が)一回しか使われてませんよ?
>タイポ(タイプミス)じゃありませんか?
ワーニングの先頭に変数名が来ているはずだけど、
$INなのか、はたまた他の変数なのかは伺い知れん。
0268デフォルトの名無しさん
2015/05/03(日) 02:29:55.72ID:o9NCZLQkRubyはチェイン法
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のしくみ」という本を参照
0269デフォルトの名無しさん
2015/05/03(日) 03:06:08.66ID:KzoPxOzkわかってないな
警告メッセージが抜粋で、全体を見ればどこが悪いか自明だって
言ってるんだよ
$ perl -we 'my($IN)=*IN;'
Name "main::IN" used only once: possible typo at -e line 1.
0270デフォルトの名無しさん
2015/05/03(日) 03:07:43.61ID:KzoPxOzk0271デフォルトの名無しさん
2015/05/03(日) 03:15:11.88ID:cXs5Mf40rubyが好きならrubyスレに行け
>>264
「File::Copyのmoveの使い方が間違ってた」
と真っ当な、perlの自己レスが付いてんのに、
とんちんかんなレスをすんな。
>>269
なんで、
>INがファイルハンドルじゃないのでは?
なんて突飛な発想になるんだ?
そのワンライナーをレスれるくせに。
>>270
そのレスすんなら、更に訂正してやろうか?
ヲーニングだよ。
0272デフォルトの名無しさん
2015/05/03(日) 13:40:03.80ID:NDCsHZKIそう言ったつもり。ハッシュを実装するための質問ならむしろC言語スレに行くといいよ。
perlの実装についての質問なら、質問するよりソースを読んだほうが早くて正確。うそは言わない。
0273デフォルトの名無しさん
2015/05/03(日) 17:49:26.77ID:rnYVSqga<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>タグを消したいです
どうやってこれだけをうまく消せばいいのでしょうか?
教えてください
0274デフォルトの名無しさん
2015/05/03(日) 17:52:33.33ID:rnYVSqga0275262
2015/05/04(月) 03:09:05.36ID:W+jyRLQV0276デフォルトの名無しさん
2015/05/04(月) 09:10:48.82ID:q3PB8X630277デフォルトの名無しさん
2015/05/08(金) 07:29:51.63ID:1J2HFFyn新規でcを作り始めたらイライラする上、発想が貧弱になってやりかたが思いつかなくなった。
0278デフォルトの名無しさん
2015/05/11(月) 00:41:36.32ID:XZpFHT1Xしかもデータ型が限られてて文字列すらライブラリ頼みだ。
0279デフォルトの名無しさん
2015/05/11(月) 06:13:37.29ID:1M4Z8WO8長さが自動可変長じゃないのと、perlだと全部ハッシュが片付けてくれてたんで、その二つが根本的に設計を直撃する。
まぁ自分本位の怠惰な事情なんだろうけど。
ビットいじりもイライラするし。しかもいい発想出てこないし。
最近perlやったもんだからなんでもポインタリンク主義で解決したがるようになってるし。
まぁ全く違う言語やな…やるべきことも求められてることも。
0280デフォルトの名無しさん
2015/05/12(火) 21:05:05.73ID:5u+T/3/k扱えたならC言語を置き換えられるのになあ。
0281デフォルトの名無しさん
2015/05/12(火) 21:12:49.33ID:Nft3ZZ/Hこの言語特殊すぎるから。
何が特殊かというとリストの存在。
このせいで他の言語との相互運用が難しくなってしまっている。
0282デフォルトの名無しさん
2015/05/12(火) 21:36:27.11ID:Jpq+T55S0283デフォルトの名無しさん
2015/05/12(火) 23:07:05.46ID:0UY5oEQ6同様に使えるものが用意されてるので、置き換えられる場合はあるね
ただ、Cの構造体を pack/unpack で扱うのはちょっとやりづらい
0284デフォルトの名無しさん
2015/05/12(火) 23:15:22.62ID:itMmLqyr> 同様に使えるものが用意されてるので
それはどの言語にもあるなw
0285デフォルトの名無しさん
2015/05/12(火) 23:17:15.95ID:itMmLqyrPHP(からオブジェクト指向部分を抜いたもの)
だと思うけどな。strlenとかあるし。
0286デフォルトの名無しさん
2015/05/13(水) 15:50:29.35ID:AQKm/Bi2NAME: { #NAMEはなんでもないただのブロック
foreach my $ (){
foreach my $ (){
last NAME; #※ここ
}
}
foreach my $ (){
foreach my $ (){
last NAME; #※ここ
}
}
}
処理の途中でこうゆう風に一気にNAMEブロック脱出しても原始的な言語みたいに変な問題おきないよな?
例えば、古いベーシック系で起きるみたいな、内部のどこかで一部制御の現在位置の混乱みたいな感じの問題。
いや、適切に全ブロックとループが終了してて、NAMEから脱出できてればそれでいいんだ。
0287デフォルトの名無しさん
2015/05/13(水) 20:04:42.77ID:eNOTZ+er0288デフォルトの名無しさん
2015/05/13(水) 22:16:49.01ID:NgVHOpPEphpなみにすっきりまとめてくれ。
0289デフォルトの名無しさん
2015/05/15(金) 01:22:42.98ID:moFEFGKEどこが気にいらないのか?
ま、配列じゃなくてリストなんだが。
0290デフォルトの名無しさん
2015/05/20(水) 01:32:05.69ID:EkW2PCYtWindows7
#-------------
# 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 ばっかになるんだが…
乱数やないやん。
みんなどう対処してるの?
0291デフォルトの名無しさん
2015/05/20(水) 05:18:09.37ID:+vwzLualそこは置いといて。
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)
して確認してみりゃいい
0292デフォルトの名無しさん
2015/05/20(水) 05:26:24.34ID:EkW2PCYtwin98の頃は二回乱数を捨てなければならなかった。
unix系では大丈夫。
そうゆう質問よ
0293デフォルトの名無しさん
2015/05/20(水) 05:30:55.88ID:EkW2PCYtsrandは明示的に同じ乱数にするのには向いてなくて、
Perlのバージョンにもよるけど、やや古いperlはOS依存になってて、
新しいのでもバージョンによって挙動が違ってて、
それの対処をどうしてるの?
んで、俺が書いた環境だと欠陥じゃない?って感じの質問。
0294デフォルトの名無しさん
2015/05/20(水) 05:34:22.51ID:EkW2PCYt0295デフォルトの名無しさん
2015/05/20(水) 05:45:49.32ID:+vwzLual「0」になったのが問題じゃないのか?
そのコードだと、0に複数回なる可能性が無くはないが、
Windowsだろうと、凄く少ないと判断せざるを得なかった。
>>292,294
同じ結果にならないコードが、同じ結果を吐くなら
問題だけど、同じにするコードを書いてんだから、
$ diff <( perl CODE.pl) <( perl CODE.pl)
これ100回回して同じじゃなければ問題
バグ報告しろ。
0296デフォルトの名無しさん
2015/05/20(水) 05:56:32.39ID:EkW2PCYt0297デフォルトの名無しさん
2015/05/20(水) 05:57:01.56ID:EkW2PCYt0298デフォルトの名無しさん
2015/05/20(水) 05:59:17.56ID:jDYIVmVy>乱数やないやん。
この時点で、どう多レスで弁解しようが、理解してないのまるわかり
0299デフォルトの名無しさん
2015/05/20(水) 06:02:55.13ID:+vwzLual全部0なら、バグ報告しなよ。
windowsだろうと有り得ない挙動だから。
0300デフォルトの名無しさん
2015/05/20(水) 06:16:43.15ID:QJ/TKUao正直その絡みはどうでもいいんで、普通はどうするのか知ってる人お願いします。
0301デフォルトの名無しさん
2015/05/20(水) 06:17:19.94ID:QJ/TKUao0302デフォルトの名無しさん
2015/05/20(水) 06:18:59.72ID:QJ/TKUaoしょうがないからそれ検索してるけど見つからない。
0303デフォルトの名無しさん
2015/05/20(水) 07:04:44.62ID:QJ/TKUao13年前の俺が言うには、OSに加えてPerlバージョン、さらにPerlの種類で乱数の挙動が変わるらしい。
あとアルゴリズム名分かった。ActivePerlは線形合同法。上に書いた症状が発生する。
これは二回値を捨てる必要があるっぽい。と言うかwin98と変わってなかった。
あと、srandが乱数が同じ物になるように統一されたのは けっこう前みたいなことを書いちまったけど、5.20.0からでつい最近らしかった。
それ以前はlibc依存。と言うことでPHPやrubyでも環境を合わせれば同じ症状が出るんじゃないかしら。
まぁ俺が聞きたいこととは違う話しになったが…
0304デフォルトの名無しさん
2015/05/20(水) 09:27:09.88ID:MSIXrSmQ0305デフォルトの名無しさん
2015/05/20(水) 09:37:15.30ID:MSIXrSmQ0306デフォルトの名無しさん
2015/05/26(火) 00:20:05.60ID:lBi0G/Bn0307デフォルトの名無しさん
2015/05/28(木) 12:02:30.14ID:dLzzlyDA0308デフォルトの名無しさん
2015/05/30(土) 10:15:52.58ID:NSTSE0WAまず、Test::Tutorialを読む。殆どの場合Test::Moreで十分。
本当にxUnitみたいなものが欲しい場合はTest::Clsas
0309デフォルトの名無しさん
2015/06/10(水) 04:04:07.70ID:IQPOUpH4基本的にUTF8で動かしてますが、コードに関わらず正規表現を1バイト単位で動かしたい時があります。
たとえば、
my $val = '文字列';
while( $val =~ s/^(.)// ){
}
これが先頭から1バイトづつshiftされてるとか、そうゆうようなことがしたいです。
この文字コードだとこう、とか変更が起きるとめんどうの元で、いつでも安心して使える記述が良いです。
0310デフォルトの名無しさん
2015/06/10(水) 04:38:44.71ID:IQPOUpH4間違ってたら教えてください。
my $val = '文字列';
{
use bytes;
while( $val =~ s/^(.)// ){
}
}
0311デフォルトの名無しさん
2015/06/10(水) 05:07:59.92ID:IQPOUpH4例えば以下の記述をutf8で動かしたとき、
use strict;
use warnings;
use utf8;
use Encode;
my $val = '文字列';
my $re;
{
use bytes;
while( $val =~ s/^(.)// ){
$re .= $1
}
}
$re; #ユニコードが関わってなければ元通りに復帰してる自信あるが…
これはutf8フラグと言うのが付いてるんですか?付いてないんですか?
0312デフォルトの名無しさん
2015/06/10(水) 09:15:15.17ID:KBe3FxtOprint utf8::is_utf8("$re") ? "utf8 flag\n" : "not flagged\n";
自分で確認
0313デフォルトの名無しさん
2015/06/10(水) 12:42:57.17ID:IQPOUpH4バグの元やで。あと来年あたり全部忘れて意味分からなくなってそう。
0314デフォルトの名無しさん
2015/06/10(水) 14:30:16.40ID:M6KJWGtt0315デフォルトの名無しさん
2015/06/20(土) 18:49:23.70ID:kIXF5uCDコンテキストとやら(?)で表面的な動作をしたいわけではなくて、値として扱いたいです。
具体的には 1億*1億 くらい並べたオンオフの表が必要です。
(実際には、1ビットでも1PB以上メモリを食うので、ない物を正しくあると見せかける技術も使います)。
0316デフォルトの名無しさん
2015/06/20(土) 19:03:22.16ID:e4r9zs3/http://perldoc.jp/docs/perl/5.14.1/perlfaq4.pod#How32do32I32manipulate32arrays32of32bits63
0317デフォルトの名無しさん
2015/06/20(土) 20:00:17.90ID:kIXF5uCD初心者なので確認方法(抽象化を伴わない値の出力方法)がよく分からないのですが、おそらく今の所意図したように動作してると思います。
また、これらを扱い際は常にこのような特別な書きかたになるのでしょうか?
例えばですが、値の自動変換や文字の処理、位置管理、その他は不要なので全ての内部フラグは落とし、演算はメモリ位置になるなど。
なるべくごくごく普通な処理。
普通とか特別は>>315の文意から汲んで頂けると助かります。
0318デフォルトの名無しさん
2015/06/21(日) 13:41:35.09ID:7rMevX/A質問の答に関しては、俺だったら
やりたいようにやるだけの話でどうでもいいが、
1ビット単位で扱って1PBもメモリ食うなら、
Perlの書き方以前にPerlを選択することをやめるだろう。
1PBもデータが有るならその処理時間だって重要だろうし
Perlで省メモリとか期待できない。
表自体が広いだけでデータ量自体が少ないならいいけど。
(プログラミングの)初心者だから知ってる言語で許してくれよっていう
考えで適当な道具を使うと本職(学生かもしれんが)のプロの仕事にも
影響出てくるぞ。
本職ではないプログラミングの仕事でも、それを本職のプロの仕事の
一環としてやるなら、初心者だからという甘えは通用しない。
>>315の内容にとっての「普通」というのは、
C言語と圧縮とアルゴリズムを駆使する世界だからな。
0319デフォルトの名無しさん
2015/06/21(日) 17:15:14.28ID:3oiA9SUTそれを普通と言うなら普通の言語を使わないと
0320デフォルトの名無しさん
2015/06/23(火) 23:26:09.06ID:uWCupYQ4dllかなにかで実装します
0321デフォルトの名無しさん
2015/06/24(水) 20:40:18.13ID:OWJG3RlTPerl XSで検索。
0322デフォルトの名無しさん
2015/06/29(月) 17:10:35.01ID:yUlXNQEP大雑把に質問は二つ
一つ目
*aaa;
全てのグローバルなaaaを扱うとかなんとからしいけど、なにに使えばいいの?
二つ目
あるモジュールを使ったら、よく分からない物が返ってきたんで、
いろいろ出力とかして確かめると型グロブとやららしい。
なんだこれ?どうすりゃいいんだ?って思ってたらどうやらそのままファイルハンドルとして使えば機能するとかなんとか。
じゃあ普通にファイルハンドル返せよ
0323デフォルトの名無しさん
2015/06/29(月) 19:52:24.80ID:2OqWgX4Qどのモジュールをどう使ったの?
0324デフォルトの名無しさん
2015/07/01(水) 12:49:33.69ID:58p68Kscファイルハンドルは、
今はクラスオブジェクトだけど、
大昔は違ったと思う。
そのあたりの歴史的事情なのでは?
0325デフォルトの名無しさん
2015/07/03(金) 14:14:59.05ID:zArdkwEuの宣言で
name {...} @array;
と呼べるらしいのですが、
name(){...}
みたいに書きたい時があるのですができないでしょうか。
ifとかwhileみたいに。
0326デフォルトの名無しさん
2015/07/03(金) 14:51:20.85ID:zArdkwEusub name($&){}
と宣言することで
name $val, sub{};
と書けましたがこれはダサいです。
0327デフォルトの名無しさん
2015/07/03(金) 21:26:07.75ID:H1Uvo7jAsub name(¥@&)
0328デフォルトの名無しさん
2015/07/22(水) 06:36:20.58ID:AXEGyECQどうも最近はコンパイルされないようです。
{
my %vit;
sub fnc (\@){
my $ref = shift;
$vit{"$ref"}++;
}
}
なにがやりたいかと言うと、通常のサブルーチンを簡易的なクロージャのように使いたいのです。
fncをサブルーチンのリファレンスにすれば解決するのだろうと思いますが、それだとプロトタイプが使えません。(呼び出し方が気に入らなくなります)。
おそらくは、関数を別ファイルにし、それをスコープとして扱うと意図した通りに動くんだろうと思いますが、
簡単にぱっと書きたいときに、なんでそんなファイルをいちいち用意しなければならないのか、気に入りません。
なにかいい方法を思いついたらお願いします。
0329デフォルトの名無しさん
2015/07/22(水) 11:06:40.91ID:4RCoKAal0330デフォルトの名無しさん
2015/07/22(水) 11:17:17.41ID:AXEGyECQIllegal declaration of subroutine main::fnc
0331328
2015/07/22(水) 12:08:18.38ID:AXEGyECQほんとにごめん。
0332デフォルトの名無しさん
2015/07/22(水) 22:12:52.05ID:+pCybLMVopen (OUTFILE, ”>”, ”/tmp/test.txt”);
print OUTFILE ”output_test\n”;
上記のような記述で外部ファイルに出力をしたい場合、実際に書き込まれるタイミングはprint文の箇所ではないのでしょうか?
あとでまとめて出力されるといったことはあるのでしょうか?
0333デフォルトの名無しさん
2015/07/22(水) 22:25:33.88ID:AXEGyECQ0334デフォルトの名無しさん
2015/07/22(水) 23:09:32.75ID:+pCybLMV早急なご回答ありがとうございます
まさしく私が知りたかったことそのものでした
非常に助かりました
0335デフォルトの名無しさん
2015/07/31(金) 22:23:44.02ID:C/XN/G20変換すると半角カタカナの部分だけ文字化けしてしまうけど
&jcode'convert (\$form_data,"euc");をコメント文にしたら
文字化けしなくなりました。
これはどういうことですか?
&jcode'convert (\$form_data,"euc");は使わないほうがいいんでしょうか?
0336デフォルトの名無しさん
2015/08/01(土) 05:55:46.51ID:fbUoNrmEjcodeは使いません。
0337デフォルトの名無しさん
2015/08/01(土) 10:36:34.36ID:Y7CrlKgG> &jcode'convert
20年前のPerl4みたいなサブルーチンの呼び出しかた
0338デフォルトの名無しさん
2015/08/01(土) 15:15:11.59ID:LRIfaa640339デフォルトの名無しさん
2015/08/05(水) 21:38:04.92ID:X8gF+qpcえっフォームも知らないの?
テキストボックスやチェックボックスやテキストエリアなどを総称して
フォームって言うんだよ
>>338
Perl5.0
とかだとエンコードpm使えないし
まだまだshift-jisやeucは現役やで
この掲示板だってだってShift-jisだろ
0340デフォルトの名無しさん
2015/08/05(水) 22:12:19.74ID:HdJkl2eK0341デフォルトの名無しさん
2015/08/05(水) 22:21:33.08ID:uhvt+B/Oあとフォームはperlと関係ないよ。
0342デフォルトの名無しさん
2015/08/06(木) 00:16:35.56ID:mpzuHEeG触るべきじゃないか
0343デフォルトの名無しさん
2015/08/06(木) 00:29:58.88ID:iPVP1S8W0344デフォルトの名無しさん
2015/08/06(木) 01:02:05.98ID:mpzuHEeGwin32APIかもしれんし、Tkかもしれない。そもそも実行環境OS書かれてない。
ま、ソースのコードも不明で改行コードもないが。
関わらんほうが良いだろう
0345デフォルトの名無しさん
2015/08/06(木) 07:13:22.21ID:AHIdLQWDPerl5≠Perl5.0
ケッ
0346デフォルトの名無しさん
2015/08/06(木) 09:40:47.02ID:mQCtqpjA>>335
多分もう読んでないと思うけど、ひょっとして
Perl 4 時代のスクリプトを使ってるの?
jcode'convert という表記はもう理解できる人も少ないから
jcode::convert に書き改めた方がいい。
文字化けの方は、変換前のエンコーディングを明示的に指定しなさい。
もっと大幅に変更する必要が生じたら現代的な書き方を勉強して
スクリプトを utf8 で書き、Encode.pm を使いなさい。
全角半角変換とかが必要なら Unicode::Japanese で出来るよ。
0347デフォルトの名無しさん
2015/08/06(木) 15:27:27.37ID:4IBTADIH5.0は便宜名称。呼び出されん。
ってこれでさえ20年以上前のバージョンか。いまどきそんな扱い知ってる人もいないか
0348デフォルトの名無しさん
2015/08/06(木) 19:23:19.79ID:A31S3kLv処理系の名称がPerl5
実装がperl 5.00Xとかperldoc perlhistに書かれてる書き方。
もしくは、perldoc versionで明記されてる書き方。
Perl5.0なんて便宜名称で呼ばれた事なんざ一度もない。
0349デフォルトの名無しさん
2015/08/06(木) 19:33:25.14ID:4IBTADIHじゃあそれで使ってればそれでいいじゃないか
0350デフォルトの名無しさん
2015/08/06(木) 19:35:21.58ID:4IBTADIH0351デフォルトの名無しさん
2015/08/23(日) 22:58:46.14ID:Y4Dx2VDCperl(LWPかMechanize)を使って画像をダウンロードしようとしているのですが、
対象のURLがサーバー側でステータスコード404を吐くようにされています。
画像自体はちゃんと存在していて、安易にダウンローダーなどでダウンロードされないような
処理をされていると思うのですが、404でもステータスコードを無視して
ダウンロードするような処理は作れませんか?
0352デフォルトの名無しさん
2015/08/23(日) 23:58:48.32ID:nc+24S0lLWP::UserAgent
0353デフォルトの名無しさん
2015/08/24(月) 08:59:09.16ID:w9FQ7B6lすみません、それ試してました。
0354デフォルトの名無しさん
2015/08/24(月) 17:53:36.61ID:BAr9V/Jbmy $response = $ua->get('http://example.com/example.jpg');
して
$response->contentをファイルに出力すればいいだけではないのかな。
0355デフォルトの名無しさん
2015/08/24(月) 19:07:50.11ID:w9FQ7B6l試してみたのですが、LWPだと0byteファイルしかできません。
Mechanizeのほうは0byteファイルすら生成されません。。
0356デフォルトの名無しさん
2015/08/24(月) 19:41:34.86ID:nHOQqKXp普通404はエラーなので無視してもデータは返ってこない
たぶんrefererで判定してると思うので、それを設定すればいいと思う
0357デフォルトの名無しさん
2015/08/24(月) 19:43:59.68ID:NZbDfDwIデータが取れないなんてことはない。
そんな仕様だと、手が込んだ404エラーページを
表示するブラウザさえ作れなくなってしまう。
0358デフォルトの名無しさん
2015/08/24(月) 20:05:56.36ID:w9FQ7B6l対象画像はサイト内では<img>タグにて開かれており、
レスポンスヘッダをみると、コードは404なのですが、
画像としてはimgタグでちゃんと開かれるのです。
もちろん通常アクセス(リファラ込)でも404ですし、
Perl経由でリファラをセットしても404です。
>>357
仰るとおりで、404ですが、ブラウザからでしたらデータはとれているんです。
でも、Perl経由でその画像を取得しようとすると、モジュールの仕様からか、
404の判定が優先されてしまい、どうしても取得できません。。
0359デフォルトの名無しさん
2015/08/24(月) 20:33:32.51ID:nAxI1L2Z0360デフォルトの名無しさん
2015/08/24(月) 21:25:16.00ID:Wm5DDpbgにしたら文字化けしなくなりました。
0361デフォルトの名無しさん
2015/08/24(月) 21:34:27.54ID:BAr9V/Jbuse 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とか、
ブラウザと異なる部分が無いかを確かめるぐらいしかないんじゃないかなあ。
0362デフォルトの名無しさん
2015/08/25(火) 01:06:45.72ID:bK3l+CW7まずimgタグがあるページにアクセスして、cookie保存して、それからjpg取得してみ
0363デフォルトの名無しさん
2015/08/25(火) 19:23:24.19ID:19KHv/f4>>362
大変申し訳ございません、、結論から言うとできました。
というのも当初とある有料レンサバでやっていたのですが、
そこのサーバー側の仕様でどうにもこうにもならなかったようでして、
別サーバーで試しにやってみたところあっけなく、問題なく取得できました。。
Perlのせいにしていた自分に反省します。あと皆さま、本当にご丁寧にありがとうございました。
皆さんへの御礼にTポイント貯まってたので、かわりにちょっとだけ寄付させていただきましたm(_ _)m
http://i.imgur.com/bX7q9ed.jpg
0364デフォルトの名無しさん
2015/08/25(火) 19:29:37.34ID:pfa9oRBx0365デフォルトの名無しさん
2015/08/26(水) 12:19:13.34ID:g32nt69a# なにか速くなる方法のご提案があればよろしくお願いします。
# 普段、楽な記述を優先させているため、速くするための妥当な記述がよくわかりません。(何をやってもどうでもいいから速くするならいろいろ手はあるのですが)
# あとおそらく意図した通りに動いてるとは思いますが、これはあからさまに違うだろってのがもしあれば、お願いします。
# なお、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;
}
}
0366デフォルトの名無しさん
2015/08/26(水) 15:57:28.81ID:nL2sda9Wクソコードだな、
%::widget とか @::out ってなんだよw
そんな書き方初めて見たわw
0367デフォルトの名無しさん
2015/08/26(水) 16:07:53.10ID:nL2sda9Wえとな、まず %:: とか $:: とか @:: な
普通こんな書き方はしないから、:: を消せ。
もちろん単純に消すんじゃないぞ。消して動くようにしろ。
あとな、データ構造の説明をしろ。
特に、%widgetと%backの中身が何か。
あと意味が無いout_print関数はなくせ。
とりあえずそこをやって再提出。
0368デフォルトの名無しさん
2015/08/26(水) 16:16:50.12ID:nL2sda9Wもしかして、これ「全ての値が同じ場合」とかやってるな?
だから前回と同じものを再出力しないだけなのに、
%backってハッシュになって、いかにも遅そうな
ぐるぐるループしてるわけか。
んなもん、joinして一つの文字列にすれば良い。
my $values = join("\0", values @values)
$back{$values} = 1
とかやれば、前回と同じチェックは単純なチェックで終わるだろ。
そのロジックでいいのかっていうか、間違ってる気がするがね。
前回と全く同じデータが出た場合どうするんだってな。
0369デフォルトの名無しさん
2015/08/26(水) 16:34:24.56ID:g32nt69aベンチが遅くなったので無理でごわすです。
(たしか最速が名前付きのグローバル変数だったと思うけど、カレント空間名は一度しか参照されないのでループによる遅延はないはず。この辺記憶あいまい)
>>368 すみませんが違うです…
それはバグ出るです
0370デフォルトの名無しさん
2015/08/26(水) 19:11:52.55ID:rtOTeoRpmyは使わないほうがいい。
ベンチは取ってないけど、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の量比率を。
もし互換性について間違ってても保証はしない。
むしろこうゆうのを考えるマニアがよくいるので、そうゆうのが出て来るまで待て
0371デフォルトの名無しさん
2015/08/26(水) 20:34:24.80ID:nL2sda9W> our 使えばそのまま動くけど、
ourじゃなくてmy使えって話だよ。
一般的に外から見えるよりも、
中しか見えないほうが速くなる。
0372デフォルトの名無しさん
2015/08/26(水) 20:52:40.93ID:rtOTeoRp0373デフォルトの名無しさん
2015/08/26(水) 21:47:35.73ID:kyRbEfPb「それはない」もへったくれもなかろう。
コードも書いてないのに、主張すんのはどっちもどっち。
もちろん以下のコードが正義だと言うつもりも毛頭ない。
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% --
0374デフォルトの名無しさん
2015/08/26(水) 22:10:15.12ID:rtOTeoRpまあ遅いのはそこじゃないと思うが
0375デフォルトの名無しさん
2015/08/26(水) 22:54:41.30ID:kyRbEfPbうん。意味ない。
意味ないけど、少なくともこのコードでは、(ourはアンフェアだけど。)
「my > state」
で、あなたの
>stateした$aaa >> myした$aaa
の主張はなり立たない。
だから、
>「それはない」もへったくれもなかろう。
0376デフォルトの名無しさん
2015/08/26(水) 23:15:23.15ID:rtOTeoRp君はずいぶん無意味なコードばかり書いてホルホルしてそうだね。推定だけど。
こっちゃ君に用はないよ
0377デフォルトの名無しさん
2015/08/27(木) 00:46:17.94ID:VDg17niRPerlは最適化の際は変数のスコープも直すですか?
冷静に考えてスコープの変更はちょっと出来ないです。(グローバル、レキシカル含めて)
環境はwindowsでPerlはたぶん5.8以上でごわす。実際はほぼ5.20以上だと思うですけど。
>記述に楽をしすぎ、に感じる。
すみません関数の外を直すのは私のやる気にも影響されるです。これ実は一番大事。
$nameと$name2の量は$nameが超大量で$name2がたぶん全部8以下です。
バケットのようなので分けたほうがいいんでしょうね。
>既存の記述の代入は、全て関数の呼び出しに書き換える必要がある。
どのくらい速くなるかは分かりませんが、これやってみるです。
ざっと検索かけたら2000以上出てきたので苦労した挙句にバグりそうな予感が大…
0378デフォルトの名無しさん
2015/08/27(木) 02:13:30.21ID:zsRIAfpUレスは付かない。
0379デフォルトの名無しさん
2015/08/27(木) 12:16:29.47ID:EKT+uFslすでにやったかもしれないけど。というか役にもたたないだろうけど。
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分消化
0380デフォルトの名無しさん
2015/08/27(木) 20:16:15.75ID:H5OCxJPQuse 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 },
});
0381デフォルトの名無しさん
2015/08/27(木) 20:17:51.86ID:H5OCxJPQfoo: 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% --
0382デフォルトの名無しさん
2015/08/29(土) 00:53:19.79ID:g7aWBHc9もういないだろうけど、本当に速くしたいんだったら、最初からそのつもりで設計する
まるでC(≠C++)であるかのように記述するとそれなりに速くなると思うけど、Perl使う意味もなくなる
>Perlは最適化の際は変数のスコープも直すですか?
そこをあとから直したりはしない
作る物を作ってから最適化
グローバルにせよレキシカルにせよ、やるなら最初から全部やり直し
俺の勘ではたいして遅くないと思うんだけど、その記述
どのくらいnextが入るのかは知らんけど、たかが数万行
それで遅かったりハッシュで問題が出るほどならPerlはやめときな
でもそんなことまではしないか、出来ないのだろう。だから現状で満足するのも普通の選択
それに速度主義者はニーモニックで最適化して誰も読めない(解析出来ない)スパゲティになっても遅いと言い始める
時間は0にはならんことよ
0383デフォルトの名無しさん
2015/08/29(土) 08:57:06.58ID:WZg0ljDsまわりくどい
態々、ベンチ結果貼らんでも
$ perl -Mstrict -Mwarnings -MO=Deparse -le '{ my $i = 1 } ; { our $i = 1 } ; $main::i = 1 ; $::i = 1 ; $i = 1'
実行させれば、回答者の件の行の主張が、どれだけ頓珍漢かは分る
0384デフォルトの名無しさん
2015/08/29(土) 13:25:12.87ID:g7aWBHc9それ以前に見事に >>366-388,>>371 これが全部間違ってるのだが
ここまで連打で知ったかぶって嘘だけ書けるのもすごい
でな、>>365がおかしいのは毎回全チェックを入れるところ
どんな使いかたされてるかは知らんけど、widgetが10万行として、
widgetへの代入が2回だけありました、pack_widget_allで全チェックしたのち、その2行分を出力します。
まだ同じことをします。なんて繰り返しだったら目も当てられない。
widgetへの代入をインスタンスの呼び出しで統一すれば何回も同じチェックをする必要はない
これはさすがに作り直すに値するんじゃないかな
いくらめんどうくさがりでも
0385デフォルトの名無しさん
2015/08/29(土) 13:26:28.64ID:g7aWBHc9許せーー
0386デフォルトの名無しさん
2015/08/29(土) 13:56:12.84ID:haT66cVyだから俺が最初に言ったじゃん。
可読性低いからまずコードを書き直せって。
それやらんやつにレスはしないよ
0387デフォルトの名無しさん
2015/08/29(土) 14:12:32.69ID:WZg0ljDs全部突っ込んだらきりがないんだよ
ID: rtOTeoRp のレスは。
0388デフォルトの名無しさん
2015/08/29(土) 14:18:33.70ID:g7aWBHc9レスしないならしないでそうしてほしいんだが
あんた今まで全部間違ってるよ
0389デフォルトの名無しさん
2015/08/29(土) 14:20:01.84ID:g7aWBHc90390デフォルトの名無しさん
2015/08/30(日) 01:35:04.28ID:28DrIhRnprintf("%'d\n",123456789);
これをperlで書くとどのようになるでしょうか
0391デフォルトの名無しさん
2015/08/30(日) 12:52:50.53ID:FzpJCTFzsetlocale(LC_ALL,"");
printf("%d\n", 123456789);
0392デフォルトの名無しさん
2015/08/30(日) 15:16:11.12ID:28DrIhRnなぜか出力が違います
0393デフォルトの名無しさん
2015/08/30(日) 15:30:28.03ID:VBiBUr/Dforeach (@array){
1 while s/^([^\.\D]+)(\d{3})/$1,$2/;
print;
}
おそらくこうでしょう。
Perlのprintfは同じじゃないですし普通は使わないと思います。
0394デフォルトの名無しさん
2015/08/31(月) 00:53:41.53ID:5oSj39BWやっと意味が分かりました
ありがとうございます
0395デフォルトの名無しさん
2015/09/10(木) 07:40:12.03ID:VXdhBPLa以下の制御構造は内部のスタックは狂ったりしないでしょうか。
foreachに対するlastを記述していません。
LABEL:{
foreach my $n (@array){
#〜なんらかの処理〜
redo LABEL if($n); # 一度ループを終了して最初からやり直したい。
}
}
0396デフォルトの名無しさん
2015/09/13(日) 00:16:28.86ID:nrUJjYfywhile (my $n = shift @array) {
# 〜なんらかの処理〜
if ($n) {
@array = @array_org;
}
}
0397デフォルトの名無しさん
2015/09/13(日) 08:42:47.64ID:aY0WQWM2;;;;;;;;;
$ 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 全く無関係
0398デフォルトの名無しさん
2015/09/13(日) 10:40:48.91ID:HkNeW234しない
0399デフォルトの名無しさん
2015/09/14(月) 22:58:53.62ID:DgKRXoMO以下を実行すると、当たり前だが 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
}
}
0400デフォルトの名無しさん
2015/09/15(火) 00:07:53.40ID:lLlN6+xs標準出力は改行来るまでキャッシュされるから。
改行が来たらドンっと出る。
あと、ある程度キャッシュが貯まっても出る。
sleep挟まないとガーッと回ってどんどん貯まるから出る。
ラインバッファをオフにするとかすると
改行しなくても出るようになる。
0401デフォルトの名無しさん
2015/09/15(火) 00:30:14.97ID:474V8Q6+0402デフォルトの名無しさん
2015/09/15(火) 01:13:54.01ID:clufgPymありがとう、勉強になりました
0403デフォルトの名無しさん
2015/09/15(火) 08:37:56.97ID:bdsDky8L0404デフォルトの名無しさん
2015/09/15(火) 21:57:03.82ID:474V8Q6+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
0405デフォルトの名無しさん
2015/09/16(水) 08:04:20.82ID:+0ylx/BYレンタルサーバーがmathモジュール入ってないのでモジュールを使わない方法でお願いします
0406デフォルトの名無しさん
2015/09/16(水) 08:55:40.92ID:nf18HxN00407デフォルトの名無しさん
2015/09/16(水) 13:34:47.42ID:LGFhZh75これはPure Perlモジュールなので
ファイルをコピーしてライブラリのパスを
調整するだけで使えるよ。
この技術(って言う程でもないがw)をマスターすれば、
さまざまなライブラリを使えるようになるので
できるようになったほうがいい。
0408デフォルトの名無しさん
2015/09/17(木) 20:46:31.36ID:lPbqQua0このまま使うと煩雑なので、
%hash = %{$hashref[$i]}
のようにすると、
$hash{'key'}
のようにアクセスできる
でもこれは、ハッシュごとコピーしているので、あまりやりたくない
\%hash = $hashref[$i]
みたいなことができればいいけど、それはできない
なんとかいい方法はないものか
0409デフォルトの名無しさん
2015/09/17(木) 21:19:24.68ID:OTZMM8Pomy $h = $hashref[$i];
$h->{'key'};
まさかこれのこと・・・ではないと思うが
0410デフォルトの名無しさん
2015/09/17(木) 22:14:36.60ID:SaZ5cJAP$hashref[$i]->{key};
または
]->{ の間の -> は省略化なので単に
$hashref[$i]{key};
公式のマニュアル perlref をはじめとしていろいろなところに書いてある。
Perlはこういうところのconvenienceは考えて設計されている。
0411デフォルトの名無しさん
2015/09/17(木) 22:20:55.26ID:SaZ5cJAP$hashref[$i]->{key};
$hashref[$i]{key};
こういう書き方を「煩雑」と書いているのなら
>409のreferenceをスカラーに入れる書き方だね。
0412デフォルトの名無しさん
2015/09/17(木) 22:59:30.30ID:lPbqQua0$hash{'key'}
こういう書き方
構造体の真似事がしたくて、Cみたいに、
hash.key と書けるのが一番タイプ数が少ない
0413デフォルトの名無しさん
2015/09/17(木) 23:08:13.54ID:OTZMM8Po0414デフォルトの名無しさん
2015/09/17(木) 23:22:19.19ID:sALNH7F9タイプ数が少し増えたって
可読性には何の影響もないだろ?
重要なのは可読性であって
そんなわずかなタイプ数の違いじゃないだろ。
0415デフォルトの名無しさん
2015/09/17(木) 23:46:49.01ID:lPbqQua00416デフォルトの名無しさん
2015/09/18(金) 00:19:10.19ID:K2vhYwr70417デフォルトの名無しさん
2015/09/18(金) 11:39:03.55ID:eERM2gdUhttp://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";
0418デフォルトの名無しさん
2015/09/18(金) 19:08:20.61ID:hGzfSnPs\% じゃなくて * だよ、で済んだのに、
なんでわざわざ面倒なやり方を教えようとしたんだろう
0419デフォルトの名無しさん
2015/09/18(金) 19:16:26.89ID:7DIRmH9E一般的なやり方じゃないから。
0420デフォルトの名無しさん
2015/09/18(金) 19:26:47.22ID:hGzfSnPsperlで特にそれが忌避される理由が判らない
0421デフォルトの名無しさん
2015/09/18(金) 20:01:43.84ID:+sKaLThiで、話が終わるからじゃねーの。
更に、今となっては、for keys $r とか書ける時代になってるし。
0422デフォルトの名無しさん
2015/09/18(金) 20:04:14.91ID:K2vhYwr70423デフォルトの名無しさん
2015/09/18(金) 20:26:48.46ID:uVB9l/bg0424デフォルトの名無しさん
2015/09/18(金) 20:47:10.40ID:uVB9l/bg手元にあるのが5.20で試せなかったけど5.22なら \%hash で出来そうな記述が
0425デフォルトの名無しさん
2015/09/18(金) 21:02:14.48ID:hGzfSnPsperlの哲学として、暗黙のデリファレンスはしない、というのがあるので、
リファレンスとして扱ってる限りちょっと面倒になるのは仕方ないと思うけど、
それは別名を作ることを妨げるものでもない
0426デフォルトの名無しさん
2015/09/18(金) 21:56:27.99ID:K2vhYwr70427デフォルトの名無しさん
2015/09/19(土) 01:35:51.26ID:kuDThZXk> $hash{key} と $hash_ref->{key} にそんな耐えがたい差があるのか…
これをしないで短く書きたい。
という希望を叶えるために、
our %hash;
*hash = $hashref[$i];
これだけのコードを追加で書いてるからなw
0428デフォルトの名無しさん
2015/09/19(土) 09:23:10.69ID:34HrKgNM0429デフォルトの名無しさん
2015/09/19(土) 11:31:26.96ID:uSgpwfZqval.fst
$val{'fst'}
後者は3倍くらいタイプに時間かかる
文章の延長の感覚でタイプ出来ないんだよね
0430デフォルトの名無しさん
2015/09/19(土) 18:31:48.26ID:kuDThZXk○ $val{fst}
自分でタイプ数増やしてるんじゃねーよw
0431デフォルトの名無しさん
2015/09/20(日) 07:25:23.56ID:V0uh8XKx0432デフォルトの名無しさん
2015/09/21(月) 09:30:17.66ID:A7LfSNZR原因の一つになっているとする危惧の声が上がっている
0433デフォルトの名無しさん
2015/09/21(月) 17:48:46.77ID:I6tq2NCA0434デフォルトの名無しさん
2015/09/21(月) 17:58:14.12ID:aZYOVHiY0435デフォルトの名無しさん
2015/09/21(月) 23:46:10.70ID:AhyKUb5y0436デフォルトの名無しさん
2015/09/23(水) 01:04:24.93ID:c1Tz5tb8らくだ本なるものを貸してもらった。(押し付けられた)。
まぁ基本元々あるスクリプトを使うだけで済むらしいが、1週間の休みと引き換えに全部読んで来いだとよ。
今5日目。
言いたいことがいっぱいある。
分厚すぎる。
覚え切れるわけない。
抽象化しすぎ。多すぎる。どんだけだよ。
覚え切れない。
遅そう。これは無条件で遅いだろ。
それでも少しでも速そうな記述を書くと読みにくくなりそう。
しかもこれどう見てもプログラムじゃない。
ただの莫大な仕様を持ったアプリケーション。
コーダーにやらせとけよスクリプトは。
ああ全部CとFORTRANで書き直したい
今読んでるのがオブジェクト指向の所。
ここが一番意味わからん。
なんでこんな実装になってんだよ。
突っ込みきれないほどおかしいだろこれ。
使いたくない。
0437デフォルトの名無しさん
2015/09/23(水) 01:33:43.58ID:sohVsCxTバイナリの扱いにくさはCの100倍だし
配列の書き方のうんこっぷりはCとどっこいだが
0438デフォルトの名無しさん
2015/09/23(水) 01:48:27.48ID:G8G+Dk45Perlについての罵倒スレ 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/
0439デフォルトの名無しさん
2015/09/23(水) 09:54:46.99ID:fFX5DRXp??「早く質問しろよ」
0440デフォルトの名無しさん
2015/09/23(水) 14:26:53.78ID:RxLhKlLuしっかり文法を学びたいのですが、
「::」や、「->」「=>」と言った記号について丁寧に説明されている本か
サイトを教えていただけませんでしょうか。
0441デフォルトの名無しさん
2015/09/23(水) 15:31:44.67ID:G8G+Dk45>>3-5
0442デフォルトの名無しさん
2015/09/23(水) 15:57:35.98ID:RxLhKlLuif文やfor文、$_などと違って、
:: や -> って暗黙の了解になってません?
0443デフォルトの名無しさん
2015/09/23(水) 18:46:06.25ID:MSwfmqLKいろいろ難しいこと言うけど、要は名前空間の管理なんだよ、という
オブジェクト指向の本質そのままのインプリメント
0444デフォルトの名無しさん
2015/09/23(水) 19:55:19.53ID:rS2z7ubJやればオブジェクト指向はできる。アセンブラでもできるだろう。
だが、それでやろうとするのは、間違った考えだ。
言語の発展というのは、単純な命令を組み合わせてできたパターンから
概念を生み出し文法を定義してきた。
forだってアセンブラで見れば、比較命令とジャンプ命令があればできる。
だがそれでは使いにくいから、ループという概念を生み出して
ループのための命令を文法に追加した。そこからさらに発展して
イテレータとかまあいろいろあるわな。
話を戻すと、Perlはオブジェクト指向のための文法を入れなかった。
オブジェクト指向というパターンが存在するのに、それを文法に入れずに
人が頑張って特殊なルールを作ってやろうとしている。
ルールが少ないという意味でシンプルだろうが、
プログラミングするという意味ではシンプルではない。
0445デフォルトの名無しさん
2015/09/23(水) 19:59:37.65ID:MSwfmqLK新しく作ろうとすると設計が大変なのは、どの言語でも同じ
オブジェクト指向は全員が楽できるような夢の技術ではない
0446デフォルトの名無しさん
2015/09/23(水) 20:09:24.58ID:c1Tz5tb8んで、だから?
馬鹿しかいねぇ
0447デフォルトの名無しさん
2015/09/23(水) 20:18:56.03ID:rS2z7ubJ話が違ってる。
Perlは"言語の文法"がシンプルすぎて
"オブジェクト指向"をシンプルにやることが出来ない
ってことだよ。
シンプルっていう言葉でごまかしてるけど、
誰に対してシンプルなのかを正しく認識しないとだめ。
殆どの人はPerlという言語を作ってるわけじゃない。
言語をシンプルに使えるということが重要。
その為に実装者はシンプルな実装でやめずに、がんばれや〜
0448デフォルトの名無しさん
2015/09/23(水) 21:11:01.20ID:vTCFtDklMooseでも使ったら?
0449デフォルトの名無しさん
2015/09/23(水) 23:29:11.30ID:fFX5DRXp0450デフォルトの名無しさん
2015/09/24(木) 01:04:31.24ID:JIAkcEUy全てマニュアルに明記されている。
:: (パッケージセパレータ): http://perldoc.jp/docs/perl/perlmod.pod
-> (矢印演算子): http://perldoc.jp/docs/perl/perlop.pod#The32Arrow32Operator
0451デフォルトの名無しさん
2015/09/24(木) 05:59:43.68ID:1EmTlpBT0452デフォルトの名無しさん
2015/09/24(木) 07:19:17.15ID:BiAksuKa0453デフォルトの名無しさん
2015/09/24(木) 18:58:27.14ID:+UNTIAIN本当にありがとうございます。
僕が探していたのはこれです。
0454デフォルトの名無しさん
2015/09/24(木) 22:16:09.59ID:Z8bJCWrtそれほどでも
0455デフォルトの名無しさん
2015/09/25(金) 05:47:25.11ID:3unY/bbY0456デフォルトの名無しさん
2015/09/25(金) 08:10:23.47ID:3ZesCZUYperldocに含まれる、perlmod.pod や perlop.pod#The32Arrow32Operator の
ことだろう?
何いってんだか意味わかんない。
0457デフォルトの名無しさん
2015/09/25(金) 18:57:05.83ID:Of/BacRY「僕が探していたのはこれ」ってレスりゃ、突っ込み入るよ
0458デフォルトの名無しさん
2015/09/25(金) 19:03:03.91ID:Of/BacRY0459デフォルトの名無しさん
2015/09/25(金) 19:07:51.82ID:3ZesCZUY探していたページはこれっていっても何の不思議もないのでは?
0460デフォルトの名無しさん
2015/09/25(金) 21:05:35.04ID:QgiMtBozcmd.exeから dir /s とやってもできるけど、やたらと時間がかかる
似たようなことを再帰的にreaddir()でやっても余計に遅いので、
fork()か何かで並列にやれば速いんじゃないかと思ったけど、
実装がさっぱり判らない
0461デフォルトの名無しさん
2015/09/25(金) 22:27:34.66ID:pfLpBFTmまぁ可能な限り意訳して受け止めるとして、
先にプロセス数と割合を。(場合によっては一度検査するプログラムを走らせて定期的に記憶するなど)。
そして数と割合をそれぞれ割り当て。
Perlはその管理のみに留めて使用すること。
それでSSDにしても遅いと思うならもう限界。
0462デフォルトの名無しさん
2015/09/25(金) 23:19:37.07ID:UlZdBulHディスクアクセスに時間が掛かってるだろうから
並列に処理しても意味は無い。
0463デフォルトの名無しさん
2015/09/25(金) 23:56:47.16ID:QgiMtBozちまちまとやってて遅いと想像してる
っていうか、そんな話はどうでもいいんだよ
forkしてファイル情報持ってこさせて、それをどう集めるのか
プロセス間通信するのか
最大のプロセス数を制限したいけど、どうするのか
そのへんに詳しい人はいない?
0464デフォルトの名無しさん
2015/09/26(土) 00:00:48.43ID:o/KY4BpZ0465デフォルトの名無しさん
2015/09/26(土) 01:05:19.48ID:NLV89G9+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
0466デフォルトの名無しさん
2015/09/26(土) 17:59:20.39ID:VNbKJFfm0467デフォルトの名無しさん
2015/09/26(土) 18:19:26.06ID:SmPakz2h0468デフォルトの名無しさん
2015/09/26(土) 20:28:00.59ID:xWCYZ6+4perlでやりたいのなら、
use File::Find;
これを使うと楽
0469デフォルトの名無しさん
2015/09/27(日) 00:38:29.13ID:hWonz5kx相手がs3のようなクラウドストレージならfuse経由ではなく
REST APIを並列で叩いて高速化出来るよ。
0470デフォルトの名無しさん
2015/09/27(日) 00:43:55.39ID:MWIygilv『すぐわかる Perl』あるいは『すぐわかるオブジェクト指向 Perl』にそのもの
ずばりが書かれている。
forkの話ならPerlクックブックがよい。
誰でもいつか通る道だ。まあ、がんばりたまえ。
0471デフォルトの名無しさん
2015/09/28(月) 01:47:05.01ID:ndjcMxsVmy @files=split(/\n/,`dir /s /b *.* 2>NUL`);
見つけてうまくいきました。
0472デフォルトの名無しさん
2015/09/28(月) 21:11:57.41ID:WfjXYy6D0473デフォルトの名無しさん
2015/09/28(月) 21:49:11.62ID:Aor/5DQQシェルスクリプトを呼び出してる。
0474デフォルトの名無しさん
2015/09/28(月) 22:43:31.47ID:WfjXYy6Dよく見ると全然そんなことしてないのね。
0475デフォルトの名無しさん
2015/09/29(火) 06:00:19.37ID:lP+91DkH0476デフォルトの名無しさん
2015/09/30(水) 01:30:17.45ID:LX543PJu正規表現は皮がむけてからでも遅くはない
おれも結構、手擦ったほう
0477デフォルトの名無しさん
2015/09/30(水) 06:10:28.94ID:qavjpflMPerlの正規表現はグローバル設定やサブマッチが使いにくい
0478デフォルトの名無しさん
2015/10/04(日) 17:02:01.32ID:hS6rgTy50479デフォルトの名無しさん
2015/10/05(月) 05:48:03.83ID:iwULxFWZopen FILE, '>', "test.html";
print FILE $print;
close FILE;
`test.html`; #ファイルダブルクリックと同じ動作
このような感じでテストファイルを開いたとき、
元々 test.htmlがあった場合はうまく行くのですが、
ファイルが存在しなかった場合、開かれるのにかなりの時間がかかり、
cmd.exeからperlに制御が戻ってこなくなります。(関連プロセスは全部ゾンビになります。ファイルにロックがかかって居た場合はadministratorでも手出しが出来なくなって大変です)。
原因はなんでしょうか
0480デフォルトの名無しさん
2015/10/05(月) 08:44:17.89ID:E3yE+rIAこちらの環境(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
0481デフォルトの名無しさん
2015/10/05(月) 10:35:24.47ID:iwULxFWZopenで新規にファイルが出来た場合にcmd.exeからperlに制御が戻ってこなくなる。
もとからあったファイルをopenで開いた場合は制御が戻ってくる。
0482480
2015/10/05(月) 12:05:22.55ID:E3yE+rIA以下のようなスクリプトで 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点で、「ファイルに真っ当にアクセスできるか」は関係しても
「スクリプト中で作られたものか」は関係無い。前者がディスクキャッシュや
ネットワーク越し環境やアクセス権限によって困難なのなら、相応の対処を
呼び出し前にやるべきだ。
0483デフォルトの名無しさん
2015/10/05(月) 12:25:14.34ID:iwULxFWZwindowsの問題だと思いますが。
例えばディスクに対するキャッシュとか
0484デフォルトの名無しさん
2015/10/05(月) 12:40:26.82ID:iwULxFWZまぁ付き合ってくれてありがとう
0485デフォルトの名無しさん
2015/10/05(月) 16:05:45.00ID:qy+Vl9o/0486デフォルトの名無しさん
2015/10/06(火) 09:27:47.43ID:OYbykycgありえそうな気もするけど、
ファイルがスムーズに開けなかったからってゾンビになるcmd.exeってどうなの
しかも最終的には開けてるから処理待ちの部類でもなくcmdのバグとしか思えない
0487デフォルトの名無しさん
2015/10/06(火) 16:47:40.56ID:IvHNq8Azcmd自体は正常。
0488デフォルトの名無しさん
2015/10/06(火) 17:09:37.10ID:OYbykycg0489デフォルトの名無しさん
2015/10/06(火) 17:44:36.61ID:IvHNq8AzそもそもWindowsにゾンビという概念はない。
0490デフォルトの名無しさん
2015/10/06(火) 18:24:44.28ID:OYbykycg俺が聞いたのは情報も得てない状態で>>487を判断するに至った理由。
筋としてそちらが先にべき。
いじわるしてもしょうがないから、昨日テストした結果。
書いたところで良い回答が得られるとも思えないから一回だけね。
実行プロセスが擬似的に置換されていること。
プロセスからの入力が "ほぼ"間違いなくcmd.exe側で捨てられていること。
cmdが終了せずに入力を待っていること。
その際必要な処理は終了していること。
事実上プロセスの終了手段が関係のない外部(タスクマネージャーなど)から二つのプロセスを殺す以外の方法がないこと。
再現性は100万ループで2〜3回程度。(予想。途中で処理が止まるので正確には分からない)。ただしなるときは一発でなる。原因は不明。
言っとくけど役に立たない言葉遊びはいらないよ
0491デフォルトの名無しさん
2015/10/06(火) 18:29:22.87ID:IvHNq8Az「どうせゾンビじゃないだろw」は質問。
「cmdが終了せずに入力を待っていること」はゾンビじゃない。
ただ入力をを待っているだけ。
0492デフォルトの名無しさん
2015/10/06(火) 18:31:53.69ID:IvHNq8Azファイル読み込みがブロックされたっていうんだよ。
こういうのはNFSでよく起きる話。
ゾンビじゃない。OSにもcmdにも問題ない。
仕様通りの動作で、ブロックしているしている奴が悪い。
0493デフォルトの名無しさん
2015/10/06(火) 18:34:23.05ID:OYbykycg0494デフォルトの名無しさん
2015/10/06(火) 18:37:19.23ID:IvHNq8Az0495デフォルトの名無しさん
2015/10/06(火) 18:46:59.72ID:OYbykycgcmdに問題が起きてない根拠はなに?
他にも突っ込みどころはあるけど。
今回は情報渡さないよ。渡しても正確に読んでないからどうだって感じだけど。
0496デフォルトの名無しさん
2015/10/06(火) 18:50:19.06ID:OYbykycgあと世間ではこれは質問って言わないからね。最低限の日本語教養として。
別につっついてもメリットはないんだけど、
>cmdにも問題ない。
これが質問と言い始められても困るのでね。
0497デフォルトの名無しさん
2015/10/06(火) 19:58:13.65ID:IvHNq8AzWindowsにはゾンビプロセスという概念がないのに、
ゾンビだと言っているから。
Perlが動かなくなるのであれば、単なるPerlの問題。
0498デフォルトの名無しさん
2015/10/06(火) 20:40:10.08ID:OYbykycg俺がwindowsでゾンビと言えばcmdに問題がないことが確定するんだね。
すげぇな。
ここに何か書きたいならプログラムの基本から学んだ方がいいよ。
でないと迷惑だから。
あとこれは三回目だけど動かないのはcmd.exeであってPerlではないからね。
0499デフォルトの名無しさん
2015/10/07(水) 00:16:22.80ID:NaSjQcCl0500デフォルトの名無しさん
2015/10/07(水) 02:45:07.73ID:bi7UjXPc0501デフォルトの名無しさん
2015/10/07(水) 02:52:18.01ID:bi7UjXPcさいなら
0502デフォルトの名無しさん
2015/10/07(水) 03:15:13.18ID:A/Ws6vCF>>こなくなる。 もとからあったファイルをopenで開いた場合は制御が戻っ
>>てくる。
んで、
>>再現性は100万ループで2〜3回程度。ただしなるときは一発でなる。
...ってディスクの不良セクタが原因ではないよね?
sysopen でオープンして sysread,syswrite で1バイトづつアクセスする
のを試したかい?
0503デフォルトの名無しさん
2015/10/07(水) 04:00:55.64ID:bi7UjXPcただもうめんどうになってるから、解決できなかったらもうそれはそれでいいんだ。
それは試してないけど、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;
こんな感じで書いても結局は同じ
0504デフォルトの名無しさん
2015/10/08(木) 00:59:16.69ID:OLbkW7bGゾンビは分かる人がいないんだよ。また新しい単語覚えたら教えて。
0505デフォルトの名無しさん
2015/10/08(木) 01:11:46.37ID:OU3psdJfそれを提供している所が悪いのでは?
0506デフォルトの名無しさん
2015/10/08(木) 04:55:25.67ID:dRl2/m15んなこたない。
最初に疑いがかかるのはメモリ渡しのタイミングから。
実装した人にはPerlの関係性はあるだろう。
0507デフォルトの名無しさん
2015/10/08(木) 15:21:12.27ID:6qBtQH4V0508デフォルトの名無しさん
2015/10/08(木) 18:09:27.93ID:dRl2/m150509デフォルトの名無しさん
2015/10/08(木) 19:55:02.01ID:6qBtQH4Vまさか何かいらんもんでも入れたかな?
ちなみに全部入れた
0510デフォルトの名無しさん
2015/10/08(木) 21:03:08.58ID:dRl2/m150511デフォルトの名無しさん
2015/10/08(木) 21:55:32.02ID:V0YO39rT0512デフォルトの名無しさん
2015/10/09(金) 01:00:01.19ID:1LQDPMmM0513デフォルトの名無しさん
2015/10/09(金) 06:23:45.67ID:u+nfRRLsunix用を全バージョンいれて
windows用を全バージョン入れて
Mac用を全バージョン入れて…
みたいな?サイズ的に。(適当)
0514デフォルトの名無しさん
2015/10/09(金) 07:16:09.68ID:3gjlJhds0515デフォルトの名無しさん
2015/10/09(金) 08:03:17.40ID:Ev6MQNJn0516デフォルトの名無しさん
2015/10/09(金) 21:10:44.44ID:ZkgHYZod気持ち悪いから再インストールしてみたら80MBくらいに落ち着いた
一体何だったのか…
0517デフォルトの名無しさん
2015/10/10(土) 10:42:49.24ID:5dP181+h以後気をつけてやります…
0518デフォルトの名無しさん
2015/10/10(土) 11:16:55.74ID:oHa0fz9h0519デフォルトの名無しさん
2015/10/10(土) 13:06:07.90ID:MTAKB3YAそれに趣味で覚えたい以外に覚える理由もないし
ネイティブだったら覚えてもいいけど、Perl系覚えるのは絶対無駄にしんどい
0520デフォルトの名無しさん
2015/10/10(土) 15:00:19.19ID:tVB9B9ox0521デフォルトの名無しさん
2015/10/10(土) 18:23:30.40ID:DZMVFwsOニュースリリースでも出てた?
URL教えて。
0522デフォルトの名無しさん
2015/10/10(土) 18:43:24.10ID:syR2upNL0523デフォルトの名無しさん
2015/10/10(土) 19:03:50.58ID:d7o7LjAv0524デフォルトの名無しさん
2015/10/10(土) 19:07:27.12ID:MTAKB3YA開発者ですらそのようなこと言ってると言うか、人が読めなくても気にしなくて良いみたいなことさえ言ってた気が。
0525デフォルトの名無しさん
2015/10/10(土) 19:56:40.55ID:Vyjb9OtN長文だが
http://www.pigdog.org/auto/software_jihad/link/3138.html
あと、perl6.orgでもオッケ
0526デフォルトの名無しさん
2015/10/11(日) 14:06:11.83ID:Ql11MBBUこないだ動物本の会社に問質したら出版予定はないってさ、だからまだ早い
0527デフォルトの名無しさん
2015/10/11(日) 14:20:42.42ID:AjiKJ1b+Rakudo からも6年
本気で興味あるやつは、全体像は把握しとる。
0528デフォルトの名無しさん
2015/10/11(日) 14:22:59.10ID:7eCDMK6Q0529デフォルトの名無しさん
2015/10/11(日) 17:06:12.38ID:qoAVCBwR0530デフォルトの名無しさん
2015/10/11(日) 18:51:37.21ID:Ql11MBBU0531デフォルトの名無しさん
2015/10/13(火) 09:46:19.14ID:Itl+5XbtNAME_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をいじくるような処理は書きたくないです。
良さそうな方法がいくつか思いついたけど、私が思いついた処理よりいい方法があるような気がするので、人様の意見をうかがってから書き始めようと思います。
0532デフォルトの名無しさん
2015/10/13(火) 11:16:23.34ID:Itl+5Xbt0533デフォルトの名無しさん
2015/10/14(水) 00:10:02.01ID:CP+grbm/0534デフォルトの名無しさん
2015/10/14(水) 01:21:43.25ID:5USmhD5Y考えた上でそのやり方が適していると思うならこんな感じになるだろう。
# グループ $G の関数 $F を呼ぶ
if ( $lastgroup != $G){
group_end( $lastgroup) # もし必要なら
group_begin( $G);
$lastgroup = $G;
}
$F->(); # 実装方法によって呼び出し方は違うだろうね
要するに、どう実現するかという以前に考え方がおかしい。
「使い始める時」に初期化すればいいのであって、
別のグループのことまで考える必要は無いと思うよ。
0535デフォルトの名無しさん
2015/10/15(木) 02:51:43.95ID:Ctgvk7MFdelete @hash{grep(/^$_[0]$/,keys %hash)};
}
sub func_b {
delete @hash{grep(/^$_[0]$/,keys %hash)};
}
0536デフォルトの名無しさん
2015/10/17(土) 17:37:45.50ID:QDrnQrmxpackage My::test;
sub new(\[$@%]){
#……
}
#---------------------
My::test->new($test);
0537デフォルトの名無しさん
2015/10/17(土) 17:44:14.22ID:HgXI9gSFhttp://perldoc.jp/docs/perl/perlsub.pod#Prototypes
0538デフォルトの名無しさん
2015/10/17(土) 17:49:39.61ID:QDrnQrmxこれか
もうちょっと工夫して創って欲しかった
0539デフォルトの名無しさん
2015/10/18(日) 01:42:52.11ID:KigiPqDZ0540デフォルトの名無しさん
2015/10/18(日) 02:05:25.21ID:/3dtuYD60541デフォルトの名無しさん
2015/10/18(日) 08:43:14.38ID:xrpLizdm変数や戻値の型の名称を調べたいのですが、
VBでいう TypeName に相当する関数はありませんか?
0542デフォルトの名無しさん
2015/10/18(日) 13:30:02.16ID:/3dtuYD6my $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内部自動変換(ほぼ手出し不可)
(ほとんどの場合は数値演算子のオペランドに使えば演算子に渡される値が数値変換済みであることが保証され、文字演算子のオペランドならば…以下略。
ビット演算子やコンマ演算子などの、どうとでも取れる場合は各演算子や関数などの仕様を参照のこと。ほぼ一貫して(演算子や関数などの)値を要求する側が変換内容を決定する)。
0543デフォルトの名無しさん
2015/10/20(火) 22:36:05.91ID:1gKOYeaXまたどれくらいの文字数までkeyに使ってもいいですか?
$hash{'てすと'};
こんな感じで
0544デフォルトの名無しさん
2015/10/20(火) 22:36:56.56ID:vVqPHhnQ0545デフォルトの名無しさん
2015/10/20(火) 22:38:07.01ID:vVqPHhnQウソかホントか?
0546uy ◆e6.oHu1j.o
2015/10/21(水) 11:51:32.03ID:bkabQcdE0547デフォルトの名無しさん
2015/10/21(水) 17:48:06.04ID:Y5IiyPT4「さりげない自分自慢」かw
0548デフォルトの名無しさん
2015/10/21(水) 22:12:54.88ID:CfDtLcv10549デフォルトの名無しさん
2015/10/21(水) 23:20:04.20ID:G8ulW2Zt0550デフォルトの名無しさん
2015/10/22(木) 00:14:43.65ID:T+i/NslYPerl4前提の話をしてます。
どこでも動くスクリプトです。
0551sage
2015/10/22(木) 15:33:23.66ID:qmntQeh8メジャーどころの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も正常に動いていて、いろいろと勉強はしてみたのですが、
はまってしまいました。
原因と解決法を教えてくださいませ。
0552デフォルトの名無しさん
2015/10/22(木) 15:37:36.42ID:qmntQeh8(すみません、上がってしまいました)
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);
0553デフォルトの名無しさん
2015/10/22(木) 15:38:21.36ID:qmntQeh8148
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 }
0554デフォルトの名無しさん
2015/10/23(金) 08:27:13.62ID:uleDOfSSmy($listsuu) = @list;としてもリストの要素数は得られないけど
my $listsu = @list;とうるとリストの要素数は得られるのはどうしてですか?
カッコをつけるつけないの違いは何でしょうか?
0555デフォルトの名無しさん
2015/10/23(金) 10:42:00.30ID:PiyRQFJ3括弧を付けるとリストコンテキスト、付けないとスカラコンテキストになる。詳しくは
http://perldoc.jp/docs/perl/5.8.8/perldata.pod
辺りを読んでいただければ……
0556デフォルトの名無しさん
2015/10/23(金) 10:53:26.68ID:WlL3xp3n素直に関数を分けるか引数で指定するようにすべきだった。
= の右側が一緒でも、 =の左側で関数の動作が変わってしまう。
= ならまだわかりやすいが、関数の引数やハッシュに入れた時とか。
キーと値がずれてバグの原因になる。
0557デフォルトの名無しさん
2015/10/23(金) 11:26:52.38ID:k4LuROKH0558デフォルトの名無しさん
2015/10/23(金) 12:12:25.14ID:WlL3xp3nレスしなくていいと思うんだがねw
0559デフォルトの名無しさん
2015/10/23(金) 21:40:39.39ID:Wo6jmHxQ0560デフォルトの名無しさん
2015/10/23(金) 23:12:17.53ID:HfDhF3Ysと言うか同じなんだけどね。本当は
0561デフォルトの名無しさん
2015/10/23(金) 23:28:08.94ID:PiyRQFJ3よろしい、言い返してあげよう。
言語仕様に責任転嫁してもしようがない(ドヤァ)
0562デフォルトの名無しさん
2015/10/23(金) 23:32:34.03ID:WlL3xp3nよくない言語仕様だったって話をしてるんだが。
0563デフォルトの名無しさん
2015/10/24(土) 00:20:40.21ID:cXc3ufNPダジャレにマジレスかよ
0564デフォルトの名無しさん
2015/10/24(土) 00:26:13.63ID:oNYKYVpJそうゆうアピールをしたくて必死なわけですね
そしてかまって欲しくてたまらない的な
0565デフォルトの名無しさん
2015/10/24(土) 02:27:17.13ID:ymg0YeVe構いたくないならレスしなければいいのにw
0566デフォルトの名無しさん
2015/10/24(土) 14:02:41.06ID:/lDQ+xm1$calar = @rray は $calar = scalar(@rray) の省略形なので注意!
($calar) = @rray でリストの先頭を代入
これ、テンプレ追加で解決。
0567デフォルトの名無しさん
2015/10/24(土) 15:17:36.86ID:obIKqu8m日本語で説明している時点でだめだと思うわw
0568デフォルトの名無しさん
2015/10/25(日) 01:09:37.00ID:eAvcdeNT英語で書けるCOBOLならもうあるけど
0569デフォルトの名無しさん
2015/10/25(日) 03:16:33.90ID:vd4L6iLUコード見るだけでわかるようにする。
0570デフォルトの名無しさん
2015/10/25(日) 04:13:42.99ID:IJsK62Z70571デフォルトの名無しさん
2015/10/25(日) 21:16:54.27ID:+VcrnbUtなんかいろいろあるんだけど、
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だかを見てきたけど、なんでも自由にアクセス出来るのが売りだみたいなことを自慢げ(?)に書いてあった。
いやそれオブジェクト指向じゃねぇから。対策教えてくれ。
使用者がモジュールごとの仕様を熟知して地雷をよけながら歩くのがデフォルトかよ
0572デフォルトの名無しさん
2015/10/25(日) 21:18:06.36ID:+VcrnbUt呼び出し側で
my $instance1 = obj->new1(); #普通のインスタンス
my $instance2 = $instance1->new2(); #インスタンス1から発生するインスタンス2
みたいに書きたいんだけど、どうすりゃいいだろう?
呼び出しは出来ればこの書式をこのまま使いたい。
new2内部でクラス名を得られない。なのでblessできない。
質問その3
今の所あんま重要じゃないんだけど、
Perlのオブジェクト指向ってシンボリックリファレンスとかgotoとかと同じたぐいに見えるんだけど合ってる?
packageがラベル名やgotoと同じたぐいに感じるのだけど。
また何かあったら質問します。
よろしく
0573デフォルトの名無しさん
2015/10/25(日) 22:50:46.64ID:rvQcLuiaperlのオブジェクト指向は良くも悪くも後付けなんでそういうものだとある程度は妥協してください(カプセル化の方法もありますが一般的とは言えません)
一応Mooseなどのモジュールで補助は出来るし、実質別の言語ですがクリスマスにリリースされるperl6でかなり改善されてます
それとオブジェクト指向は哲学であってカプセル化などの機能とイコールでないと個人的に思います
・質問2への答え
意味がよくわからないけど、 ref $instance でパッケージ名を取得できます、で求めた答えになってるかな?
my $class = ref $_[0] || $_[0]; のような書き方はよくあります
・質問3への答え
よくわからないです
perlのオブジェクト指向の実装の仕方はオブジェクト指向について考える上で参考になるけど実際に書くときは標準機能の貧弱さに泣く…
まあ何にせよ慣習に頼る部分は多いけれども「いやそれオブジェクト指向じゃねぇから」というのは違うと思いますよ
0574デフォルトの名無しさん
2015/10/26(月) 14:25:17.20ID:908fhS8dgオプションの使い方の質問です。
HTMLなどの長いテキストから特定のタグの中身をまとめて取りたいのですが、
どのように使用したらよいでしょうか。
例えば、HTMLから下記のようなパターンを探して
<a href="〜〜〜">********</a>
〜〜〜 と ******** の一覧を配列で受取るか標準出力に出力するかしたいです。
0575デフォルトの名無しさん
2015/10/26(月) 17:43:39.03ID:GFinoAL6a 要素が全部その通りの表記になってるなら
while ( m%<a href=\"(.*?)\">(.*?)</a>%g ){
push( @anchor_a,[$1,$2]);
}
みたいな感じか。
その通りになっていない可能性があるなら HTML::TreeBuilder を使う方がいいと思うよ。
軽い方がいいならせめて HTML::Parser を。
0576デフォルトの名無しさん
2015/10/26(月) 18:14:25.99ID:JWNZzJ9D<A> <A></A> <A><A></A></A> </A>
0577デフォルトの名無しさん
2015/10/26(月) 20:02:31.67ID:lmfrq9M40578デフォルトの名無しさん
2015/10/26(月) 20:18:39.21ID:GFinoAL6href 以外の属性が書かれてる場合もね。
正規表現でも出来なくはないがちょっと大変だ。
だから無理せず専用のパーサを使う方がいいと思うんだ。
0579デフォルトの名無しさん
2015/10/26(月) 20:30:02.13ID:908fhS8dありがとうございました。
0580デフォルトの名無しさん
2015/10/28(水) 18:54:34.89ID:EUVQ3J2jハマってるのは{}の一致だ。
int testA(){
if (xxx==0){
a=1;
}
return 0;
}
int testB(){
return 0;
}
testAの関数を抜き出したくても、最短マッチだとifの}で終わる。
最長マッチだとtestBの}までいってしまう。
{}の個数が分かっていれば指定できるがそんなのはマチマチ。
0581デフォルトの名無しさん
2015/10/28(水) 19:04:05.51ID:KWnsoHPLPerlを投げ捨てて、
$ ctags -f - source.c
testA a.c /^int testA(){$/;" f
testB a.c /^int testB(){$/;" f
はい、終了。
0582デフォルトの名無しさん
2015/10/28(水) 19:06:46.92ID:KWnsoHPL$ ctags -x source.c
testA function 1 source.c int testA(){
testB function 8 source.c int testB(){
0583デフォルトの名無しさん
2015/10/28(水) 22:50:35.78ID:EUVQ3J2jctagsがWinでもLinuxでも見つからないからダメ元でMacで試したら入ってたわ。
このスレで油売ってるゴミ共でも役に立つことがあるんだな。
ありがとよゴミ共。
0584デフォルトの名無しさん
2015/10/28(水) 23:21:26.87ID:42E/OAJG@B=(2,4,5,6,8,9);
この二つの配列から@Aのうち@Bに含まれていない
(1,3,7,10)という配列を抽出したいのですがどうすれば
いいでしょうか?
0585デフォルトの名無しさん
2015/10/28(水) 23:27:04.70ID:42E/OAJGこういうコードだとデータの件数が多くなると異常に遅くなってしまいます
0586デフォルトの名無しさん
2015/10/29(木) 00:58:13.23ID:dmkvBav+@A - @B
0587デフォルトの名無しさん
2015/10/29(木) 01:30:36.68ID:ywbX+Z6L> ctagsがWinでもLinuxでも見つからないから
自分でインストールしろよ。WindowsはともかくLinuxならパッケージあるんだろ。
あとゴキブリのくせにうぜーよ。
0588デフォルトの名無しさん
2015/10/29(木) 01:35:10.81ID:ywbX+Z6Lそりゃそうだろうね。
@Aの配列からチェック用のハッシュを作り、そこにあるかないかを
チェックする処理を1行で書けばいいんだよ。
>>586
List::Compareとかいうモジュールがある。
0589デフォルトの名無しさん
2015/10/29(木) 02:11:24.81ID:MsWbl26gどのようにするのが一般的でしょうか?
forkはwindowsでは表面上の互換が取れるだけで無理と言うようなことが書いてありました。
0590デフォルトの名無しさん
2015/10/29(木) 09:18:01.38ID:MsWbl26g{
my $Instance = new;
# なんらかの処理
}
#ここでInstanceは消えている。
Instanceが消えるとき、自動でデストラクタを呼び出したいです。(自動だとPerlの従来どおりmyの記述を崩さず同等のため)。
と言うのは、コンストラクタは他のプロセスに対してデータ構造の同期を取っています。
これがmyのスコープを抜けたかたと言って、自分のプロセスの中でだけ勝手に消えると困ります。
myの自動処理に対して割り込むよう方法はありますか?
0591デフォルトの名無しさん
2015/10/29(木) 09:20:05.29ID:MsWbl26gオブジェクトは常にグローバルでしかないので、そのほうがで良いデザインのような気がしてきました。
0592デフォルトの名無しさん
2015/10/29(木) 13:59:54.09ID:MsWbl26g名前付きでコンストラクトして、なければ作る、すでにあればそのまま返す。
でないとインスタンスの量や構造関係が爆裂になった時に呼び出し側がスパゲティ。
回答ないからまるで独り言みたいだ。
0593デフォルトの名無しさん
2015/10/29(木) 16:49:05.20ID:+uGpQesu一行で書けますか?
my %H;
map { $Hash{$_}++ } @B;
@C = grep { ! $Hash{$_} } @A;
3行になってしまいましたorz
>>586
Ruby Pythonはそういう書き方でするんですか便利ですね
0594デフォルトの名無しさん
2015/10/29(木) 19:59:34.38ID:5rO3eYIk普通に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;
0595デフォルトの名無しさん
2015/10/29(木) 21:45:50.71ID:oKoprbCwPythonの配列(リスト)に集合演算はないよ
集合型っていうデータ型に変換すればできるけど
値の重複を許さないので厳密に言えば配列とは違う
0596デフォルトの名無しさん
2015/10/30(金) 01:10:11.48ID:sxH0vLLx別に1行じゃなくていいじゃないか
あとスライスは遅いのけ?
@h{@b} = undef; #valueが欲しいなら (1) x @b; とでも。(同じ値があれば数が合わなくなる気がするが)。
grep{ !exists $h{$_} } @a;
0597デフォルトの名無しさん
2015/10/30(金) 06:01:57.97ID:VBZUNtox誤解してる。
アレは、両方ともgrep毎に、新規に無名ハッシュ作くるからその分遅いだろう。
最後のは、stateで一回しかリファレンス作ってないから早いだろう、
って意味。
0598デフォルトの名無しさん
2015/10/31(土) 00:19:52.01ID:8+WZrGwR0599デフォルトの名無しさん
2015/10/31(土) 00:40:04.01ID:llkezMzaperldoc -f use
あるいは
http://perldoc.jp/func/use
0600デフォルトの名無しさん
2015/10/31(土) 01:26:54.45ID:8+WZrGwR0601デフォルトの名無しさん
2015/10/31(土) 09:08:36.82ID:OL8aBQAL0602デフォルトの名無しさん
2015/10/31(土) 20:46:17.25ID:llkezMzause Alpha 'Beta','Gamma';
的なことをしたいんだろうと想像したんだけど。
0603perl初心者
2015/11/06(金) 21:09:59.94ID:2g7/WV7uこれってどんな意味になるんですか?
0604603
2015/11/06(金) 21:42:18.68ID:2g7/WV7usub ReadParse っていう関数の初めにあるんですけど
local (*in) = @_ if @_;
これを
local (*in) = @_ ;
に書き換えても動作するんですけどこれってローカル変数宣言で配列を宣言してるんですよね?
でもこのif @_の意味がわからない
どなたか知ってませんか?
0605デフォルトの名無しさん
2015/11/06(金) 22:44:26.20ID:A8OcAOd1じゃないの?よく知らないけどさ
0606perl初心者
2015/11/06(金) 22:49:44.94ID:2g7/WV7ulocal (*in) = @_ ; だと送信データがnullのときエラーが起こった
local (*in) = @_ if @_; だと送信データがnullでもちゃんと動作した
なんでなの?
0607606
2015/11/06(金) 22:53:28.19ID:2g7/WV7uなんかコード終了の;をうち忘れてただけだった
やっぱlocal (*in) = @_ if @_; のいみがわからん・・・
0608デフォルトの名無しさん
2015/11/06(金) 23:03:24.07ID:6b5vFxa5パースした結果は %in,@in,$in に入れるよ。
でも、リファレンスをくれたらそこに入れるよ。
0609デフォルトの名無しさん
2015/11/06(金) 23:05:21.87ID:A8OcAOd1if True 真なら、
if False 偽なら
X = A if A;
if A then
X = A
end
もしAが真なら(Aが存在すれば)、Xに代入する。
もしAが偽なら(Aが存在しないなら)、何もしない
よく知らんけどさ
0610デフォルトの名無しさん
2015/11/07(土) 05:22:22.41ID:7PiJ/e4L問題のコードって、
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でも同様
0611606
2015/11/07(土) 10:46:18.10ID:H7agZdU4perlって同じ名前で型かえれば変数何個もつくれるんじゃないの?
0612デフォルトの名無しさん
2015/11/07(土) 11:59:27.37ID:7PiJ/e4L代入自体は成立するね。
ただし、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];
0613デフォルトの名無しさん
2015/11/07(土) 11:59:44.43ID:wmMRTXvgPerl 5 ならリファレンスも渡せる。
http://perldoc.jp/docs/perl/5.20.1/perldata.pod
を読んで勉強しなさい。
0614デフォルトの名無しさん
2015/11/07(土) 17:25:15.49ID:hsJw7ECk単なる研究ならいいけど今時cgi-lib.plの書き方は参考にすべきではないとだけ言っておく
0615606
2015/11/07(土) 20:45:37.44ID:H7agZdU4Perl 5 とも互換性ちゃんとあるんだね!
構文とか結構みてなんとなくわかってきたw
ふえた構文とかあるの?
どこかいいサイトない?
0616uy ◆Qawu9.2l1E
2015/11/07(土) 21:33:13.01ID:oj5NSdiM0617デフォルトの名無しさん
2015/11/08(日) 11:33:55.51ID:iOvet9fD0618デフォルトの名無しさん
2015/11/08(日) 17:07:37.22ID:Rsk88cb5http://perldoc.jp/
をブックマークしとけばいいと思うよ。
0619デフォルトの名無しさん
2015/11/08(日) 20:54:11.25ID:by3hLAgU呼び出し元のモジュール ***.pl ファイルと同じフォルダに、
xxx.pm ファイルを置いています。(フォルダはデスクトップにあります)
@INC に . があるので、これで
use xxx.pm すれば読み込めるはずなのに、実行すると
Can't locate xxx.pm in @INC
のエラーが出ます。
この場合、どのようにしたらよろしいでしょうか。
0620デフォルトの名無しさん
2015/11/08(日) 21:05:19.51ID:AfSZKK5wuse lib して、パスを @INCに追加するコードを ***.pl に加える
0621デフォルトの名無しさん
2015/11/08(日) 21:11:49.23ID:by3hLAgUありがとうございました。動きました。
0622デフォルトの名無しさん
2015/11/11(水) 21:58:09.59ID:IZk3uYUWってどんな意味があるのですか?
0623デフォルトの名無しさん
2015/11/11(水) 22:47:27.91ID:VZfzcqFQhttp://perldoc.jp/docs/perl/5.20.1/perlreftut.pod
http://perldoc.jp/docs/perl/5.20.1/perlref.pod
を読みなさい。
0624デフォルトの名無しさん
2015/11/12(木) 10:35:24.91ID:lxsWFQ/Wあざます
0625デフォルトの名無しさん
2015/11/12(木) 14:03:48.49ID:DhWMoO2o大学のPCにも最初から入ってたし、会社のPCにも最初から入ってたが、
何でこんなに使いにくいものを金出してまで入れてるのか意味不明
馬鹿なの?
K2EditorとかTeraPadのほうがマシだろ
まあいつまでも時代遅れのゴミにしがみついてるPerl厨は低知能のクズしかいないから秀丸エディタがおすすめだけども
0626デフォルトの名無しさん
2015/11/12(木) 14:39:07.44ID:XCvL4gE3それ以外は認めない
0627デフォルトの名無しさん
2015/11/12(木) 19:10:20.03ID:DhWMoO2oそして普通はPerlなんてゴミは使わずにPHP使うわな
色々と(悪い意味で)普通ではないPerl厨
0628デフォルトの名無しさん
2015/11/12(木) 21:26:17.51ID:IFYI+LPx0629デフォルトの名無しさん
2015/11/13(金) 00:45:40.71ID:ikUKmVnv0630デフォルトの名無しさん
2015/11/15(日) 16:06:14.57ID:fMss6NJA0631デフォルトの名無しさん
2015/11/16(月) 23:57:04.03ID:uzaWZioDlocal(*IN);
my($fh) = *IN;
open($fh,"log_file.dat");
close($fh);
というやりかたで正しいですか?
0632デフォルトの名無しさん
2015/11/17(火) 00:39:11.74ID:c7Lcp+iz0633デフォルトの名無しさん
2015/11/17(火) 00:41:00.33ID:Lol1yQT9型グロブはグローバル識別子の値の共有。
すごく古いPerlやモジュールではない限り型グロブを使ったファイルハンドルの受け渡しはしない。
目的と周辺環境がいまいちわからんけど、
古すぎる何かを使ってない限り
open my $fh, '>', $file_name;
でいきなり作れるし扱える。
INはどこから来たの?
おそらくINにグローバル共有で渡してるのが間違い。
モジュールが古すぎるなら別も物を使用する。(戻り値などでファイルハンドルを返したりできる形式の物)。
自分で作った関数なら、作り直す。(戻り値などにファイルハンドルを返したり受け取ったりする形式)
openする時に、無意味にINを作ってるだけなら、作る必要はない。 (上記の記述で、自動で「無名のグローバル識別子の実体」と「そのリファレンス(型グロブ)」と言う、謎の物が生成される。(つまりINと言う識別子名を必要としない))。
0634デフォルトの名無しさん
2015/11/17(火) 01:56:10.24ID:FRdVd2Woopen( 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");
いずれにしても必ずエラーチェックすること。
それから、この書き方では入力しかできない。入力でいいなら >>633 の真似をしてはいけない。
入力以外をしたいならマニュアルを読むこと。
ちなみに、local で作られるのはローカル化されたパッケージ変数。グローバル変数ではない。
どうも >>633 はあまり理解できていないように見受けられる。
0635デフォルトの名無しさん
2015/11/17(火) 02:52:54.08ID:FRdVd2Wo書き方に明らかな間違いは無い。IN がそこにしか現れないならちゃんと動くだろう。
しかしバグを避けたいならその書き方はやめておいた方がいい。
理由を一言で言うならパッケージ変数はダイナミックスコープを持つからだ。
0636デフォルトの名無しさん
2015/11/17(火) 02:55:17.89ID:Lol1yQT9へぇー
まぁ何も言うまい
0637デフォルトの名無しさん
2015/11/17(火) 18:51:49.72ID:Lol1yQT9最初に全部解雇。
ドラフトは最下位の選手を取ってそのまま破棄
あとは安い外国人をどんどん雇う。2000万の外人とか超掘り出し物
トライアウトも外人は全部買い占め。
でも、なんだかバグったんだよね。
0638デフォルトの名無しさん
2015/11/17(火) 21:19:27.96ID:SsP+S2010639デフォルトの名無しさん
2015/11/17(火) 22:19:10.89ID:Lol1yQT9ループの時の (3 * 2 / 6 * 5) / 3 だよ
だた最終的な順番性の保持が必要じゃないと思うけど。
なのでおそらく最低資源量の理論値が間違い
0640デフォルトの名無しさん
2015/11/25(水) 23:17:39.10ID:nppNKaNJページの有効期限切れとか出るんだけど
これが出ないようにすることはできますか?
PHPではこれが出ないやり方が書いてあったけどperlではなかったので
0641デフォルトの名無しさん
2015/11/26(木) 03:04:16.75ID:oAsmLq1R0642デフォルトの名無しさん
2015/11/26(木) 03:04:50.23ID:oAsmLq1RPHPと同じやり方すればいいにょ
0643デフォルトの名無しさん
2015/11/27(金) 00:44:55.83ID:VvUYa3rNで動作するのでクライアント側の動作はコントロールできない。
JavaScript で書いて、ドキュメントに埋め込む方法で解決するべし。
0644デフォルトの名無しさん
2015/11/27(金) 16:35:45.53ID:xA1zct9c表示がずれるんですが、printf関数だけは多バイト文字を2文字として扱うようにする
いい方法はないでしょうか?
$ perl -e 'use Encode; binmode STDOUT,":encoding(cp932)";printf"%05s\n",decode("Shift_JIS",qq/あい/)'
000あい
これを「0あい」と表示するようにしたいです
0645デフォルトの名無しさん
2015/11/27(金) 16:50:33.59ID:xA1zct9c事故レスですが、ここに答えありました
binmode(STDOUT,":bytes");
と出力をバイトモードにすればいいみたいですね
0646デフォルトの名無しさん
2015/11/27(金) 22:14:46.79ID:bQBvJ9590647デフォルトの名無しさん
2015/11/28(土) 00:57:52.83ID:5xoIDpx5use 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個
}
0648デフォルトの名無しさん
2015/11/28(土) 14:29:18.52ID:YlOdRsn5以前のcpan.uwinnipeg.ca/PPMPckagws/10xx/は使えなくなっているようです
0649デフォルトの名無しさん
2015/11/28(土) 23:34:39.74ID:UVtxAzTA今は ActiveState のリポジトリが充実してるから、
網羅的な外部リポジトリだと Bribes de Perl ぐらいしか有用な所は残っていない
http://www.bribes.org/perl/
0650デフォルトの名無しさん
2015/11/28(土) 23:42:57.28ID:fFFKFgep色々試したら、16進数に変換してから、その16進数を使えばマッチするようになったんだが
めんどくさすぎる
0651デフォルトの名無しさん
2015/11/29(日) 00:13:48.83ID:DITQRgW6デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。
さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1448404407/-13
0652デフォルトの名無しさん
2015/11/29(日) 01:13:07.59ID:3h4H/kBH何の宣伝か分からない。
カードゲームのシステムを安く作るってことか?
0653デフォルトの名無しさん
2015/11/29(日) 01:16:30.30ID:p0UOa4e5>>5
0654デフォルトの名無しさん
2015/11/29(日) 01:58:55.89ID:a1noPb1Lなんでもかんでもデコードすればいいってもんじゃないんですね
>>647
これは便利ですね!いったんデコードした文字列もdo{use bytes;}
の中ならバイト列として扱えるのですね
0655デフォルトの名無しさん
2015/11/29(日) 02:23:31.65ID:+AoBy21/CPANが網羅できてて安定してればいいんだが、そのURLが良さそうだな
サンクス
0656デフォルトの名無しさん
2015/11/29(日) 03:13:39.70ID:rf1AiNx3ちなみにwin7の64bitではperl32動いてます
0657デフォルトの名無しさん
2015/11/29(日) 11:43:31.98ID:caDIIhtW基本的な考え方はこれだけで、バイトのまま扱いたいならdecodeする意味がない
>>650の場合「『文字』にマッチさせる」ならdecodeしようぜというだけの簡単な話
0658デフォルトの名無しさん
2015/11/30(月) 01:24:27.68ID:krhCx465(?:[\x00-\x7F]|[\xC0-\xF4][\x80-\xBF]+)
こういうのを求めているのかい?
0659デフォルトの名無しさん
2015/11/30(月) 08:15:05.54ID:yyLLqUKU非電源トレーディング・カード・ゲーム(TCG)をオンライン対戦化できるソフト。
更に様々な組み合わせでカードゲームのシステムを好みにエディット可能。
0660デフォルトの名無しさん
2015/12/02(水) 08:12:04.67ID:GMHMoCLyこれはどのようにすれば良いのでしょうか。
具体的には、スコープを抜けたときの処理が自動 (イベントハンドラ?) なので、
連動して自動処理を組み込みたい場合などです。
0661デフォルトの名無しさん
2015/12/02(水) 11:52:28.44ID:bHvwVQ5s何をしたいのかさっぱり分からんが、恐らくとてもPerlらしくないコードを書いてるんだと思う。
http://search.cpan.org/~pevans/Devel-Refcount/
http://perldoc.jp/docs/perl/perlobj.pod#Destructors
0662デフォルトの名無しさん
2015/12/02(水) 12:33:56.27ID:GMHMoCLyすまんが残りの半分(ハンドラ相当の部分)も頼む
0663デフォルトの名無しさん
2015/12/02(水) 12:56:43.05ID:uQGCYyvQlocation使って未入力のデータを省いたURLを作りリダイレクトるす以外にありますか?
0664デフォルトの名無しさん
2015/12/02(水) 13:04:56.34ID:Qr4XnEb40665デフォルトの名無しさん
2015/12/02(水) 13:13:42.64ID:xfNgImPx酷い方法だな。そんなこと絶対にやらない。
0666デフォルトの名無しさん
2015/12/02(水) 13:52:48.42ID:GMHMoCLy解決法が分かって逆にPerl使うのやめようかと思うほどだったけど。
分かる人は分かるだろうからなぜかは言うまい。
0667デフォルトの名無しさん
2015/12/02(水) 14:09:54.07ID:skx8YAXhで、どうやったの?
最初の質問からはデストラクタを連想したけど
0668デフォルトの名無しさん
2015/12/02(水) 15:43:50.02ID:uQGCYyvQlocation使う方法のどこがひどいのか答えろ
じゃあ他にいい方法あるの?
0669デフォルトの名無しさん
2015/12/02(水) 16:16:30.40ID:FA69z9wLフォーム上に何が入っていても無効にしたいということなんだろう?
HTML上にキャンセルボタンを付けたいと言う意味だと思うんだけど、
違うの?
0670デフォルトの名無しさん
2015/12/02(水) 16:32:42.48ID:xfNgImPxif フォームが空なら
処理をキャンセル
これだけじゃんw
0671デフォルトの名無しさん
2015/12/02(水) 17:27:24.76ID:skx8YAXhもっと詳しく
0672デフォルトの名無しさん
2015/12/02(水) 17:59:46.21ID:uQGCYyvQ<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だけの形にしたいってことやで
0673デフォルトの名無しさん
2015/12/02(水) 18:47:39.04ID:xfNgImPxそれで、未入力のフォームを送信しない方法ですよね?
送信しちゃダメなんですよ?
0674デフォルトの名無しさん
2015/12/02(水) 18:53:06.24ID:uQGCYyvQ送信しないというよりURLに表示させないということを書きたかった
0675デフォルトの名無しさん
2015/12/02(水) 19:31:38.07ID:skx8YAXh0676デフォルトの名無しさん
2015/12/02(水) 19:50:18.63ID:G6CksgA0普通こういうのは、Form送信(Post)でする。
Getではやらない
>送信しないというより、URLに表示させない
普通はFormで(クライアント側のJavaScriptで)、
入力チェックするから、未入力項目があれば送信されない
初歩的なアプリの作り方がわかっていないのでは?
0677デフォルトの名無しさん
2015/12/02(水) 19:56:41.86ID:xfNgImPx> Getではやらない
へぇ〜検索も?(・∀・)ニヤニヤ
> 初歩的なアプリの作り方がわかっていないのでは?
クスクスw
0678676
2015/12/02(水) 20:43:48.41ID:G6CksgA0リンクとして使いたいなど
だから、そのURLが常に存在しないといけない。
誰かがアクセスしたら、そういうURLが存在しないではいけない
Formの入力欄に記入するようなものは普通、Postを使う
0679デフォルトの名無しさん
2015/12/02(水) 21:19:51.89ID:xfNgImPxへぇ〜検索も?(・∀・)ニヤニヤ
0680デフォルトの名無しさん
2015/12/02(水) 22:15:13.24ID:ReYMJI7v初心者うざいからどっか行ってくれない?
0681デフォルトの名無しさん
2015/12/02(水) 22:18:24.24ID:xfNgImPx0682デフォルトの名無しさん
2015/12/02(水) 22:32:49.85ID:ReYMJI7vキチガイ?
0683デフォルトの名無しさん
2015/12/02(水) 22:34:37.08ID:xfNgImPx> 普通って書いてるじゃん
↓
そっかー、普通かどうかが重要なところなんだなー
↓
> 検索機能が普通の機能かどうかなんてお前しか話題にしてないんだが。
ワロタwwwww
0684デフォルトの名無しさん
2015/12/02(水) 22:37:28.54ID:ReYMJI7v<input name="aaa">
<input name="bbb">
<input name="ccc">
<input type="submit" name="soushin" value="送信">
</FORM>
「こういうの」が検索に見えるか?
0685デフォルトの名無しさん
2015/12/02(水) 22:43:35.03ID:xfNgImPx0686デフォルトの名無しさん
2015/12/03(木) 00:30:55.56ID:57HAAYTYにしたらperl4でもデコード(このバイト列は文字だよと教えてあげる)、できました
0687デフォルトの名無しさん
2015/12/03(木) 13:28:03.02ID:SmbrklNs0688デフォルトの名無しさん
2015/12/03(木) 15:10:38.45ID:+xl+clky問題は解決したかい?
そんなことしなくても誰も気にしないと思うんだけどね。
Google だってそんなことしてない。
どうしてもやりたいなら止めないけど少なくとも「javascript 必須」などという不親切はしないでほしい。
0689デフォルトの名無しさん
2015/12/03(木) 15:46:18.27ID:z7gVyZ5r重要じゃないことなんだらいちいち言わなくていいよ。
「なら OR検索で」で終わる話だろ?
0690デフォルトの名無しさん
2015/12/04(金) 12:43:39.83ID:V2tRhvU9package test1;
sub aaa{}という関数があり
これをtest2.plで呼び出すにはtest1::aaa();とするんだけど
aaaという関数をtest1.plからtest3.plにあるpacage test3;に移した場合
全てのtest1::aaa()を呼び出しているところをtest3::aaa()に書き換えなければならないのがめんどくさいです
違うpakageに関数を移して上記のように書き換えなくても処理できる方法を教えてください
0691デフォルトの名無しさん
2015/12/04(金) 16:28:36.08ID:IO9RpOoWそれでもどうしてもそうしたいなら、オブジェクト指向かそれ相当の仕組みを作れば、名前に左右されるのはコンストラクタだけで済む。
メソッドについては、インスタンスが自分の所属を知っているから。
そんな理由でオブジェクト指向相当の仕組み作る人いないとは思うけど。
0692デフォルトの名無しさん
2015/12/04(金) 16:29:50.68ID:a4wJK9sNプログラミングの前にまず設計フェーズで、
画面構成を考える
画面入力 → 送信 → エラー
は、どう見てもおかしい
画面入力 → 入力チェック → 送信
送信の前に、未入力などは入力チェックではじくのが普通
一々、送信して確かめるまでもない。
もし送信エラーにでもなれば、ずっと待たないといけないし、
未入力を確かめるだけに、待つのはアホらしい
0693デフォルトの名無しさん
2015/12/04(金) 16:39:47.69ID:X5G422Yr> まずなぜ名前を変えるのか。
適切じゃなくなったからだろ。
普通は最初は小さく作って大きくなったら
それぞれの役割に分けるものだよ。
最初から大規模を考えて作ったりしない。
時間の無駄だからね。
0694デフォルトの名無しさん
2015/12/04(金) 16:48:42.73ID:IO9RpOoWそう思うなら答えてやれよ。その知識()で。
0695デフォルトの名無しさん
2015/12/04(金) 16:51:05.92ID:IO9RpOoWどっちにせよ基本デザインから癖にしたほうがいいさ
0696デフォルトの名無しさん
2015/12/04(金) 17:30:17.24ID:+8iGMfAv当人そっちのけでまだ続けるの? それは無能な奴の「普通」だ。
動作しなくても問題無いように書いて、動作させるかどうか
クライアントに選ばせるのがまともな人の「普通」だ。
0697デフォルトの名無しさん
2015/12/04(金) 17:35:53.48ID:2UHuclpm適当なところで
*test1::aaa = *test3::aaa;
これで呼び出し元を書き換えなくてもtest3:::aaa()を呼んでるのとほぼ同じ
名前で指定している以上名前に依存しているので変更する可能性があるなら名前に依存しないようにするのがいいね
最初に依存させてしまった場合面倒でも書き換えるか上記のように小手先で凌ぐしかない
0698デフォルトの名無しさん
2015/12/04(金) 17:47:14.94ID:IO9RpOoWと言うか名前を変えたいのに呼び出しの名前は変えたくないって設計自体がおかしいんだが。
俺は山田太郎だったが、今日から鈴木太郎にすることにする。
でもお前らは山田太郎と呼べ。鈴木太郎と呼ぶな。
0699デフォルトの名無しさん
2015/12/04(金) 17:55:12.54ID:X5G422Yrご結婚おめでとうございます。
0700sage
2015/12/04(金) 19:12:31.19ID:nXWHZn48# test1.pl
package test1;
use test3.pl;
sub aaa{
return test3::aaa(@_);
}
0701デフォルトの名無しさん
2015/12/04(金) 19:20:46.54ID:2UHuclpmアウト
0702デフォルトの名無しさん
2015/12/04(金) 20:02:59.28ID:M6a+qJl90703デフォルトの名無しさん
2015/12/05(土) 00:29:23.46ID:ri/S3r3P0704デフォルトの名無しさん
2015/12/06(日) 01:04:28.60ID:IvZuYvTuそれでええんやで。
怠惰であるための努力は惜しまないのはプログラマの美徳。
0705デフォルトの名無しさん
2015/12/06(日) 05:10:20.84ID:8XEspSV4呼び出し元でエラーが発生したように die みたいのを出力する仕組みがあったと思うのですが、思い出せません。
どうやるのでしょうか
0706デフォルトの名無しさん
2015/12/06(日) 05:13:24.94ID:8XEspSV40707デフォルトの名無しさん
2015/12/06(日) 10:43:20.32ID:s7gSNx8cCarp::croakでしたとか
0708デフォルトの名無しさん
2015/12/06(日) 16:05:37.79ID:LGfwZwX+APNS使おうとしてもエラーでどうにもならない
CPANとかゆうゴミをいれたくなかったが入れたらどうにかなるかと思いきやこれもエラーでまともに動かない
サーバーが汚れただけ
そして数時間試行錯誤しても動かない
こんなゴミ言語が未だに存在してることに驚き
簡単な処理しかできない、簡単な処理ならわざわざこんなゴミを使わなくてもシェルスクリプトで十分
存在価値も学ぶ価値もないゴミ
それがPerl
0709デフォルトの名無しさん
2015/12/06(日) 16:06:39.42ID:0+P86g0vperlもろくに使えない子かよ
0710デフォルトの名無しさん
2015/12/06(日) 16:09:59.84ID:tvkQIcTy0711デフォルトの名無しさん
2015/12/06(日) 16:29:49.95ID:mcZOC1Ov0712デフォルトの名無しさん
2015/12/06(日) 19:33:37.72ID:LGfwZwX+Perlはゴミすぎてどうにもならんから先方には説明して外部コマンドでPHPを実行してもらうことにするわw
本当にPerlはゴミだな
時間の無駄にしかならない
使い物にならないゴミを使えるのははっきり言ってキチガイ
Perlみたいなゴミは使えなくて当たり前、使えるのは異常者
言い換えれば
ゴキブリは食えなくて当たり前、食えるのは異常者
ゴキブリイーターパール厨wwwwwwwwwwwwwwwwww
0713デフォルトの名無しさん
2015/12/06(日) 19:37:39.05ID:LGfwZwX+オリンピックまでもつかどうかwwwwwww
0714デフォルトの名無しさん
2015/12/06(日) 19:41:27.13ID:3UcP48KhCGIに限らず、Perlはサーバー管理のいたるところで使っている。
プログラム作成時にもPerlが必要。
管理者を目指したいならマスターと使いこなせる能力がどうしても必要になる。
管理者になりたくないなら必要ないかも知れないな。
0715デフォルトの名無しさん
2015/12/06(日) 19:58:26.84ID:8XEspSV40716デフォルトの名無しさん
2015/12/07(月) 07:30:47.52ID:DL/Ny2Dm見る方法あるかな?
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
0717デフォルトの名無しさん
2015/12/07(月) 10:10:21.92ID:g2cewZx1APNSもCPANもロクに動かせないで可哀想
高校生の俺でもできるんだが?
0718デフォルトの名無しさん
2015/12/07(月) 10:11:28.47ID:g2cewZx1君にはPHPがお似合いだよ
0719デフォルトの名無しさん
2015/12/07(月) 17:56:48.21ID:WaL6xLeX「ゴキブリも食べられないなんて可哀想
高校生の俺でも食べられるんだが?」
と言ってるのと同じだということに気付かない
子供は自分の世界が全てだからそれが世間でどう見られるか分からないんだろうな
バカッターで犯罪自慢するガキとある意味同じ精神構造
0720デフォルトの名無しさん
2015/12/07(月) 22:19:18.68ID:7ldc1+VM0721デフォルトの名無しさん
2015/12/07(月) 23:18:48.88ID:sV5LLRP40722デフォルトの名無しさん
2015/12/07(月) 23:24:22.59ID:WaL6xLeXこれはもう完全にPerlがゴミだからだろう
マルチバイト文字すらまともに扱えないゴミそれがPerl
プログラム全般の腕は神クラスだからちょっとした機能追加程度ならPerlでもできるだろうと思って引き受けたのが間違いだった
Perlがゴミすぎて多少金もらったところで割に合わん
CPAN=世の中に不要=ゴキブリ
だから例えになってる
APNSゴキブリかどうか怪しいライン
文字コードすらまともに扱えないゴミ言語Perl
0723デフォルトの名無しさん
2015/12/07(月) 23:25:34.32ID:g3R3jQC/$str = substr($str,0,4);
print "str=$str";
の場合はstr=abcdですが
$str = "abcあいうえお";
$str = substr($str,0,4);
print "str=$str";
の場合だと全角文字の1バイト分を切り取ってしまうのでabc?のように文字化けしまいます
そこで全角文字の1バイト分を切り取ってしまっている判定をするにはどうしたらいいんですか?
0724デフォルトの名無しさん
2015/12/07(月) 23:30:39.77ID:7ldc1+VM正しく扱っているならば「abcあ」とちゃんと4文字分表示されるはずですが?
ソースコードをUTF8で書いて、use utf8;をファイルの頭に入れてください。
0725デフォルトの名無しさん
2015/12/07(月) 23:32:19.49ID:7ldc1+VMソースコードは必ずUTF8で書くようにしてください。
0726デフォルトの名無しさん
2015/12/08(火) 01:32:22.78ID:Vr6uKUE90727デフォルトの名無しさん
2015/12/08(火) 01:53:20.21ID:XWTC8s4uゴキブリ?
0728デフォルトの名無しさん
2015/12/08(火) 18:23:20.26ID:4zt2FdXQmy($locked) = flock(LOCK,6);
print "locked=$locked<br>";
foreach(1...10){
sleep(1);
}
close(LOCK);#ロックの解除
これを実行して別プロセスで10秒以内にこれを実行すると
あとから実行したプロセスの$lockedが1なのでロックできたことになり排他処理にならないです
理論的にはあとから実行したプロセスは前のプロセスがロック中なのでロックできないので
$lockedが0にならないとおかしいのにロックできてしまう理由を教えてください
0729デフォルトの名無しさん
2015/12/08(火) 23:31:16.80ID:MH5dvwqp実行環境ぐらい書いてくれんか。
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.
とすぐにエラー吐いて終わる。
0730デフォルトの名無しさん
2015/12/08(火) 23:41:12.77ID:4zt2FdXQ0731デフォルトの名無しさん
2015/12/09(水) 02:01:44.86ID:Rl0M6cqsまさかPerl2を使ってるんじゃないだろうね?
0732デフォルトの名無しさん
2015/12/09(水) 04:34:41.35ID:ZwktDk40文字コードの問題って?
言い方がアバウトすぎる。その言い方だと文字コードに
関する全ての問題が解決したかのようだ。
あたり前だが、どんな文字コードも扱えるってだけで
文字コードの変換は必要。
0733デフォルトの名無しさん
2015/12/09(水) 07:53:11.22ID:C7vm2jzFこっちだと後からの$lockedは0になった
win7でcygwinでperl5.14.2
0734デフォルトの名無しさん
2015/12/09(水) 08:58:01.77ID:FsDy/hTqmy($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になった
違うファイルとして実行すると結果が変わりました
これはどうしてですか?
0735デフォルトの名無しさん
2015/12/09(水) 10:15:10.84ID:RETk1FrEそれ以上は実行環境がわからんとわからん。
0736デフォルトの名無しさん
2015/12/09(水) 15:32:32.02ID:FsDy/hTqsleep(1);
my($time) = time;
print "time=$time";
}
このようにtimeを入れてプロセスを調べてみたら
プロセス1の処理中にプロセス2を実行しても
プロセス2の最初のtimeがプロセス1の一番最後のtimeより大きい値になっていたので
プロセス1と2は被らないことがわかりました。
たぶんプロセス1の処理が終わるまで待機しているんだと思う。
0737デフォルトの名無しさん
2015/12/10(木) 17:59:54.68ID:3u6QjuZwこの関数の暗号化は解読されにくいですか?
0738デフォルトの名無しさん
2015/12/10(木) 18:42:16.45ID:Ti4G586pどんな暗号化でも、暗号に使ったキーがばれれば解読されます。
0739デフォルトの名無しさん
2015/12/10(木) 18:43:53.98ID:T5ZWNGJ60740デフォルトの名無しさん
2015/12/12(土) 11:34:57.46ID:l5nWdIDH0741デフォルトの名無しさん
2015/12/15(火) 10:42:06.73ID:lk10G3Xuこれが取得できればセッションIDなんて作らなくてもいいので
0742デフォルトの名無しさん
2015/12/15(火) 11:48:54.31ID:DSeHdp2+0743デフォルトの名無しさん
2015/12/15(火) 12:34:09.93ID:xDMHhclPifconfig呼べば?
0744デフォルトの名無しさん
2015/12/15(火) 15:05:13.03ID:J0Uf6VI2Windowsなら、これでいいんじゃない?
encode と decode をちゃんとやれば。
print `net config workstation`;
0745デフォルトの名無しさん
2015/12/15(火) 15:52:58.98ID:r7pOSKDf0746デフォルトの名無しさん
2015/12/15(火) 22:15:28.25ID:ECtQrB8hmy $output = sprintf "%-*s%s", 24 - scalar @nihongo, $ko, $page;
マルチバイトの文字を抽出するのにこれよりいい正規表現はないでしょうか?
\p{InHalfwidthAndFullwidthForms}では半角カナ以外に全角英数にもマッチしてしまい
使い物になりませんでした
0747デフォルトの名無しさん
2015/12/16(水) 01:02:45.56ID:G9F0Y7Zn正規表現で日本語のひらがな・カタカナ・漢字にマッチさせるのも簡単です
0748デフォルトの名無しさん
2015/12/16(水) 02:15:49.00ID:YMTo43VLwhile(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サーバーでも試しましたが変わりませんでした。
何かこうした方がいい、というアイデアはありませんでしょうか。
宜しくお願いします。
0749デフォルトの名無しさん
2015/12/16(水) 02:26:32.04ID:G9F0Y7Znプログラムの0.1秒の遅さは、
ネット回線の遅さにうずもれるから皆、RoR を使う
ネット通信で遅いのは、気にしない方がよい
0750741
2015/12/16(水) 04:21:18.07ID:SEae+C8u他人のMACアドレスに簡単になりすませるって!
そしたらセッションIDどうやって作ればいいんですか
0751デフォルトの名無しさん
2015/12/16(水) 06:04:06.36ID:G9F0Y7Znスイッチングハブが同じLANのすべての機器に、ブロードキャストすると、
それをキャッチした各機器が、スイッチングハブにMACを伝える。
その後、各機器がスイッチングハブを通して、通信できるようになる
スイッチングハブにMACを伝える際、当然、
好きな数字を渡すこともできる
その結果、たまたま同じMACの機器が2台あると、通信できなくなるかも
0752デフォルトの名無しさん
2015/12/16(水) 08:46:08.46ID:YMTo43VLRoRもJAVAもVB他使えるor経験あるけど、Perlである必要があります
0753デフォルトの名無しさん
2015/12/16(水) 12:38:56.77ID:IT3U5Wv/apacheとperlは本当に同じ条件なの?
というかapacheの500mbpsはローカル通信じゃないの?
0754デフォルトの名無しさん
2015/12/16(水) 13:02:21.46ID:xeWyKFImなおキャッシュは無効にしているためキャッシュで速度が上がったわけではありません。
[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の問題だろうと推定中です。
0755デフォルトの名無しさん
2015/12/16(水) 22:22:12.76ID:WmK5OxGU簡単にwindow生成したり、画像を読み込んで好きな位置に表示したり、
表示物のメモリ内データをどうこうしたりとか、
クリックとかのイベントハンドラを簡単に作れた記憶があるんだ。
使い方さえ知ってればな。
見たところ、コードとかデザイン設計は丁寧に作ったと思われるくさいんだけど、
クラスの使いかたとか説明書を一切残していなかったっぽいせいで、
まじ使いかた分からん。
仕様書っぽいの大量に同封されてたけど、全部内部仕様書。外部仕様書が見当たらない。
いったいこれは何が出来て何が出来ないんだ。
そして出来ることはどうやれば出来るんだ。
まじいい加減にしろや。使いかたの分からんソフトなんていらねぇんだよ。
0756デフォルトの名無しさん
2015/12/16(水) 22:23:13.99ID:WmK5OxGUしょうがねぇからJava使うか。
0757デフォルトの名無しさん
2015/12/17(木) 01:30:00.16ID:ldEcnmm8の?それとも遅いの?遅いならPerlのソケット処理のせい。速いのなら"簡易的
なWebサーバー機能"の書き方の問題。そもそも
while(my $c=<sock>){
print $c "HTTP/1.1 200 OK/n"
は正しい?$c はソケットなの?パケットのデータなの?
0758デフォルトの名無しさん
2015/12/17(木) 09:13:09.82ID:CLoQ9apk最初の書き込みの他のPCとはタブレットだったの?
もしかしてWiFi?
そうなら400Mbpsの方が速すぎ
0759デフォルトの名無しさん
2015/12/17(木) 15:57:06.92ID:GhSUIBXPmy %array = (
apple =>
0760デフォルトの名無しさん
2015/12/17(木) 15:58:48.13ID:GhSUIBXPmy %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;としてリファレンスを入れて使おうかなと思ったので。
それとも混乱を招くからやめておくべき?
0761デフォルトの名無しさん
2015/12/17(木) 16:55:37.38ID:EBFCSaOthashにarrayと言う名前を付ける方が問題だろう
0762デフォルトの名無しさん
2015/12/17(木) 17:00:48.86ID:pKEeQlLlごめん、雰囲気だけで入力したもんで違います
$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;
}
>>758
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出てました)
0763デフォルトの名無しさん
2015/12/17(木) 17:04:29.53ID:GhSUIBXPレスthx
phpの連想配列のノリでarrayって名前を付けてました…。
0764デフォルトの名無しさん
2015/12/17(木) 17:18:18.33ID:pKEeQlLl図解するとこういう感じです
http://i.imgur.com/ZjyQFEB.png
0765デフォルトの名無しさん
2015/12/17(木) 17:38:43.47ID:tEQhDMc4http://i.imgur.com/92opkeI.png のような画面が出ますが
予めクッキーを設定する事ってPerlだとどのような関数を使うのでしょうか?
0766デフォルトの名無しさん
2015/12/17(木) 17:43:43.26ID:2TBI1XHI本当にperlレベルの問題なのか?
>>760
$var と @var と %varは全て別のものなので、そういう意味では問題ない(ややこしいが)
最初からリファレンスが欲しいなら $hash = {foo => 'bar'} のように () ではなく {} で作れる
0767デフォルトの名無しさん
2015/12/17(木) 17:45:39.52ID:pKEeQlLlそれは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
0768デフォルトの名無しさん
2015/12/17(木) 17:46:56.08ID:2TBI1XHI>予めクッキーを設定する事
どういう意味?というかクッキーの仕組み分かってる?
0769デフォルトの名無しさん
2015/12/17(木) 17:47:31.33ID:pKEeQlLl>本当にperlレベルの問題なのか?
正直なんとも。Javaで作ったところこちらは400Mbpsの速度が出ました。
なので今のところ、Apache,Java => 400Mbps , Perl => 40Mbps という感じですね。
コード自体は問題ないとは思うんですが。
0770デフォルトの名無しさん
2015/12/17(木) 21:11:03.47ID:X03/A5Pdperl製のサーバーとapacheで吐くヘッダーは同じ?
apacheではContent-LengthやTransfer-Encodingが吐かれてるけどperlでは吐かれてないとか。
後はchunk、rwinとかが怪しいかな。
perlの問題かアプリの問題かを切り分けるためにplackup等で想定の速度が出るか試した方が良いと思う。
0771デフォルトの名無しさん
2015/12/17(木) 21:28:26.04ID:E7N+Lp990772デフォルトの名無しさん
2015/12/17(木) 21:28:57.06ID:TfrmoFMM0773デフォルトの名無しさん
2015/12/18(金) 00:03:56.40ID:F3M2aD/Vパケットのダンプをとると予想外のことが分かるかも。
0774デフォルトの名無しさん
2015/12/18(金) 17:28:55.91ID:cbXr3ozqLinuxコマンド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`;
0775デフォルトの名無しさん
2015/12/18(金) 18:12:43.87ID:m1ruI8Ik直接ファイルをロックした場合
ファイルの一番最初の行にデータを追加していくようなことは不可能ですか?
0776デフォルトの名無しさん
2015/12/18(金) 18:16:27.99ID:m1ruI8Ikwhile($line=<IN>){}のように1行ずつ読み込むものとします
0777デフォルトの名無しさん
2015/12/18(金) 20:56:10.16ID:AHc8NOa/perlでコマンドと同じ動作を再現したいのかperlで外部コマンドを実行したいのかはっきりして
>>775-776
1行ずつしか読み込まないなら一時ファイルに書き出していくしかないんじゃないかな
なので安全にロックしながらやるなら「ロック用ファイルとテンポラリファイルを使」うのが最適解かと
0778デフォルトの名無しさん
2015/12/19(土) 02:05:18.10ID:akpvQEZV1行ずつではなく追加する行のバイト長ずつだが
#!/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 $!;
0779デフォルトの名無しさん
2015/12/19(土) 17:05:13.36ID:3J24i6x7system使ってみては?
>>775
多分アドバイサリロックを分かってない
ロックするとファイルアクセスできなくなると思ってるでしょ
0780デフォルトの名無しさん
2015/12/20(日) 11:26:07.63ID:kojJskyY#!/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";
0781デフォルトの名無しさん
2015/12/20(日) 11:40:35.46ID:kVJMqtKU0782デフォルトの名無しさん
2015/12/20(日) 12:22:23.21ID:mtCgH6UA0783デフォルトの名無しさん
2015/12/20(日) 13:53:14.40ID:jqjYNF9zcgi-lib.plは過去のものなので今は使ってはいけない。
今時Shift_JISはありえない。動くだろうけど
&ReadParseのように関数名に&をつけるのは古い書き方、今は使わない
HTMLとPerlをそんなの混ぜて書くやり方は良くない。
ま、全体的に古い書き方で、今そんな書き方をしたら笑われるような
ものってのが原因かな。参考にしているものが悪い。
0784デフォルトの名無しさん
2015/12/20(日) 15:21:26.74ID:THHI+nfG>今時Shift_JISはありえない。
ワロタw
日曜の昼下がりに真正のキチガイ発見w
0785デフォルトの名無しさん
2015/12/20(日) 21:46:48.88ID:kojJskyY0786デフォルトの名無しさん
2015/12/21(月) 01:47:30.14ID:Z/vHz/9Rweb serverのエラーログをチェック
0787デフォルトの名無しさん
2015/12/21(月) 03:10:05.01ID:CPIsv/NK0788デフォルトの名無しさん
2015/12/21(月) 03:13:43.45ID:6AgT1ZIG板のルール無視とか迷惑だからスレごと出ていけ。
リアルでもそうやってルール無視するからウザがられてるんだよ。
Perl厨は頭悪いし他人に迷惑かけても平気な奴しかいないから気付いてないのかもしれんが。
0789デフォルトの名無しさん
2015/12/21(月) 06:44:19.37ID:sJg48j5/まさかと思うけどPHPの人じゃないよねw
0790デフォルトの名無しさん
2015/12/21(月) 09:45:47.06ID:w2+uVVcZ>>785
500internal Server error って書いてあるじゃないか
インターネットサーバーエラーって読むんだ。分かるか?
Apacheスレかどっかに行け
0791デフォルトの名無しさん
2015/12/21(月) 09:47:32.82ID:w2+uVVcZ0792デフォルトの名無しさん
2015/12/21(月) 19:41:23.70ID:xlJCQDSbアホじゃね?Apacheスレがどこにあると思ってんだよ
0793デフォルトの名無しさん
2015/12/21(月) 19:55:50.95ID:w2+uVVcZここでそんなこと言われてもね
0794デフォルトの名無しさん
2015/12/21(月) 20:05:36.35ID:xlJCQDSbWebProgだよバカ
なんで、板違い誘導だけど、煽り入ってるレスと、
それをやんわり諫めてるレスのあとに
とんちんかんなレスをカマして胸が張れるんだよ
あともう一つ言うとWebProgには、
「Perl初心者スレ」
もある。WebProg無関係に初心者も誘導できるんだよ
今更本気で誘導しようとは思わんが、
>PerlはPerlであってHTTPサーバーにもCGIにもブラウザにもHTMLにも関係ない
こんなこと言うアホは、PHP厨よりタチが悪い。
初心者スレに行ってこい
0795デフォルトの名無しさん
2015/12/21(月) 20:09:55.91ID:w2+uVVcZ長文乙
0796デフォルトの名無しさん
2015/12/21(月) 20:15:54.29ID:xlJCQDSb自鯖でプログラムの話すんのか?
まさかと思うが、本当にズブの素人かよ
0797デフォルトの名無しさん
2015/12/21(月) 20:19:44.54ID:w2+uVVcZ何度同じこと言われれば分かるんだ?頭が弱い子なのか?
即ち邪魔だからさっさと消えろって言ってんだよ
0798デフォルトの名無しさん
2015/12/21(月) 20:22:33.05ID:NuDtbaVgおまえ、迷惑。
0799デフォルトの名無しさん
2015/12/21(月) 20:24:05.54ID:w2+uVVcZ0800デフォルトの名無しさん
2015/12/21(月) 20:30:24.24ID:NuDtbaVg>あ、急に思い出した。Apacheは自鯖板ですわ。
これで、御里が知れてるってのに、どっちが頭が弱いんだか
0801デフォルトの名無しさん
2015/12/21(月) 20:36:45.29ID:w2+uVVcZいい分けがましいことを言い続けても、板自体からしてム板内ではないものを必死でアピールするのがやっとなんだろ。
もういいから消えな
0802デフォルトの名無しさん
2015/12/22(火) 00:10:08.68ID:diOEhBX7これはWebProgっての分かるけど
>>771
これはHTTPだからWebProgって言いたいんだろうがソケット通信だからここでいいんじゃ?もう質問者居なさそうだけど
0803デフォルトの名無しさん
2015/12/22(火) 15:01:10.38ID:zJUyXx9D13行目がヒアドキュメントの始まりでした。
(*こっちに貼ったソースは投稿の都合上編集してます
0804デフォルトの名無しさん
2015/12/22(火) 17:44:39.00ID:Wi3bsd/Iコイツみたいな精神異常ギリギリのラインで正常に分類されてるキチガイ迷惑
さっさと消えろ
0805デフォルトの名無しさん
2015/12/22(火) 20:23:21.08ID:ugCyQzkf0806デフォルトの名無しさん
2015/12/22(火) 20:28:23.19ID:46TQzEc+0807デフォルトの名無しさん
2015/12/22(火) 20:44:04.42ID:Wi3bsd/I編集したソースで質問とかクズすぎる。
金払って業者に直してもらえクズ。
0808デフォルトの名無しさん
2015/12/22(火) 20:52:15.06ID:V2XYGiCZ0809デフォルトの名無しさん
2015/12/22(火) 23:04:43.53ID:mKaKHK+Q0810デフォルトの名無しさん
2015/12/22(火) 23:08:25.69ID:lJMFjOKo0811デフォルトの名無しさん
2015/12/23(水) 01:00:09.17ID:RaRt0JiM職種なら30年ほど同じなまま日本の歯車と化して使われ続けてるが
0812デフォルトの名無しさん
2015/12/23(水) 01:21:06.25ID:+daiOjD/> やるってなにを…?
2ちゃんねるをだよw
攻撃だけする人を、同じ人って言ってるだろ? 攻撃をしている人が
本当に同じ人かは知る由もないが、数年前に居た人と同じ人じゃないか?って
思うのは数年前からずっとやってるってことだろう?
まあ数年前にやって、しばらくやめていて、再開したって
場合もあるけど、そんな都合のいい話はないだろうし。
0813デフォルトの名無しさん
2015/12/23(水) 02:07:35.50ID:RaRt0JiM0814デフォルトの名無しさん
2015/12/23(水) 02:48:04.49ID:/wOBmLFiザメフォン元気?w
0815デフォルトの名無しさん
2015/12/23(水) 04:05:50.83ID:RaRt0JiM0816デフォルトの名無しさん
2015/12/23(水) 04:56:22.56ID:/wOBmLFi自己紹介乙
ここまで簡単に炙り出されるとは
0817デフォルトの名無しさん
2015/12/24(木) 12:16:14.44ID:aTU1cTcf質問者に対し、質が低く (おそらく本人は低質と思ってない) 人間性に対しての攻撃を中心に行う。
攻撃の際は敵対心むき出しな書きかたをするが、話の流れや繋がりがなく、意味が分からないケースも多い。
罵れるなら、どんな理由で罵るのか内容を選ばない。とにかく理由をつけては罵りたがる。
その場で作り出した出鱈目で質問者などを攻撃することもあり。
質問者への攻撃以外では、Perlの悪口に終始する。
プログラムの実力は皆無で、情報系の高校生より低いと思われる。(ほとんどの場合一言目からおかしいので分かる)。
ある程度は高くなった可能性があるが、新入社員が1週間で覚え切る内容を、1年経ってもほとんど出来なかったので、現在でもレベルは低いと推察される。
少なくとも、CPUやメモリを使うような知識は全くない。(アセンブラやネイティブなど)。
質問者より理解が低かったり知識や経験が少なかったりすることはザラ。
時間はかなり一般的な学生、社会人とは違う活動帯。
異様な (←うまい表現が思いつかない) 自作自演をおこなうことも多数あり。
意味の分からない単語、本当に意味不明な攻撃、脈絡のない会話の(ようなもの)、などを突如始める。
造語や嘘、虚偽の内容を作ることにためらいがない。
辻褄が合わないこと、意味がないこと、内容が無いことを書くのにためらいがない。
全ての書き込みのレベルが低く、終始特有の雰囲気とうさんくささ (出鱈目さ) や無意味さをかもし出している。
人の反応が自分の思った通りにならないと突如無差別に暴れだす。
かまって貰えないと、様々な方法で暴れだす。
荒らすこと自体がほぼ目的であるような振る舞いを取り続けることがある。(一度始まると長期に渡る)
その気になれば3スレ粘着なんて当たり前。
本気を出した場合、質問者にいち早く返信するのは必ず彼。
おそらく知能レベルはかなり低い上、精神的(性格的)にも難ありで、人を不快にさせることを当然の権利と思っている。
おそらく他人との間合いや距離が計れず、まともな会話ができない。
まぁさらにこの数年前にはもっと強烈なのが居たんだが、それを思い出しちまった。
0818デフォルトの名無しさん
2015/12/24(木) 12:40:13.40ID:ybAdxPqK0819デフォルトの名無しさん
2015/12/24(木) 13:09:28.32ID:MYEsZXgehttp://strawberryperl.com/
0820デフォルトの名無しさん
2015/12/25(金) 05:46:37.05ID:wx0vRYD+そうやって書いてれば自分が荒らしだとバレないと思ってるのか。
だとしたらかなりおめでたい。
お前頭悪そうだし、どうせブルーカラーの童貞なんだろうな。
0821デフォルトの名無しさん
2015/12/25(金) 09:16:09.78ID:OJPyRqtL0822デフォルトの名無しさん
2015/12/25(金) 13:17:59.52ID:Ug/OzCZs??「人の嫌がることを進んでやります」
0823デフォルトの名無しさん
2015/12/25(金) 14:30:21.93ID:H65SAupI「人の嫌がることを進んでやります」ってことなのかな?
0824デフォルトの名無しさん
2015/12/25(金) 18:54:41.06ID:kan7orvo0825デフォルトの名無しさん
2015/12/26(土) 07:01:51.71ID:PQT39fnHああやっぱりだったか
相手は1人だろうとは思った
すまんね、スルーしとけばよかった。本人気づいてないみたいだし
0826デフォルトの名無しさん
2015/12/26(土) 11:24:03.27ID:QraEy9L62015年12月29日 といった文字列を日付として扱い、
n日後の日付などを効率よく計算したいです。
0827デフォルトの名無しさん
2015/12/26(土) 12:40:03.97ID:PQT39fnH0828デフォルトの名無しさん
2015/12/26(土) 17:19:03.24ID:PiMfYnB0my($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);
0829デフォルトの名無しさん
2015/12/26(土) 19:10:46.98ID:h8/CI80S0830デフォルトの名無しさん
2015/12/26(土) 19:19:43.27ID:h8/CI80Suse 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日');
0831デフォルトの名無しさん
2015/12/27(日) 18:10:29.69ID:pD3iRYFSsub 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);
これでもいけました。
0832デフォルトの名無しさん
2015/12/27(日) 18:34:31.41ID:YWwZOVBb0833デフォルトの名無しさん
2015/12/30(水) 14:20:41.49ID:HIAhfYzf↑これでページのhtmlを取得するプログラムを書いたんだが
取得できるページとできないページがある
なんでだ???
0834デフォルトの名無しさん
2015/12/30(水) 21:45:20.70ID:/v1xmcd/0835デフォルトの名無しさん
2015/12/30(水) 23:35:16.26ID:Gf1fPU7Vいい感じですか
0836デフォルトの名無しさん
2016/01/02(土) 16:51:42.09ID:8QYJ/a7C0837デフォルトの名無しさん
2016/01/06(水) 00:59:12.56ID:Zgv3h2Jt($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);
月日の計算、ベタでしてた回答ってこのスレだったっけ?
0838デフォルトの名無しさん
2016/01/06(水) 07:31:37.90ID:wURx2dCr0839デフォルトの名無しさん
2016/01/06(水) 20:48:38.01ID:Df/hMGBY$y =<STDIN>;
chomp($y);
if(0<$y){{$a =$y * 2 * 3.141592654;
print $a;}
else {print 0;}
これが間違っている理由教えてもらえませんか? syntax error でelse付近が間違っているってでるのですが
何が原因かわかりません。
0840デフォルトの名無しさん
2016/01/06(水) 20:51:28.08ID:Df/hMGBY0841デフォルトの名無しさん
2016/01/07(木) 02:38:56.53ID:uRL08pKF0842デフォルトの名無しさん
2016/01/07(木) 21:17:47.55ID:gH/noaICprint "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";}
これで自分の入力した数字に対して名前を表示させたいんですが、
予期した結果が得られない。どうしてでしょうか?
0843デフォルトの名無しさん
2016/01/07(木) 21:25:00.20ID:gH/noaIC0844デフォルトの名無しさん
2016/01/07(木) 22:29:34.47ID:uRL08pKFprint "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";
}
0845デフォルトの名無しさん
2016/01/08(金) 22:13:44.02ID:0MogF7lCまた質問で申し訳ないのですが、
#!/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.で終了してしまうのですが理由はわかりますか?
(コマンドプロンプトでやっています。
0846デフォルトの名無しさん
2016/01/08(金) 22:28:27.01ID:VW69zanWmy $number +=$_
これはおかしいんじゃないかね
my は実行中に動的な新規メモリ宣言
0847デフォルトの名無しさん
2016/01/08(金) 23:15:13.88ID:Gzfc+6YMtotal関数のように返り値が欲しいならちゃんとreturnしろ
0848デフォルトの名無しさん
2016/01/09(土) 11:39:51.74ID:mFlxLm5Y0849デフォルトの名無しさん
2016/01/09(土) 11:42:42.62ID:qsis99MQ0850デフォルトの名無しさん
2016/01/09(土) 11:50:37.99ID:5qP+Va2jList::Utilのsum(もしくはsum0)を使えばいいやん
自分で作るなよ。
0851デフォルトの名無しさん
2016/01/09(土) 12:14:03.79ID:dZoBTR45sub sum{
my @array = @_;
my $sum = 0;
$sum += $_ for @array;
return $sum;
}
あなたはこのサイトの「本体」や「関数」に目を通すなどして基本文法から学んだ方が良い
ttp://perldoc.jp/
あと原因を自力である程度特定できないのが一番まずい
変数に何が入っているのか?関数は予想通りに動いているのか?まず自分で問題を小さく整理して確認しようよ
0852デフォルトの名無しさん
2016/01/09(土) 12:21:56.20ID:5qP+Va2jだから標準モジュールにあるのを再実装するなって。
0853デフォルトの名無しさん
2016/01/09(土) 12:23:32.87ID:5qP+Va2j0854デフォルトの名無しさん
2016/01/09(土) 12:32:15.06ID:koh/iwz90855デフォルトの名無しさん
2016/01/09(土) 12:37:32.60ID:qqzsfGlZsumみたいな単位でモジュールにせずに
rubyみたいに汎用的なやり方のなかで解決できるほうがいいってこと?
numbers.inject(:+)
0856デフォルトの名無しさん
2016/01/09(土) 12:59:56.14ID:5qP+Va2j標準モジュールとしてPerlに標準で付属している、
Perlの機能の一部を自分で実装するな
0857デフォルトの名無しさん
2016/01/09(土) 13:03:55.02ID:qsis99MQ0858デフォルトの名無しさん
2016/01/09(土) 13:14:54.88ID:5qP+Va2j0859デフォルトの名無しさん
2016/01/09(土) 13:45:25.82ID:koh/iwz9そのモジュールあるんだから使えよ、作るなよってのはおかしいんじゃねーのって思っただけ。
無い方がいいとまでは言わないけど「俺的」にはそんな小単位モジュール不要って話
いろんな作り方できるよってのがPerlのモットーなんだし。好きにすればいいんじゃね。
無駄に標準関数的な物が増えるのは俺はPerlっぽくないとは思うけど。
0860デフォルトの名無しさん
2016/01/09(土) 14:28:51.30ID:Xn2sBiMs基地外と言われてすぐに自分と察知できる状態もどうよ
「どうだ俺は物知りだろ、そうだろ?早くそうと言えよ」
「誰も俺に同意しない。発狂して5レスもしてしまった」
ちらしの裏にどうぞ
0861デフォルトの名無しさん
2016/01/09(土) 14:29:26.40ID:5qP+Va2jだからなんで新しくモジュール作る話してるの?
すでにモジュールが標準でPerlに付属されてるんだから
それを使えって話してる。
Perl標準モジュールを使えない(知らない)っていうのは
Perlを使えないのと同じ意味だよ。
0862デフォルトの名無しさん
2016/01/09(土) 14:37:36.99ID:Xn2sBiMs普段俺が自分で使ってるのを、例外チェックその他削って最小限にカットしまくった物。動作は遅い。
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なので仕様はかなり違うけど。(例えば数値演算専用とか)
俺もこうゆうのはあんま標準モジュール使わないかな
0863デフォルトの名無しさん
2016/01/09(土) 14:55:43.61ID:5qP+Va2j0864デフォルトの名無しさん
2016/01/09(土) 15:06:27.36ID:5qP+Va2juse List::Util qw(reduce);
my @nums = (1..10);
my $sum = reduce { $a += $b } @nums;
print $sum;
変更点
・sfaという世間で全く知られていない名前の関数はまるまる不要なので削除
・Perl以外の言語も含めて一般に知られているreduceを使う
・$_の代わりに$bにする
以上。これだけ。
0865デフォルトの名無しさん
2016/01/09(土) 15:09:15.14ID:5qP+Va2jこういうのは基礎知識なので、こういうのがあると知った上で
独自実装する必要があるか?と自分自身に問いかけるという
プロセスを省いてはいけない。
知った上で、独自実装するのならいいが、
知っていたら独自実装しなかったと思ったら負けだからねw
0866デフォルトの名無しさん
2016/01/09(土) 15:14:37.53ID:Tdn6T+zCせっかくだからつっこんでおくが
それreduceの動作を良くわかってない奴特有の勘違いなw
{ $a += $b }じゃなくて{ $a + $b }で良いんだよ
0867デフォルトの名無しさん
2016/01/09(土) 15:15:34.32ID:5qP+Va2jごめんw
それはコピペしたから間違えただけw
0868デフォルトの名無しさん
2016/01/09(土) 15:18:19.07ID:dZoBTR45車輪の再発明以前の段階なのに
0869デフォルトの名無しさん
2016/01/09(土) 15:18:58.19ID:/zf3lzOMそれを使えばいい
自分で作るな。バグが出るだけ
0870デフォルトの名無しさん
2016/01/09(土) 15:21:43.24ID:5qP+Va2j揚げ足取りで引っ張るなよw
俺がいいたいのは、これが標準モジュールであり、
Perlを知るということは、標準モジュールを知るということでもあること。
標準ではないライブラリならまだしも、標準を知らないってことは
自分で車輪の再発明をして、時間をムダにすることにしかならない。
プログラミングの技術力をつけるってことは、先人の知恵を
学ぶことでもあるんだからね。
0871デフォルトの名無しさん
2016/01/09(土) 15:27:34.64ID:dZoBTR45これはtotal関数が動きませんって言ってる人のことね
標準だからこっち使えとかそういうレベルの話じゃないでしょ
論点がずれてる
0872デフォルトの名無しさん
2016/01/09(土) 15:28:15.76ID:5qP+Va2jやっぱりそっちのことかw
俺が間違ったのは変数じゃなかったから
ちょっとおかしいと思ったんだw
0873デフォルトの名無しさん
2016/01/09(土) 15:31:18.95ID:Xn2sBiMs俺も触ったけど反省してる
0874デフォルトの名無しさん
2016/01/09(土) 15:33:40.46ID:5qP+Va2j0875デフォルトの名無しさん
2016/01/09(土) 15:58:14.08ID:xdUtZYCE0876デフォルトの名無しさん
2016/01/09(土) 16:03:41.03ID:mFlxLm5Y大変助かりました。基本から学びたいと思います。
もうひとつわからないことなのですが、
#!/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が考えたのですが、
よくわかりませんでした。教えていただけると幸いです。
0877デフォルトの名無しさん
2016/01/09(土) 17:06:32.35ID:dZoBTR45>my @upper=0;
配列を明示的に初期化するなら @array = () のように右辺をリストに
>$number=($number+$_ for @_)/$#_
後置の文は単純な場合にのみ限定すべき、こんなトリッキーな使い方しないで合計値が欲しいなら先ほどの関数を再利用しようぜ
$#array は配列の最後のインデックスだから要素の数が欲しいなら配列をスカラーコンテキストで評価する
>if(@upper=$number<$_ for @_){
ある条件で配列をフィルターしたいなら例えば grep { $_ > $average } @array のように書くのが一般的でわかりやすいと思う
0878デフォルトの名無しさん
2016/01/09(土) 17:34:13.13ID:tT8a+Ei+コード見りゃクソコードってのは多い。
地雷モジュールは、そこらで話題になってるから、
ここで紹介されたモジュールでも一回はググってから
自分の判断で使え。
と、暗にTime::Pieceを批判しとく。
0879デフォルトの名無しさん
2016/01/09(土) 18:09:49.18ID:5qP+Va2j0880デフォルトの名無しさん
2016/01/09(土) 19:23:49.33ID:fWScuht80881デフォルトの名無しさん
2016/01/09(土) 21:10:17.64ID:Xn2sBiMs0882デフォルトの名無しさん
2016/01/10(日) 08:38:57.49ID:CVYyQQ5m0883デフォルトの名無しさん
2016/01/10(日) 09:19:08.87ID:NOoJBtEZperl5は、もうバージョンアップ終了なの?
0884デフォルトの名無しさん
2016/01/10(日) 09:19:53.92ID:NOoJBtEZ0885デフォルトの名無しさん
2016/01/10(日) 09:33:49.71ID:CVYyQQ5m0886デフォルトの名無しさん
2016/01/10(日) 13:12:14.42ID:/ndDSiBm自称スーパープログラマー某
強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ
フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない
異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン
30秒ごとに口と鼻から異音
ふんっっ! ふんっっ!
備品破壊 貸与P C 破壊 他人のもの破壊
奴の作ったスクリプトとプログラムは使えない バグ製造機
電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない
0887デフォルトの名無しさん
2016/01/10(日) 17:49:06.31ID:B3HWZnWD0888デフォルトの名無しさん
2016/01/10(日) 20:08:45.05ID:mfbMaCRHモジュールがなければその場で自動インストールさせるスイッチのOnOffがあればなお良し
0889デフォルトの名無しさん
2016/01/13(水) 12:48:14.84ID:/DjkzKjX例えば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になればいいんですけど
0890デフォルトの名無しさん
2016/01/13(水) 12:56:56.57ID:/DjkzKjX$use_data_listがuse_use_listではなくuse_listです
0891デフォルトの名無しさん
2016/01/13(水) 13:49:55.40ID:/DjkzKjXif($str=~/(.*)_use_(/*)/)ではなくif($str=~/(.*)_use_(.*)/)です
0892デフォルトの名無しさん
2016/01/13(水) 15:26:24.04ID:hQopSc6Z0893デフォルトの名無しさん
2016/01/13(水) 17:48:49.60ID:wRKDQAF70894デフォルトの名無しさん
2016/01/14(木) 00:59:02.10ID:PztBbIzN0895デフォルトの名無しさん
2016/01/14(木) 18:15:10.15ID:xIeZvwhRhtaccessみたいにまとめて入れたようにするとかできないでしょうか
0896デフォルトの名無しさん
2016/01/14(木) 21:17:36.73ID:K+NWQdoJeval("use utf8; $text")
みたいなことはあるけどね。
多分、新規ファイルにエディタが
#!/usr/bin/perl
use utf8;
use strict;
みたいなテンプレートを挿入するとかそういうことをお望みですか?
0897デフォルトの名無しさん
2016/01/14(木) 22:39:28.49ID:GBHRpQtn0898デフォルトの名無しさん
2016/01/15(金) 00:23:48.33ID:9J5ucqYC新たに書くならエディタの設定などで解決する話だし、既にあるものを外から一括で解決するような類でもないかと
結局は何のために use utf8 するの?と
0899デフォルトの名無しさん
2016/01/15(金) 05:35:22.66ID:+ccYGEMjすりゃいいって話か
他のモンもあるんちゃうん?
0900デフォルトの名無しさん
2016/01/15(金) 06:56:16.80ID:pw2OtLR40901デフォルトの名無しさん
2016/01/15(金) 15:16:30.89ID:F13ndxIMそれだけで済むならラッキーだろう
0902デフォルトの名無しさん
2016/01/15(金) 18:43:08.06ID:upNVNMhN部分的にまだ文字化けが発生します。
発狂しそう
0903デフォルトの名無しさん
2016/01/15(金) 20:13:02.43ID:3J5F25K4最初っからわかってたけどなw
無駄な作業ご苦労さんwwww
use utf8の意味をちゃんと知っていれば、
サーバーの引っ越しで、それが必要になることはないのは
最初からわかってる話。
0904デフォルトの名無しさん
2016/01/15(金) 21:11:03.63ID:9J5ucqYC0905デフォルトの名無しさん
2016/01/15(金) 21:40:58.09ID:3J5F25K4設定しているレベルの人には理解できないんですよ。
もう自分でフリーCGIを設置する時代じゃない
ブログなどのウェブサービスを使う時代だ
KENTとかの時代はとっくに終わってる。
0906デフォルトの名無しさん
2016/01/15(金) 23:51:32.89ID:l565ucbK0907デフォルトの名無しさん
2016/01/15(金) 23:54:35.57ID:gi9M5Usq0908デフォルトの名無しさん
2016/01/16(土) 00:07:15.56ID:PzDjhQsr0909デフォルトの名無しさん
2016/01/16(土) 01:04:40.93ID:ZDbRl/Eo当然そうなるだろうねw
0910デフォルトの名無しさん
2016/01/16(土) 01:23:23.81ID:hqdIojtX手直しレベルの現実的な解決策はjcode.plの部分をEncodeで置き換えるといったところだろう
0911デフォルトの名無しさん
2016/01/16(土) 07:34:54.94ID:bEoGxi1MJcode.pmを多用してるのはどうすればいいんですか?
utf8フラグとかイライラします
0912デフォルトの名無しさん
2016/01/16(土) 09:15:12.79ID:JiyhPObB#もちろん、新規に書くならJcodeなんて御呼びじゃねーが
Jcode.pmのコードなら今でも動くだろ。
なんで、use utf8入れにゃあかん?
他の要因で移植失敗してるだけじゃねーのか?
0913デフォルトの名無しさん
2016/01/16(土) 09:30:15.99ID:ORxbMq6u移設したら文字化けしはじめまして、use utf8;で一部直ることはわかったのですが
まだ完全に直ったわけではなく、どうもJcode.pmも直さないといけないのかなと
0914デフォルトの名無しさん
2016/01/16(土) 13:41:29.06ID:hqdIojtX聞き方が悪すぎてアドバイスしようがないぞ
0915デフォルトの名無しさん
2016/01/16(土) 18:33:06.98ID:bEoGxi1Mテキストデータは文字化けしていません。これはフラグの問題ですか?
バイナリもUTF8です
0916デフォルトの名無しさん
2016/01/16(土) 20:07:12.55ID:hqdIojtXエンコーディングとか文字フラグのことわかってなさそうだし
0917デフォルトの名無しさん
2016/01/17(日) 00:28:41.01ID:ROqcaX3cは読みましたか?INSERT時にプレースホルダを使いましたか?
0918デフォルトの名無しさん
2016/01/17(日) 19:27:28.13ID:QAXp5FFbhttp://yomogi.2ch.net/test/read.cgi/radio/1312692319/
0919デフォルトの名無しさん
2016/01/17(日) 22:49:04.12ID:pSWLpytB>バイナリもUTF8です
文字コードがあるのはテキストのみで、
バイナリには文字コードなどない
バイナリをテキストとして読み込んではいけない。
バイナリはバイナリとして読み込む
0920デフォルトの名無しさん
2016/01/18(月) 07:25:02.12ID:9Tlb62GQあざすやってみます
0921デフォルトの名無しさん
2016/01/18(月) 10:37:19.02ID:YJeMRYLJRPGツクール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
0922デフォルトの名無しさん
2016/01/18(月) 10:38:28.99ID:YJeMRYLJデュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
デュエマ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、旧ガンダム・ウォー、ライブオン、ディメンション・ゼロ、シャーマン・キング、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書け。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストしろ。
個vs個、多数乱戦、チームvsチーム、個vsチームを実現し、P2P通信対戦プラグイン有り。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみろ。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
バトスピ、ヴァンガ、デュエマなど発売済みゲームソフトが存在してるTCGはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正 + コード記述の仕様書(設計書)を作成。
↓
機能制限した下位版を制作しても原則として発売せず + 上位版デュエリ−グ用でサーバー稼動。
↑
下位版を仮に発売した場合の改造および商用利用には、別途で当社との契約が必要。
さ〜て、インド人ベンダーと日本人の翻訳担当SEを見つけよっと!ww
http://wc2014.2ch.net/test/read.cgi/entrance2/1451262577/-16
0923デフォルトの名無しさん
2016/01/18(月) 15:55:25.01ID:2lazm5Todbiで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だと文字化けします。
0924デフォルトの名無しさん
2016/01/18(月) 16:16:10.85ID:xk2uumt0blobtxtの型定義に問題があるんじゃないの?
もしかしてbinaryだったりして
0925デフォルトの名無しさん
2016/01/18(月) 16:26:36.72ID:2lazm5Toblobなのでbinaryです。
ん〜
0926デフォルトの名無しさん
2016/01/18(月) 17:18:41.84ID:h0S1UEJK・文字化けはどういう風に確認している?
0927デフォルトの名無しさん
2016/01/18(月) 17:24:09.72ID:2lazm5To${ *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
となっております。
0928デフォルトの名無しさん
2016/01/18(月) 17:38:23.57ID:h0S1UEJKコード EUC
$blob UTF8? ← blob 文字化けする
$text 内部文字列? ← text 文字化けしない
Jcodeなどをどこで何にどういう風に使っているのかコード持ってきて
0929デフォルトの名無しさん
2016/01/18(月) 17:55:33.77ID:2lazm5Toまずはblobについてのみです。
単純に読み込んで出力しています。
0930デフォルトの名無しさん
2016/01/18(月) 18:02:42.38ID:2lazm5To0931デフォルトの名無しさん
2016/01/18(月) 18:30:08.79ID:2lazm5Toつぎの文字化けはjfoldをしてるところで文字化けしています。
これはどう直したらよいでしょうか
use utf8;
use Encode;
use Jcode;
$Swap = Jcode->new($utf8txt, 'utf8');
($Folded, $Rest) = $Swap->jfold(10);
0932デフォルトの名無しさん
2016/01/18(月) 18:32:57.26ID:2lazm5To0933デフォルトの名無しさん
2016/01/18(月) 18:35:13.54ID:2lazm5To「…」これ使ってはいけない文字でしょうか
0934デフォルトの名無しさん
2016/01/18(月) 19:21:20.54ID:2lazm5To0935デフォルトの名無しさん
2016/01/18(月) 20:04:04.72ID:9Tlb62GQutf8のフラグが付かずdecode_utf8をしないといけないというのが文字化けの原因ぽいのですが、
これ継承されることできないんでしょうか
0936デフォルトの名無しさん
2016/01/18(月) 20:45:56.31ID:h0S1UEJKそんなことはない
どこかでフラグ有りと無しをくっつけているとかJcodeを通ってフラグが剥がれていると思われる
0937デフォルトの名無しさん
2016/01/18(月) 21:53:37.85ID:RaE8va4R0938デフォルトの名無しさん
2016/01/19(火) 00:36:16.03ID:lFJIU7vI口が酸っぱくなる。
0939デフォルトの名無しさん
2016/01/19(火) 09:18:03.59ID:RZ9UlhQVそもそもなぜ文字化けしたのかの根本の理由が知りたいです
0940デフォルトの名無しさん
2016/01/19(火) 09:48:11.52ID:iNNfG/UU0941デフォルトの名無しさん
2016/01/19(火) 22:11:07.49ID:qpKC7Im2perl5.8.8+mysql-5.5.47-1.el6
perl5.10.1+mysql-5.0.95-5.el5_9
を試してみたらどう?一度に2つのものを変更したら、どっちが原因なのか分から
ないからね
0942デフォルトの名無しさん
2016/01/20(水) 01:12:34.78ID:X0JkwFymMySQLがからんでるのか?
じゃあ単なるお前の設定の問題だろ
0943デフォルトの名無しさん
2016/01/20(水) 02:17:26.63ID:NsmSPaQP0944デフォルトの名無しさん
2016/01/20(水) 07:40:38.69ID:qWryGyIXuse utf8;をつける
BLOB型がある場合は以前から文字化け対策としてSET NAMES binaryをクエリ直前に実行していた。
しかしこれをやると、CHARや全てのutf8フラグが付かなくなる。以前は何もしなくても文字化けしなかったが
これをやった後は取得したもの全てにdecode_utf8を実行するようにする。
あとJcodeの機能を使ったらdecode_utf8を実行するようにする。
あと自分のコーディングの方法では画面出力前に出力関係で使うものを一括で処理できる部分があるので
そこでフラグが外れているものがあってもいいようにdecode_utf8を実行するようにする。
とりあえずこれで今のところ文字化けは全て解消
前よりutf8フラグに対してシビアになってる気がします。
0945デフォルトの名無しさん
2016/01/20(水) 10:56:00.70ID:MFk6X+zPお前のやり方が悪いだけ
0946デフォルトの名無しさん
2016/01/21(木) 01:21:32.59ID:IBB4depX0947デフォルトの名無しさん
2016/01/28(木) 04:33:18.39ID:GDEXV+mQ中級者 ネットの情報を頼りにフラグを使って処理をする(そして罠にはまる)←イマココ
上級者 フラグを使わずにやりたいことを全部こなす
0948デフォルトの名無しさん
2016/01/28(木) 18:26:52.60ID:mFPQrw87systemで&付けて外部コマンド実行してもバックグラウンド実行にならないゴミっぷり
こういう言語は消滅すべき
0949デフォルトの名無しさん
2016/01/29(金) 08:58:48.48ID:uNLw2+tE0950デフォルトの名無しさん
2016/01/29(金) 09:36:50.36ID:G034Tjvl0951デフォルトの名無しさん
2016/01/29(金) 21:29:34.46ID:9Ge45nDkとりあえず、Perl はシェルじゃないよ。
0952デフォルトの名無しさん
2016/01/30(土) 08:08:14.69ID:Xlz0mKM6で実行ファイルが終了するまで制御戻ってこず、数時間ハマる
実験用Perlスクリプトを作成し、中でsleep(5);を実行
このスクリプトをバックグラウンドで実行できるかテスト
system("./実験用スクリプト.pl &");
5秒間制御戻ってこず
sleep(10);なら10秒制御戻ってこず
PHPで試したら一発OK
最初からPHPでやれば人生を数時間無駄にしなくても済んだ
結論:Perlはゴミ
CGIどころかコマンドラインですら使えないことが判明
追記:環境による可能性あり
検索した結果だとバックグラウンドで動作させることに見事成功した人もいるみたい
環境によって成功するかどうか分かれる可能性あり
少なくともCentOS上では使えないことが確定
0953デフォルトの名無しさん
2016/01/30(土) 08:34:20.81ID:1uFZLt6C$ perl -e 'system("sleep 5 &")'
で確かめろよ。
なんで実験用のスクリプトなんだか用意すんの?
0954デフォルトの名無しさん
2016/01/30(土) 14:21:32.41ID:mLqIkhjr0955デフォルトの名無しさん
2016/01/30(土) 23:59:02.00ID:+Pg6hfQVいつの間にかモジュールの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
0956デフォルトの名無しさん
2016/01/31(日) 02:05:33.03ID:kB7BIzkV具体的にはA4の宛名10面を印刷できるラベルシールのwordテンプレートファイルに対して、
既に用意されている宛名をperlで指定場所に挿入したいです。
htmlのように作成出来たりしないでしょうか?
宜しくお願い致します。
0957デフォルトの名無しさん
2016/01/31(日) 03:03:40.29ID:GPj4igvU色んな見た目の形式なども含んだ、独自形式のファイルでしょ?
他のアプリで、その形式を解析するのは無理だと思う。
ただし、LibreOfficeなら出来るかも
0958956
2016/01/31(日) 03:16:38.40ID:kB7BIzkVここだと作成しか載ってませんが、編集が出来るかどうか調べてみます・・・
http://codezine.jp/article/detail/1567
0959デフォルトの名無しさん
2016/01/31(日) 03:23:53.46ID:GPj4igvU「perl can't locate pm in inc」で検索!
Perlモジュールの読み込みに失敗する場合のチェックポイント
ttp://qiita.com/Cside/items/14d82883a6e9741ea0ae
デバッグできないの?
それか、HelloWorldのような、もっと単純な構成のもので、
動くかどうか試してみる
0960デフォルトの名無しさん
2016/01/31(日) 15:11:15.62ID:h5e2cEygモジュールを読み込んでも、
インスタンスを作るとundefになってしまうという現象の質問です。
0961デフォルトの名無しさん
2016/01/31(日) 16:04:52.33ID:0OoJBV50マニュアル読めよ
>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.
0962デフォルトの名無しさん
2016/01/31(日) 16:40:50.66ID:h5e2cEygありがとうございます…
下でコケてるのかorz
0963デフォルトの名無しさん
2016/02/01(月) 08:59:15.60ID:2Lopcu1uオレ、同じようなことやってるよ。
1.wordで雛形の文章作って、html形式で保存する。
2.html形式の雛形ファイルをperl でいじって、新規htmlファイルを作る。
3.新規htmlファイルをword で開く
というふうにするといい。
0964デフォルトの名無しさん
2016/02/01(月) 18:46:47.99ID:YLbRqwKbあたりまえだが、
普通にCentOSでバックグラウンドになるな。
単に、ヘボスクリプトでどっかミスってんだろ
0965デフォルトの名無しさん
2016/02/01(月) 20:59:27.95ID:rMTqXsJZperlスクリプトとかじゃないの?
phpとか言ってるし
0967デフォルトの名無しさん
2016/02/02(火) 10:41:09.52ID:BLKJLUrIまだ見てる? 問題は解決した?
そのやりかただと Perl とシェルを使うから「シェルだけ」、「Perl だけ」でやってみるといいよ。
0968池田大作・人殺しの殺人鬼!
2016/02/02(火) 14:15:22.50ID:dwq5YKX9キチガイの集まり・創価学会・公明党!
人殺しの殺人鬼が政治活動・創価学会・公明党!
池田大作・人殺しの殺人鬼・創価学会・公明党!
あやかりドチンピラの池田糞作・創価学会・公明党!
池田大作・人殺しの殺人鬼!
0969デフォルトの名無しさん
2016/02/02(火) 19:58:47.96ID:3wwqVUnZ一般ユーザーで、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が動いています。
もう他にやりようがありません。どなたか、ヒントでもおねがいします。
0970デフォルトの名無しさん
2016/02/02(火) 20:08:30.49ID:KYl+p0oOフルパスで指定している?
0971デフォルトの名無しさん
2016/02/02(火) 20:16:37.41ID:3wwqVUnZ$HOME/hogehoge/check.pl
のような感じです。このhogehogeにはPATHは通っておらず、crontab内で、
スクリプトをフルパス指定しています。他のbashスクリプトはそれでも問題
なく動いていますが。perlだと違うのでしょうか?
よろしくお願いします。
0972デフォルトの名無しさん
2016/02/02(火) 20:37:08.30ID:KYl+p0oO/home/user/・・・
って指定して試してみて
0973デフォルトの名無しさん
2016/02/02(火) 21:20:43.79ID:3wwqVUnZもともと、crontab内では、/home/User/hogehoge/check.plで指定しています。
0974デフォルトの名無しさん
2016/02/02(火) 22:12:48.39ID:KYl+p0oOcrontabとシェルでの直接実行に違いがあるとすると
後は環境変数くらいしか思いつきません。
perlスクリプト内で環境変数を参照はしているのでしょうか?
もしもしている場合は明示的に教えた方が良いかもしれません。
0975デフォルトの名無しさん
2016/02/02(火) 23:40:33.99ID:Fw307SWVスクリプトの先頭のshebangを、envじゃなくperlへのフルパスにしてみるとどう?
0976デフォルトの名無しさん
2016/02/03(水) 05:57:05.46ID:Lo86feSuなんかグダグダしてるなぁw
こういうのは最小の状態を作って実験するんだよ。
何やってるかわからんスクリプトじゃなくて、
例えば/tmp/hogeファイルを作成するだけの簡単なPerlスクリプト作って動くか確認する。
plenvも使わない。
そこからはじめて少しづつ増やしていくんだよ。
0977デフォルトの名無しさん
2016/02/03(水) 06:04:31.15ID:U8rS0pSnありがとうございます。
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すごくいいのですが、こういうところでつまずくとは。。。
0978デフォルトの名無しさん
2016/02/03(水) 06:15:10.73ID:Lo86feSuplenvの仕組みとLinuxのユーザーの考え方がわかってないだけ。
plenvがどういう仕組で動いているのかと
cronがどのユーザーの権限で動いていて、セキュリティのために
環境変数を初期化しているということを知っていれば簡単に解決できる問題。
0979デフォルトの名無しさん
2016/02/03(水) 06:15:57.05ID:Lo86feSu> ナルのperl 5.16に戻してみることにしました。
plenvの仕組みを勉強しろ。
これは全く意味が無い。
0980デフォルトの名無しさん
2016/02/03(水) 06:24:40.56ID:U8rS0pSnさっそくやってみました。
system perlが参照する先にはモジュール足りなかったのでcpanで入れて
/home/User/hogehoge/でplenv local systemを叩きこのディレクトリでは
systemなperlが起動されるようにしたところ、cron起動で動き出しました。
という事は、似たような事が、pyenvな環境でも起きる可能性あるという事
でしょうか。
あとから情報ですが、gglと、同じような事で悩んでいる方多いようです。
plenvな環境の人ばかりのようです。
いくつかログを取ってても、何もそれらしい事は書かれておらず、まいり
ました。以上です。
0981デフォルトの名無しさん
2016/02/03(水) 06:30:27.10ID:U8rS0pSn>>978
あなたは、自分以外の人間も、自分と同じ力量であるという前提で
書かれていませんか?
相手をこきおろして、批判して、楽しいのでしょうか。スレの雰囲気が
悪くなるだけです。
0982デフォルトの名無しさん
2016/02/03(水) 08:03:15.02ID:/0P6zwpRスクリプト先頭を
#!/bin/sh
として
コマンドやファイルを
全てフルパスで指定してどうなる?
0983デフォルトの名無しさん
2016/02/03(水) 15:27:57.49ID:lxST4PlEどこか問題ある?
my $time = time;
my $rand = int(rand(10000000));
my $pro_id = $$;
my $session_id = $time.$rand.$pro_id;
0984デフォルトの名無しさん
2016/02/03(水) 17:26:14.79ID:UKSoJdac力量が下だと自覚したのなら、
力量を上げればいいだけだろう?
0985デフォルトの名無しさん
2016/02/03(水) 17:29:12.54ID:UKSoJdac> という事は、似たような事が、pyenvな環境でも起きる可能性あるという事
> でしょうか。
お前は、すべてを覚える気か?
理由もわからずに、pyenv環境では〜という謎なことが起きる。でいつも終わってるだろ?
原因を調べずに、いろんな発生する問題を覚えようとしている。
効率が悪すぎる。
まず仕組みを調べろって。そうすれば何故そうなるのかがわかるだろ。
お前がやろうとしているのは仕組みを知らないで、結果だけをしろうとしている行為だ。
0986デフォルトの名無しさん
2016/02/04(木) 01:01:28.90ID:WWqaejBP……と、つっこみそこねた。いや、>>952 に対してだけどね。
0987デフォルトの名無しさん
2016/02/04(木) 02:02:24.55ID:w2AdpGYgcronにはユーザの環境変数が引き継がれないため、
設定する必要がある
/etc/crontabと/etc/cron.d設定ファイルの書き方
ttp://www.server-memo.net/tips/etc-crontab.html
cronの環境変数は特殊だから、皆cronではまる
「cron 環境変数」で検索!
Linux板で聞いた方がよいかも。
もっと、HelloWorldとか、単純なものから始めること
レス数が950を超えています。1000を超えると書き込みができなくなります。