トップページ⇒tech
1001コメント290KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2012/03/02(金) 14:30:16.30
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )

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

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

http://www.perl.org/get.html
Download Latest Stable Source (5.14.2)

▼ 前スレ
Perlについての質問箱 50箱目
http://toro.2ch.net/test/read.cgi/tech/1326823096/
リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4
0002デフォルトの名無しさん2012/03/02(金) 14:34:28.20
[プログラミング自体の経験が無い奴はまずココを読め]
Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.amazon.co.jp/Effective-ASCII-Addison-Wesley-Programming/dp/4756130577
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/

[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perldoc.jp: ttp://perldoc.jp/
perldoc.perl.org: ttp://perldoc.perl.org/
0003デフォルトの名無しさん2012/03/02(金) 14:35:56.85
[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/

[テクニック]
Perl メモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perl のページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perl の小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm

[Perl 5.8 Unicodeメモ]
ttp://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん2012/03/02(金) 14:36:29.88
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。
0005デフォルトの名無しさん2012/03/02(金) 14:37:29.65
Encodeモジュール (現在のPerl文字コードの標準)
http://search.cpan.org/dist/Encode/

UNICODEでわからなくなったらここを読め
http://perldoc.jp/docs/perl/5.8.1/utf8.pod
http://perldoc.jp/docs/perl/5.10.0/perlunifaq.pod
0006前スレ9812012/03/02(金) 17:33:26.84
前スレで右寄せリスト代入をするための方法を募集したものです。

# やりたいこと
my ($sensen, $sensyu, $konsyu);
($sensen, $sensyu, $konsyu) = @ARGV if (@ARGV == 3);
($sensyu, $konsyu) = @ARGV if (@ARGV == 2);

unshift @ARGV, undef if (@ARGV == 2);
my ($sensen, $sensyu, $konsyu) = @ARGV; # 自分

my ($konsyu, $sensyu, $sensen) = reverse @ARGV; # 984さん
my ($sensen, $sensyu, $konsyu) = @ARGV[-3, -2, -1]; # 985さん

リバースの方法はカッコイイですね!思いつきませんでした。
変数の宣言順とコマンドライン引数の順が変わるのが少し気になりましたが。
添字にマイナスを指定するというのも直接的に右寄せする感じが面白いですね。
皆さんレス有難うございました。
0007デフォルトの名無しさん2012/03/02(金) 18:05:12.40
my$i=0,$_=$ARGV[--$i]for reverse my($sensen, $sensyu, $konsyu);
0008デフォルトの名無しさん2012/03/02(金) 18:11:37.69
もっと読みにくくしろや
0009デフォルトの名無しさん2012/03/02(金) 18:30:58.70
> 変数の宣言順とコマンドライン引数の順が変わるのが少し気になりましたが

そもそもの仕様が、必須項目は左に、省略可能なものは右にっていうコマンドライン引数の大原則を外れてることのほうを気にしろよ
0010デフォルトの名無しさん2012/03/02(金) 19:05:00.51
いやまあどっちの原則を重視するのかはちょっと気になってた
Perl寄りなら必須項目を左に寄せる原則重視だけど
右寄せ重視で書きたい場合もあるのかなと
(たいてい左小右大で書かれる数直線的な感じで書きたいとか)
0011102012/03/02(金) 19:06:30.47
あっと他の誰かと勘違いされかねない書き方してるな俺
この話題で書き込むのは>>10が初めて
0012デフォルトの名無しさん2012/03/02(金) 19:31:41.58
コマンドラインって基本英語の命令の文法だから
それを理解してるかどうかよくわかるw
0013デフォルトの名無しさん2012/03/02(金) 20:15:05.01
マジかよ、20年以上オプションが前で、ファイルが後ぐらいの感覚しかなかったぜ。
0014デフォルトの名無しさん2012/03/02(金) 20:57:46.17
コンパイラ言語で自作するのがいいね
0015デフォルトの名無しさん2012/03/03(土) 20:00:45.51
perlでCSVを取り扱う時の一番楽そうなライブラリは何ですか

"でそれぞれの要素が括られていて、中にコンマが入っていてもok、みたいなパターンの
取り扱いに3秒で挫折したので、いい感じにsplitしてくれるだけでいいんだけど
0016デフォルトの名無しさん2012/03/03(土) 20:08:11.25
>>15
まず聞く前に検索したら?マジで。
0017デフォルトの名無しさん2012/03/03(土) 20:09:17.73
>>15
Text::CSV
Text::CSV_XS
のどっちかだね
0018デフォルトの名無しさん2012/03/03(土) 20:22:50.81
まあ、その二つしか見つからなかったんだけど、
splitと置き換えるには結構面倒で

installしないといけない、->newして->parseして->fieldsしないといけない、
unicodeで渡さないといけない、とかいろいろ

きっちりしといた方が後々楽なんだろうけど、
splitと書いた所を、split_csvと書き換えるだけで全部面倒みてくれるような
sub split_csv があったら、そっちの方が好きなんだよな
0019デフォルトの名無しさん2012/03/03(土) 20:28:39.52
>>18
さすがにそれは自分で書きなよ
モジュールで提供してくれるのが一番だけど
0020デフォルトの名無しさん2012/03/03(土) 20:33:22.07
何ていうのかな
楽をしようと思ってライブラリを頼ったのに、楽できない的な
CSVくらいなら簡単だからいいんだけど、なんか大規模な作品にぶつかったりして
まず勉強から入らないといけない

結果的に出来上がるコードはシンプルなんだけど、
単に大部分のオプションがデフォルトでいいと判ったからシンプルになってるだけで、
背景に膨大な知識が要る、みたいな
0021デフォルトの名無しさん2012/03/03(土) 20:33:56.66
> installしないといけない
もうPythonでも使ってろよと
0022デフォルトの名無しさん2012/03/03(土) 20:35:49.77
>>20
ツイッターでやれ
0023デフォルトの名無しさん2012/03/03(土) 21:06:03.91
>>2
Effective Perlはperl4の時代の本だよね
これのperl5バージョンみたいなの無いの
0024デフォルトの名無しさん2012/03/03(土) 21:55:22.04
>>23
Perl5の時代の本です。
0025デフォルトの名無しさん2012/03/03(土) 23:46:52.88
あ、ほんとだ
普通に4の本だと思って読んでた
0026デフォルトの名無しさん2012/03/04(日) 00:06:47.26
>>20
そんな君には詳説正規表現がおぬぬめ。
楽をしたいなら購入するがいい。
0027デフォルトの名無しさん2012/03/04(日) 03:50:08.60
>>20

↑
何このゴミ
何で2chをブログ代わりに使ってるの?
0028デフォルトの名無しさん2012/03/04(日) 10:49:56.72
>>27

↑
何このゴミ
何で2chをブログ代わりに使ってるの?
0029デフォルトの名無しさん2012/03/04(日) 11:43:27.43
今日は何故か下痢が酷かった
昨日食べたかっぱ寿司か、ワインか、つまみの鶏肉のどれかが怪しい

鶏肉は同じもの昨日も食ったから急に悪くなるとは考えにくいし、
ワインはそんな腐るようなものでもないから、やはり寿司か
0030デフォルトの名無しさん2012/03/04(日) 13:05:33.36
>>28

↑
オウム返ししたいだけで
わざわざレス消費するこういうゴミって必ずいるよね
0031デフォルトの名無しさん2012/03/04(日) 14:11:30.69
膨大な桁数の計算をする時にはどういう感じでやればいいですか?
3.987......e+47みたいになるので、
それの回避方法です。
いいアルゴリズムないですか?

0032デフォルトの名無しさん2012/03/04(日) 14:17:57.69
>>31
http://www.google.co.jp/search?client=ubuntu&channel=fs&q=perl+%E8%A8%88%E7%AE%97+%E6%A1%81&ie=utf-8&oe=utf-8&hl=ja
0033312012/03/04(日) 14:50:58.20
>>32
アルゴリズムの書いてあるページ貼れやゴミ
0034デフォルトの名無しさん2012/03/04(日) 14:51:33.30
>>32
超サンキュウです。
0035デフォルトの名無しさん2012/03/04(日) 15:03:10.21
>>33
自分で探せよハゲ
ttp://bossdonreader.naganoblog.jp/e870763.html
0036デフォルトの名無しさん2012/03/04(日) 16:26:08.36
>>30

↑
オウム返ししたいだけで
わざわざレス消費するこういうゴミって必ずいるよね
0037デフォルトの名無しさん2012/03/04(日) 16:52:08.90
本当にオウム返しきたw
頭悪そうw
まさにゴミwww
0038デフォルトの名無しさん2012/03/04(日) 20:02:40.09
馬鹿には無理
0039デフォルトの名無しさん2012/03/06(火) 01:52:18.29
クソスレ
0040デフォルトの名無しさん2012/03/06(火) 01:52:35.45
馬鹿には馬鹿
0041デフォルトの名無しさん2012/03/06(火) 05:14:48.30
うるさいゴミ
0042デフォルトの名無しさん2012/03/06(火) 16:05:48.69
バーカ
0043デフォルトの名無しさん2012/03/06(火) 16:06:42.71
>>33
しね
0044デフォルトの名無しさん2012/03/06(火) 18:11:49.23
生きる!
0045デフォルトの名無しさん2012/03/06(火) 18:57:42.01
↑
ゴミ
0046デフォルトの名無しさん2012/03/06(火) 20:22:36.52
またどうしようもないカスが貼りついてんのか
0047デフォルトの名無しさん2012/03/06(火) 22:14:15.40
>>46=どうしようもないカス
0048デフォルトの名無しさん2012/03/06(火) 22:28:48.33
失せろよ池沼
0049デフォルトの名無しさん2012/03/07(水) 02:46:48.98
>>46
よう、カス
0050デフォルトの名無しさん2012/03/07(水) 03:05:21.22
頭の悪いヴァカが住み着いてるな
0051デフォルトの名無しさん2012/03/07(水) 12:06:33.78
ケツ毛の処理方法を教えてください
0052デフォルトの名無しさん2012/03/07(水) 14:12:39.71
うるさいゴミ
0053デフォルトの名無しさん2012/03/07(水) 17:35:17.78
chompはマルチコアに対応していますか?
0054デフォルトの名無しさん2012/03/07(水) 20:19:56.54
モンゴリアンchomp
0055デフォルトの名無しさん2012/03/07(水) 20:23:18.35
カトchomp

にしてもラクダ新版が出たというのにこの荒れっぷりは
0056デフォルトの名無しさん2012/03/07(水) 20:42:58.11
「P」と「H」の両方を含む言語は大抵ゴミ

例)
PHP
HSP
Python
0057デフォルトの名無しさん2012/03/07(水) 21:08:45.67
>>56
Pythonいいんじゃないの?
HSPは、どうかしらんけど。
PHPはキャラかぶってる。
0058デフォルトの名無しさん2012/03/08(木) 00:12:04.62
Net::Nslookupでダウンしたサーバーに
nslookupすると固まるのですが
どうやってタイムアウトさせるのでしょうか?
サーバーがダウンしてるか確認したいのですが
0059デフォルトの名無しさん2012/03/08(木) 00:27:02.86
systemでping
0060デフォルトの名無しさん2012/03/08(木) 00:30:23.36
1人雇った
0061デフォルトの名無しさん2012/03/08(木) 00:58:36.40
ソース読むと$TIMEOUTって変数があるから、適当に設定しとけばいいんじゃないの。
Windows以外なら動作するように見える。
0062デフォルトの名無しさん2012/03/08(木) 00:59:25.73
何入れても1分も待たされる
ソースに書いてもダメみたい
0063デフォルトの名無しさん2012/03/08(木) 01:04:39.63
マジで馬鹿しかいない
0064612012/03/08(木) 01:40:39.28
>>62
デフォルトで15秒だから、他に何か問題があるんじゃないの?
試してみたらちゃんと動作したし。
0065デフォルトの名無しさん2012/03/08(木) 01:51:11.95
つまりWindowsでは、この方法は無理なのか
0066デフォルトの名無しさん2012/03/08(木) 07:10:05.69
バッチファイルとリダイレクトさいこう
巣に帰りました
0067デフォルトの名無しさん2012/03/08(木) 15:19:59.97
クズだな
0068デフォルトの名無しさん2012/03/08(木) 15:42:45.77
Programming Perlの新しいのが出るらしいけどお前たちは買いますか?
http://www.amazon.co.jp/dp/0596004923/
0069デフォルトの名無しさん2012/03/08(木) 15:45:28.75
日本版じゃねーじゃん
0070デフォルトの名無しさん2012/03/08(木) 16:03:34.06
sub read_file1 { local $/ = ""; <$_[0]>}
sub read_file2 { local $/ = ""; my $fh = $_[0]; <$fh>}

print read_file1("test.txt"); # ->GLOB(0x10063af0)と出力される
print read_file2("test.txt"); # ->ファイル全体が正常に出力される

なぜ1の方法ではうまくいかないのでしょうか?
0071デフォルトの名無しさん2012/03/08(木) 16:06:27.75
すみませんコード部下二行、間違えていました。訂正です。
open my $fh, "<", "test.txt";
print read_file1($fh);
print read_file2($fh);
0072デフォルトの名無しさん2012/03/08(木) 16:34:13.01
>>71
perlopに書いてある

山括弧の中の文字列がファイルハンドルでもファイルハンドル名、型グロブ、 型グロブリファレンスの
いずれかが入った単純スカラ変数でもなければ、 グロブを行なうファイル名のパターンと解釈され、
コンテキストによって ファイル名のリストか、そのリストの次のファイル名が返されます。 この区別は
単に構文的に行われます。 <$x> は常に間接ハンドルから readline() しますが、 <$hash{key}> は常に
glob() します。 $x は単純スカラー変数ですが、$hash{key} は違う(ハッシュ要素)からです。
<$x > (余分な空白に注意) ですら readline($x) ではなく glob("$x ") として扱われます。
0073712012/03/08(木) 17:03:05.36
>>72
レスありがとうございます。
あぁ、ラクダ本で何かそういった記述を呼んだ記憶があります。たしかこんな文面の、
行入力演算子<>の中に変数以外のものを置くと突然変異して別の演算子になる。:グロブ演算子

配列の要素も置けなかったとは読み解けませんでした。
$_[0]はグロブすべきファイル名パターンとして解釈されたのですね。
少し紛らわしいと思います。
代替法としては・・
<$foo>をブログとして解釈させるために<${foo}>とすることができるようですが
その逆、<$_[0]>をブログではなく行入力として解釈させることは出来ないようです。
>>71のように一度別の容器に入れるしかないのでしょうか。
0074デフォルトの名無しさん2012/03/08(木) 17:07:44.21
ブログ?
0075デフォルトの名無しさん2012/03/08(木) 17:16:17.47
>>73
readline使えばいいと思うよ
0076712012/03/08(木) 17:23:37.36
>>74 ブログでした・・・

>>75
なるほど!ばかですね私ってw
うまく動きました。ありがとうございます。

~/work $ perl test.pl

sub read_file1 { local $/ = ""; readline($_[0])}
sub read_file2 { local $/ = ""; my $fh = $_[0]; <$fh>}

open my $fh, "<", "$0";
print read_file1($fh);
#print read_file2($fh);
__END__
0077デフォルトの名無しさん2012/03/08(木) 17:56:17.05
ファイルロックについていろいろ試したけど

ロックをしないで
ファイルを読み込み中に書き込みするとデータが壊れる
書き込み中に読み込みしても壊れるが
読み込み中に読み込みしても壊れないということがわかった
これらを考慮してファイル読み込み中は書き込みのみロック
ファイル書き込み中は読み込みと書き込みの両方ロックするのが一番いいのである。
0078デフォルトの名無しさん2012/03/08(木) 17:59:29.00
何十年前の話題だよ
0079デフォルトの名無しさん2012/03/08(木) 18:03:56.39
fcntlの範囲ロックは未来の技術
0080デフォルトの名無しさん2012/03/08(木) 18:25:40.22
PCDOSの話か
0081デフォルトの名無しさん2012/03/08(木) 19:02:20.23
$cond = "t";
$cond ?
$hoge = "aiueo":
nop;

↑これはいけるけど
↓これはいけないんだね

$cond = "";
$cond ?
nop:
$hoge = "aiueo";
0082デフォルトの名無しさん2012/03/08(木) 19:41:49.01
flock
0083デフォルトの名無しさん2012/03/08(木) 19:54:16.81
>>81
http://perldoc.jp/docs/perl/5.10.0/perlop.pod#Operator32Precedence32and32Associativity
> 右結合 ?:
> 右結合 = += -= *= などの代入演算子

$cond = "";
($cond ? nop : $hoge) = "aiueo";

nopが変数じゃないからエラー。
0084デフォルトの名無しさん2012/03/08(木) 23:09:14.97
nopが変数じゃないからエラーじゃないから。
0085デフォルトの名無しさん2012/03/08(木) 23:25:47.31
nopが変数じゃないからエラーじゃないからじゃないから。

↓ノーエラー
$aho = 84;
$cond = "";
$cond ?
$aho:
$hoge = "aiueo";
0086デフォルトの名無しさん2012/03/08(木) 23:33:10.23
有効な左辺値を返すのか。知らなかった。
0087デフォルトの名無しさん2012/03/08(木) 23:39:18.06
undef や lvalue sub のように左辺値として有効な何かであれば変数である必要はない。
0088デフォルトの名無しさん2012/03/08(木) 23:59:15.46
>>87
さすがにundefはエラーを吐く。
代入可能(左辺値として妥当)な何かであればいいけど。
0089デフォルトの名無しさん2012/03/09(金) 01:06:58.84
undef はダメだけど () や (undef) なら妥当だね。
1 ? undef : $dummy = 'aiueo'; は通らないけど、
(1 ? undef : $dummy) = 'aiueo'; は (undef) = 'aiueo' になるので通る。

my @a = "a".."z";
1 ? $foo : $bar = @a; say $foo; #=> 26
(1 ? $foo : $bar) = @a; say $foo; #=> a
0090デフォルトの名無しさん2012/03/09(金) 01:11:02.22
1 ? undef : $dummy = 'aiueo'; は通らないけど、
(1 ? undef : $dummy) = 'aiueo'; は (undef) = 'aiueo' になるので通る。
これで意味が変わるのか? やっぱ、クソだわ。
0091デフォルトの名無しさん2012/03/09(金) 01:20:08.26
flockが使えない環境用にmkdirで書き込みのみロックと読み込みのみロックと両方ロックのを作った
作るのにまる3日もかかった
0092デフォルトの名無しさん2012/03/09(金) 01:32:13.34
>>89
それは条件部が定数だからコンパイル時に (undef) = 'aiueo': へ最適化されて
リストへの代入になるからたまたま通るだけで、
($ARGV[0] ? undef : $dummy) = 'aiueo'; のように変動する条件なら
$ARGV[0] ? undef : $dummy = 'aiueo'; と解釈され、
$ARGV[0] が真の時に undef = 'aiueo' をやろうとして実行時エラーになる。
0093デフォルトの名無しさん2012/03/09(金) 04:55:27.45
じゃあ
(($ARGV[0] ? undef : $dummy)) = 'aiueo';
なら通ったりするのかな?外側のカッコも最適化されてなかったものにされるのかな?
それって処理系依存な動作だったりしないのかな?
0094デフォルトの名無しさん2012/03/09(金) 06:00:11.78
>>93
> perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
...
> perl -MO=Deparse -e "(($ARGV[0] ? undef : $dummy)) = 'aiueo'"
$ARGV[0] ? undef : $dummy = 'aiueo';
-e syntax OK
> perl -MO=Deparse -e "1 ? undef : $dummy = 'aiueo'"
undef = 'aiueo';
-e syntax OK
> perl -MO=Deparse -e "(1 ? undef : $dummy) = 'aiueo'"
(undef) = 'aiueo';
-e syntax OK
0095デフォルトの名無しさん2012/03/10(土) 01:25:39.95
>>91
まさか今週の話じゃないよな?
0096デフォルトの名無しさん2012/03/10(土) 01:47:59.87
>>68
今日届いた。らくだ本は青くなってからだじゃれが減ってつまんないよ。
版が上がってますますそう感じる。それともおいらのセンスがないのかな。
0097デフォルトの名無しさん2012/03/10(土) 12:50:05.11
日本語の第四版持ってるけどどんな所が改訂されたんだろう
0098デフォルトの名無しさん2012/03/10(土) 12:51:35.46
>>97
ラクダの右足踏み込みが2ドット深くなってます。
0099デフォルトの名無しさん2012/03/10(土) 13:22:01.47
翻訳されたのが出るのは何年後?
0100デフォルトの名無しさん2012/03/10(土) 15:35:25.50
2年後でしょうね。
その頃はPerl5.18なので、脚注で補われるかと。
0101デフォルトの名無しさん2012/03/10(土) 18:10:37.59
このようにmkdirでロックを作っているのですが
if(mkdir("write.lock",0755)){

}
#(ここの隙間)
if(mkdir("read.lock",0755)){

}

このように読み込みのロックと書き込みのロックの隙間に別のプロセスが入り込んで
read.lockを作ってしまわないようにするにはどうしたらいいんですか?
0102デフォルトの名無しさん2012/03/10(土) 18:13:12.98
>>101
ちょっと意味が分からないけど、
if (mkdir("read.lock", 0755) && mkdir("write.lock", 0755))
って事?
どういう事情で読み込み用と書き込み用で2つもロック用ディレクトリ作ってるの?
0103デフォルトの名無しさん2012/03/10(土) 18:46:08.41
>>102
まあそういうことだけど
2つロック作る理由は

書き込みページ(kakikomi.cgi)
1:ファイルロック
2:ファイル読み込み
3:データ加工
4:書き込み処理
5:ファイルロック解除

読み込んで表示するページ(hyouzi.cgi)
1:ファイルロック
2:読み込み
3:表示
4:ファイルロック解除

1つロックだとkakikomi.cgiの処理が終わるまでhyouzi.cgiがsleep待ちというのはいいのですが
問題はhyouzi.cgiの処理が終わらないと他のhyouzi.cgiがsleep待ちになってしまって観覧数が増えると重くなると言うことです
すなわちhyouzi.cgiは書き込み禁止ロックだけかけて読み込みはできるというようにしたいのです。
0104デフォルトの名無しさん2012/03/10(土) 18:58:20.53
DB使えばいいじゃん。
ってこれ言ったらおしまい?
0105デフォルトの名無しさん2012/03/10(土) 19:01:20.97
>>103
たとえば、kakikomi.cgiやhyouzi.cgiが書き換えたり参照したりするファイルがdata.logだった場合、
kakikomi.cgiで、
ロックして書き出しの時にtmpファイルへ書き出し、
書きだしたtmpフィアルをdata.logへリネーム
ロック解除。

hyouzi.cgiは、ただ読み込むだけならロック無しで読み込み。

これならどう
0106デフォルトの名無しさん2012/03/10(土) 19:10:04.23
hyouzi.cgiの読み込み中にrenameでdata.logの中身が変わると
読み込みが中断されたりしないのかな?
0107デフォルトの名無しさん2012/03/10(土) 19:58:17.03
renameがアトミックかどうかはOS依存。
ぶっちゃけ※Windowsを除く。

つか板違い。
0108デフォルトの名無しさん2012/03/10(土) 20:15:05.94
答えられなくなってきたので板違いと言って追い出すことにしました
0109デフォルトの名無しさん2012/03/10(土) 20:18:36.62
>>1とはなんだったのか
0110デフォルトの名無しさん2012/03/10(土) 21:24:22.36
>>1=アトミック
0111デフォルトの名無しさん2012/03/11(日) 05:44:09.90
1 Apple
2 Orange
3 Banana
  :

のような 番号-文字列 で構成されたデータがあり、各データは1:1かつユニークであることが保証されます。
(1つの番号に複数の文字列が指定されていたり、逆に複数の番号でAppleが割り振られていたりはしません)

番号←→文字列の相互参照をさせるとき、どのようなデータ構造にするのがスマートでしょうか?


とりあえずユニークであることの保証はデータベースに丸投げして、
Perl側で必要な部分だけ取得し、2つのハッシュ(片方は配列でもいいかも)に突っ込むという形を考えています。
0112デフォルトの名無しさん2012/03/11(日) 08:01:20.38
>>111
http://perldoc.jp/docs/perl/5.10.1/perlfaq4.pod

#!/usr/bin/perl -w
use strict;

my @data = split /\n/, <<'EOD';
1 Apple
3 Orange
5 Banana
EOD

# 番号が密で番号から文字列を引く処理が主なら配列
my @n2s; /([0-9]+) (.+)/ and $n2s[$1] = $2 for @data;
print $n2s[3], "\n"; # Orange

# 文字列から番号を引く処理が主ならハッシュ
my %s2n; /([0-9]+) (.+)/ and $s2n{$2} = $1 for @data;
print $s2n{'Orange'}, "\n"; # 3

# 番号が疎だったり両方の処理が必要ならハッシュ
my %n2s = reverse %s2n;
print $n2s{'1'}, "\n"; # Apple

# 計算量を気にしないなら毎回検索
use List::Util qw(first);
print first { defined $n2s[$_] && $n2s[$_] eq 'Banana' } 0..$#n2s; # 5

__END__
あとはこの手の処理をブラックボックスの中でやってくれるモジュールを探すなり、
それこそデータベースを使えって事になると思うよ。
0113デフォルトの名無しさん2012/03/11(日) 09:51:41.13
>>112
サンクス!
実際に運用してみないと分からないけど、文字列→数字への参照の方がクリティカルになりそうなので、
2番目か3番目でやってみる!

試作段階では参照もDBに任せてたんだけど、ちょっと負荷が大きかった(´・ω・`)
まあ、まだ最適化やら何やらする前ってのもあるだろうけどね。
0114デフォルトの名無しさん2012/03/11(日) 14:11:39.48
綺麗なコードだ・・・>>112
どうすればこんなコード書けるようになるんだろう
0115デフォルトの名無しさん2012/03/11(日) 18:19:22.10
>>114
perldocちゃんと読んでる?
0116デフォルトの名無しさん2012/03/11(日) 22:06:00.97
ほとんど読んだことない。どんな時に読むものなのか分からない。
0117デフォルトの名無しさん2012/03/11(日) 22:32:57.14
ていうかどこから読んでいいのかわからない
0118デフォルトの名無しさん2012/03/12(月) 01:09:47.82
CGIならKENT本もいいよ
0119デフォルトの名無しさん2012/03/12(月) 01:10:49.42
どこらへんを綺麗と思ったのか知らんけど、読んどいて損は無いよ。

strictプラグマは使うべき?
http://perldoc.jp/docs/perl/5.8.0/perlstyle.pod

後置のfor、修飾子
http://perldoc.jp/docs/perl/5.8.8/perlsyn.pod#Statement32Modifiers

$_, $1, $2とかの定義済み変数や__END__のリテラル
http://perldoc.jp/docs/perl/5.6.1/perlvar.pod

変数展開しないヒアドキュメント(かなり下の方だけど)
http://perldoc.jp/docs/perl/5.14.1/perlop.pod#Quote32and32Quote-like32Operators

ハッシュのキーと値をひっくり返すreverseのイディオム
http://perldoc.jp/func/reverse
0120デフォルトの名無しさん2012/03/12(月) 01:23:22.93
わざわざありがとう。個々の要素要素については分かるんだが、
全体通した時に上手に組み合わせて書くな、書き慣れてそうだなと思った。
もっと読みたい。
0121デフォルトの名無しさん2012/03/13(火) 15:37:11.44
opendir my $DH, $dir or die "$dir : $!";
すると「リストを返してるのに括弧が無い」というような warning が出る。
Parentheses missing around "my" list at ...

opendir my ($DH) なら怒られないけど
何故 opendir の dirhandle はリストになってるの?
もしくは、リストになっていると何が出来るようになるの?
0122デフォルトの名無しさん2012/03/13(火) 16:40:31.96
警告が出ないから分からん。
0123デフォルトの名無しさん2012/03/14(水) 00:45:35.55
>>121
その警告は
my $foo, $bar
のように書いたときに出る。この場合、
my($foo), $bar
と見なされるから意図している動作と違うのでは? と。
典型的な例としては、my $foo, $bar = @hoge とか。

最近のバージョンだとこの動作を意図して書いているところでは
警告が出なくなっているんだと思う。多分。
0124デフォルトの名無しさん2012/03/14(水) 06:01:58.25
「拒載韓国人(韓国人の乗車拒否)」こんな文字が台湾のタクシーに貼られていることが分かった。
韓国のインターネット上で、大きな話題を呼んでいる。

12日、韓国のコミュニティーサイトに「台湾のよくあるタクシー」「台湾の反韓感情」などのタイトルで、
台湾のタクシーの写真が投稿された。写真には女性がタクシーに乗車しようとしている場面が映っており、
開いたタクシーの窓には「拒載韓国人、NO KOREAN PASSENGER」という韓国人の乗車を拒否する文字が書かれていた。

この写真がネット上で広まると、多くの韓国人ネットユーザーが台湾タクシーの対応に反発。
「台湾はそんなに韓国人が嫌いなのか?」「私も台湾が嫌いだ」「幼稚だ」などのコメントが殺到した。

中には、「外国ではマナーを守ろうよ」「海外でK-POPや韓流は人気だけど、韓国人の市民意識のレベルはまだまだ低い」
といった意見や、「日本はほかの国々から好かれているからうらやましい」「台湾は日本が好きだよな」
「台湾は日本に植民地支配を受けたのになぜ親日なのだろう」などと日本と台湾の関係について議論する韓国人ユーザーらもいた。

韓国メディアによると、台湾内の反韓感情は、韓国が中国と国交を結んだのを機に高まった。
2004年に台湾の1人あたりのGDPが韓国を追い越した頃から、反韓感情は強まりをみせているという。
http://news.livedoor.com/article/detail/6364207/
http://image.chosun.com/sitedata/image/201203/12/2012031201423_0.jpg
0125デフォルトの名無しさん2012/03/14(水) 08:03:53.62
PerlでMySQLを叩く時、今まで通りに
文字化け防止で$dbh->do("set NAMES sjis");
とやっていたのですが、新しくデータベースを作成し、そこでinsert文を作成したら
Can't call method "do" on an undefined value
とエラーが表示されます。
何が原因か分かる方いませんか
0126デフォルトの名無しさん2012/03/14(水) 08:37:21.86
>>121
よく見たら警告の出る所では or die ... の部分を省いてた。
つまり単に opendir my $DH, $dir; と書いてた。後付でゴメンね。

>>123
なるほど dirhandle 云々じゃなくて、 my $DH, $dir の部分がリストなのでは?と警告されてるのか。
open my $FH, '<', $filename; の時はこの警告が出ないから気づかなかった。
つまり open のときはイディオムとして処理されてるのか。
0127デフォルトの名無しさん2012/03/14(水) 08:39:35.46
>>125
もしかして
use DBI;
0128デフォルトの名無しさん2012/03/14(水) 08:51:24.56
>>127
ちゃんと記入しています。
SELECT文の時は何も問題なく接続できますが、INSERT文になるとなぜかエラーがでます。
0129デフォルトの名無しさん2012/03/14(水) 09:00:18.46
一番怪しいのは、
その手の常套句であり頻出語の筆頭である
「いままでどおりに」

その時から行った「今まで通り」の手順に何らかの問題がある
0130デフォルトの名無しさん2012/03/14(水) 09:57:26.72
>>125
だから、undefined value なんだろ。$dbh が。

>>126
opendir my $dh, "$dir" でもいいはず。
0131デフォルトの名無しさん2012/03/14(水) 11:14:45.42
>>130
本当にごめんなさい。
自分の頭の中では
$sth = $db->do("set NAMES sjis");
とやってるつもりだったのに・・・
$dbh->do("set NAMES sjis");
なんでこんな書き方してるんだ・・・・・・
0132デフォルトの名無しさん2012/03/14(水) 11:35:25.51
質問です。
DBI.pm、DBD::Pg.pmのソースを見たのですが、
DBIのメソッドexecuteはどこで定義されているのでしょうか?
0133デフォルトの名無しさん2012/03/14(水) 12:25:54.68
>>130
あ、はい。それでようやく分かった。
open my $FH, '<', $filename; は間に '<' が挟まるから
リストの宣言とは解釈しようがないわけね。
どうもありがとー。
0134デフォルトの名無しさん2012/03/14(水) 13:03:22.52
パーサーがコンテキスト読みすぎで
文法が無駄に複雑
0135デフォルトの名無しさん2012/03/14(水) 15:39:57.40
初歩的な質問でごめんなさい

%hashの添え字をスカラー変数名に自動的に置き換えるにはどう言う風に組んだら良いのでしょうか?

例
$hash{hoge} $hash{moge} $hash{poge},,,,,,
これを
$hoge $moge $poge........
と言う風にしたいのですが、初心者すぎて手作業でしか出来ませんでした。
0136デフォルトの名無しさん2012/03/14(水) 17:12:18.38
こういうこと?

$text = <<'HERE';
$hash{hoge} $hash{moge} $hash{poge}
HERE

$result = "";
while ($text =~ /{(.*?)}/g) {
$result .= "\$$1 ";
}
print $result;
0137デフォルトの名無しさん2012/03/14(水) 17:30:14.63
my $keys = [ qw(a b c) ];
my $values = [ qw(apple banana chocolate) ];
my $hashref = {};
@{%$hashref}{@$keys} = @$values;
print $hashref->{a}, "\n";

perl v5.8.9で実行すると
apple
と表示されるのですが、

perl v5.10.1ではエラーになります。
Can't use string ("0") as a HASH ref while "strict refs" in use at 〜〜.

perl v5.10.1でもappleと表示されるようにするにはどうすればいいのでしょうか?
01381372012/03/14(水) 17:48:44.70
自己解決
#@{%$hashref}{@$keys} = @$values;
@{$hashref}{@$keys} = @$values;
0139デフォルトの名無しさん2012/03/14(水) 18:02:18.49
>>136
ありがとうございます。
whileと正規表現を使えばいいんですね。
ありがとうございました。
0140デフォルトの名無しさん2012/03/14(水) 18:40:58.63
socket通信のプログラムを書いていますが、
オブジェクトを送信して、受信側でオブジェクトを参照しようとすると
HASH(0x00)みたいになって参照できないのですが、
何か対処方法はありますか?
以上、よろしくお願いします。
0141デフォルトの名無しさん2012/03/14(水) 18:44:14.61
コードも無しに対処法とは……
俺らのことをもしかしてエスパーか何かだと思ってる?
0142デフォルトの名無しさん2012/03/14(水) 19:10:21.40
うーん。会社から2chに繋がらないのです。
明日USB経由でコードを持ってきて出直します。
0143デフォルトの名無しさん2012/03/14(水) 19:11:13.76
それはそれでいいのかw
・・・まぁ原因部分だけならあれか
0144エスパー魔美2012/03/14(水) 19:44:43.13
>>140
オブジェクトをそのままファイルに保存出来ないのと同じ理由。
Storable、Data::Dumper、JSON などでシリアライズして送信すると良いかも!
0145デフォルトの名無しさん2012/03/14(水) 19:45:26.17
会社って……
だーーーーーれも教えてくれないの???
0146デフォルトの名無しさん2012/03/14(水) 19:51:08.42
>>143
やっぱりわかっていそうだw

送信が
print $socket $obj

受信が、
my $msg = <$client_socket>){
みたいな感じで、
chomp( $msg);
$obj = $msg;

$obj->show_hoge;
↑HASHがうんたらって出てくる。
多分、分かる人はすぐに分かる問題だと思うけど。
0147デフォルトの名無しさん2012/03/14(水) 21:56:16.89
>>144
了解。
ありがとうございます。
0148デフォルトの名無しさん2012/03/14(水) 22:27:17.94
>>145
教えてくれる人がいる方が珍しい
大抵は孤独に独学だよ
0149デフォルトの名無しさん2012/03/14(水) 22:59:40.11
>>132
DBI::DBD::SqlEngine::st::execute
SqlEngine.pmの773行目あたり

>>137
素直にList::MoreUtils使わん?

use List::MoreUtils qw/zip/;
my $keys = [ qw(a b c) ];
my $values = [ qw(apple banana chocolate) ];
my $hashref = +{ zip @{$keys}, @{$values} };
print $hashref->{a}, "\n";

>>146
show_hogeがcoderefだからそのまんまじゃシリアライズしてもダメかもね。
データだけ渡してロジックは受け側が持っとかないと。
0150デフォルトの名無しさん2012/03/14(水) 23:24:05.58
Perl6はいつリリース予定ですか?
0151デフォルトの名無しさん2012/03/14(水) 23:52:28.92
クリスマス
0152デフォルトの名無しさん2012/03/14(水) 23:56:23.47

Digest-SHA-PurePerl-5.71でprint sha512(hoge);が出力されないのはなぜか教えてもらえませんか?
?
sha256やsha1は出力されるのに。。
0153デフォルトの名無しさん2012/03/15(木) 00:20:03.00
>>145
わかるわー

会社で聞くと、おめーそんなこともわからねーのかふざけんなって、居眠りばかり
してるおっさんプログラマーに怒られる
0154エスパー魔美2012/03/15(木) 02:34:00.68
>>152
エラーメッセージは出た?

手元の環境では動くようだけど。
# This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-multi-2level
perl -MDigest::SHA::PurePerl=sha512 -e 'print sha512("hoge")'
perl -MDigest::SHA::PurePerl=sha512_hex -e 'print sha512_hex("hoge")'
0155デフォルトの名無しさん2012/03/15(木) 07:33:49.40
>>154さん

ありがとうございます
エラーはでません。指示頂いたやりかたで試してみます。


【ソース】
use lib '../module';
use Digest::SHA::PurePerl qw(sha1 sha256 sha256_base64 sha512 sha512_base64);
print sha256 (a);
print "\n";
print sha256_base64(a);
print "\n";
print sha512(a);
print "\n";
print sha512_base64(a);

【結果】
C:\Perl\work>sha.pl
ハ浴ハスハ�ツ1ウ・ワMァ・・|Nrケw・�dサ
ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs


C:\Perl\work>
0156デフォルトの名無しさん2012/03/15(木) 14:39:03.11
use Digest::SHA::PurePerl;
my $state = Digest::SHA::PurePerl->new(512) or die;

私の環境もこれで死ぬ。
軽くソース追ってみたけど、64bit長の計算ができないと、はねられる模様。
0157デフォルトの名無しさん2012/03/15(木) 18:14:15.64
__END__以下を一気読みして変数に入れるため以下のようなコードを書きました。
しかし一気読みされずこの様に出力されました。
>[あいうえお
>かきくけこ
>
>]
何故行の区切り文字を無くしたにも関わらず区切られてしまうのでしょうか。
これは仕様なのでしょうか?This is perl, v5.10.1 built for MSWin32-x64-multi-thread


$/ = "";
$data = <DATA>;
print "[$data]";

__END__

あいうえお
かきくけこ

さしすせそ
たちつてと

なにぬねの
はひふへほ

0158デフォルトの名無しさん2012/03/15(木) 18:56:08.33
http://perldoc.perl.org/perlvar.html
You may set it to undef to read through the end of file.
Setting to "" will treat two or more consecutive empty lines as a single empty line.
0159エスパー魔美2012/03/15(木) 18:56:25.39
>>157
perldoc の説明だと分かりにくいけど、"" は "¥n¥n" と似た動作をする。
多分、undef $/; が答え。
0160デフォルトの名無しさん2012/03/15(木) 19:06:08.11
>>157
これって改行が続いていて、そこが終了と認識されているんじゃないの?
シングルクオテーションでくくってみたら?
0161デフォルトの名無しさん2012/03/15(木) 19:34:13.02
いろいろ参考にしてオリジナルアップローダー作ってみたよ。
基本機能は備えて流れにくいと思うけど、至らない部分あるかも。

http://111.moo.jp/uploda/index.php
0162デフォルトの名無しさん2012/03/15(木) 19:41:13.25
噴いた
0163デフォルトの名無しさん2012/03/15(木) 20:02:39.92
file33.jpg
1234
01641572012/03/15(木) 20:30:21.12
>>158,159,160
$/ = ""には空行を区切り文字にする、という意味があったのです。
代わりにundefを使うことで目的の動作が実現できました。
""とundefの二種類があることを活用しているのです。
レスありがとうございました。


0165デフォルトの名無しさん2012/03/15(木) 21:19:56.00
パ・パ・パパッパ〜Perlライス
0166デフォルトの名無しさん2012/03/16(金) 01:20:27.74
>>161
あれ?アドセンスは?
0167デフォルトの名無しさん2012/03/16(金) 01:58:25.69
sub decimal2binary {
my $decimal = shift;
my $binary = "";
while($decimal>=1) {
$binary = $decimal % 2 . $binary;
$decimal /= 2;
}
$binary;
}

sub binary2decimal {
my $binary = shift;
@binary_ary = reverse split //, $binary;
my $i = 1;
my $result = 0;
for(@binary_ary) {
$result += $_ * $i;
$i <<= 1;
}
$result;
}

print binary2decimal(decimal2binary(5184)); #=> 5184

こういう10進数と2進数の変換関数を書いたのですが、もっとクールにしたいです。添削お願いします。
0168デフォルトの名無しさん2012/03/16(金) 02:20:19.81
>>167
http://perldoc.jp/docs/perl/5.10.0/perlfaq4.pod#How32do32I32convert32between32numeric32representations47bases47radixes63
0169デフォルトの名無しさん2012/03/17(土) 15:10:05.60
デバグの時に使うBEGIN{ $| = 1; print "Content-type: text/html; charset=shift-jis \n\n"; open(STDERR, ">&STDOUT"); } は具体的にどう言う動きをするのでしょうか?
&STDOUTでエラーを検知したら、 print "Content-type: text/html; charset=shift-jis \n\n"でSTDOUTの中身を書き出すって感じなのかな?と思うのですが、{ $| = 1;は何を指示してるのでしょうか?感緑化されてるようでちょっと意味がわかりませんでした。
初心者ですみません。
0170デフォルトの名無しさん2012/03/17(土) 15:16:17.28
perldoc嫁ks
0171エスパー魔美2012/03/17(土) 16:11:46.46
>>169

BEGIN{ # コンパイル時に実行されるブロック (sub BEGIN { ... } と同じ)
$| = 1; # STDOUTのバッファリングをオフ
print "Content-type: text/html; charset=shift-jis ¥n¥n";
open(STDERR, ">&STDOUT"); # 標準エラー (STDERR) の出力先をSTDOUTと同じにする。
}
0172デフォルトの名無しさん2012/03/17(土) 18:08:54.19
renameが失敗するのはどういう場合ですか?
0173デフォルトの名無しさん2012/03/17(土) 18:11:14.44
おなじファイルがすでに存在する場合(ファイル名がわるい)
0174デフォルトの名無しさん2012/03/17(土) 18:14:57.02
>>172
同じ名前のファイルがある場合。
同じ名前のディレクトリがある場合。
変更しようとしているファイルが存在していない場合。
ファイル名を変更する権限がない場合。
別のプログラムがファイルを開いていてロックかけている場合。
名前として有効でない記号などが入った名前の場合。
ウイルスに感染している場合。
OSが不調の場合。
HDDが壊れている場合。
パソコンが壊れている場合。
そういう夢を見ていた場合。
電源が入っていない場合。
電力会社が大変な事になっている場合。
世紀末でメシア待ちの場合。
ヤマト発進後のプロジェクト成功待ちの場合。
0175デフォルトの名無しさん2012/03/17(土) 18:36:13.19
エラーバリアブル見ろよ。
0176デフォルトの名無しさん2012/03/17(土) 18:39:38.88
>>172
http://perldoc.jp/func/rename
http://perldoc.jp/docs/perl/5.14.1/perlvar.pod#Error32Indicators
0177デフォルトの名無しさん2012/03/17(土) 19:54:51.07
>>174
>別のプログラムがファイルを開いていてロックかけている場合

これはflockをしている場合と言うことですか?
0178デフォルトの名無しさん2012/03/17(土) 21:00:48.77
>>171
ありがとうございます。
$| = 1;をどう検索かけても、検索出来なくて途方にくれてました。
そう言う意味だったのですね。
0179デフォルトの名無しさん2012/03/17(土) 21:30:18.96
>>177
OSさんがファイルロックしてる事もある
flock中にファイル名変えれるかどうかはしらん、試せばいいんじゃない?
0180デフォルトの名無しさん2012/03/18(日) 03:25:45.75
>>178 perl 特殊変数 でggrks
0181デフォルトの名無しさん2012/03/18(日) 03:40:58.45
perlvar見ればggr必要すらないがな
0182デフォルトの名無しさん2012/03/18(日) 10:05:31.14
最近の2ちゃんは略字が多くてわかりづらくなってしまったな

最近常用となってしまった2ch略字
kwsk 詳しく
wktk ワクワクテケテケ
ktkr キタコレ
mjkt マジキチ
iksg 今北産業
opop おっぱいおっぱい
drum だれがうまいこと言えといった
omor お前は俺か
morkw またお前らかよw
ohh2ckyw お前ら平日の昼間から2ちゃんかよw
mjkt マジキチだからやめろ
ggrks→これはわからん・・
0183デフォルトの名無しさん2012/03/18(日) 10:07:41.42
perldocとか使いませんですしおすし
俯瞰出来る.jpはたまに見る
0184デフォルトの名無しさん2012/03/18(日) 10:49:58.65
>>182
mjktが2通りあるぞ
ここまでわかってggrksがなぜわからぬ
ネタとしてはあまりにつまらなすぎて意味不明だからマジボケなんだろうけど
0185デフォルトの名無しさん2012/03/18(日) 12:15:40.68
>>182
「今北産業」「だれうま」「おま俺」「マジキチ」というのが略記であって
その一覧はアブジャド系表記にしか見えんが…
ggrksはググれカス
0186デフォルトの名無しさん2012/03/18(日) 12:16:48.20
いや、iksgは流石にアブジャドだけじゃ足らずに略もしてるか
0187デフォルトの名無しさん2012/03/18(日) 12:22:50.40
ここまでコピペ
0188デフォルトの名無しさん2012/03/18(日) 14:51:39.52
iksg イキすぎ
0189デフォルトの名無しさん2012/03/18(日) 15:48:41.69
若者のマニュアル離れが深刻。
0190デフォルトの名無しさん2012/03/18(日) 15:49:59.80
マニュアル離れって・・・そこらのオッサンの方がマニュアル読まないだろうがw
0191デフォルトの名無しさん2012/03/18(日) 15:51:49.94
さすがにμ即ネタは食いつきが違うな。
0192デフォルトの名無しさん2012/03/18(日) 16:09:03.38
待て、マニュアルは使うな!マニュアルは最後の武器だ!
0193デフォルトの名無しさん2012/03/18(日) 16:55:36.06
マニュアルモード カラ オートメーションモード ヘ イコウシマス
0194デフォルトの名無しさん2012/03/18(日) 17:25:33.53
思い込みという脳内マニュウアルが最優先です。
0195デフォルトの名無しさん2012/03/18(日) 18:36:54.48
その点、Perlはマニュアルがいらないからいいよね。
0196デフォルトの名無しさん2012/03/19(月) 00:24:43.92
いやだからperldocは見ねえと言ってるだろ!
0197デフォルトの名無しさん2012/03/19(月) 13:17:23.74
LWP使っています。
javascriptが有効であるかのように振る舞う方法があったら教えてもらえませんか?
0198デフォルトの名無しさん2012/03/19(月) 13:42:35.06
>>197
http://search.cpan.org/dist/WWW-Scripter-Plugin-JavaScript/
http://e8y.net/mag/007-www-mechanize/
0199デフォルトの名無しさん2012/03/19(月) 15:35:17.24
ふつうはopenしてflockしますけど、
これロックファイル無しで一体化できませんかね
0200デフォルトの名無しさん2012/03/19(月) 17:23:10.08
>>199
OSによっては sysopen で O_EXLOCK か O_SHLOCK が利用できる
http://perldoc.jp/docs/perl/5.10.0/perlopentut.pod#Open32la32C
http://perldoc.jp/func/sysopen
0201デフォルトの名無しさん2012/03/19(月) 17:28:02.62
>>200
ありがとう
おれLinusだから利用できないわ
0202デフォルトの名無しさん2012/03/19(月) 22:50:45.14
おや、ご旅行ですか?
0203デフォルトの名無しさん2012/03/19(月) 23:20:08.53
はい
http://www.linuxinsight.com/files/images/linus_thumbs_up_for_windows_7.jpg
0204デフォルトの名無しさん2012/03/20(火) 01:04:38.17
>>203
やったね!アンディー!
0205デフォルトの名無しさん2012/03/20(火) 07:25:17.18
ウィキ作った。
書くの手伝って。
http://goo.gl/OyWRr
0206デフォルトの名無しさん2012/03/20(火) 07:38:39.74
PerlにはRubyでいうyugui本みたいなのはありますか?
思い当たるものがありましたら教えて頂けると嬉しいです _ _
0207デフォルトの名無しさん2012/03/20(火) 07:41:31.61
リャマ本ってこと?
02082062012/03/20(火) 07:52:02.22
>>207
返信ありがとうございます。リャマ本とラクダ本は過去に読んだのですが、
リャマ本はプログラミング初心者を対象としており
(プログラミング経験者には記述が冗長で、また仕様が十分に記されていない)
ラクダ本は小さく纏まっていない気が私的にはするのです。
Perlの仕様を必要十分に短く簡潔に記述したものが知りたく
yugui本という例えを使いました。言葉足らずで申し訳ありません;
0209デフォルトの名無しさん2012/03/20(火) 08:45:19.33
小型高速船で未明上陸、韓国人男女7人密航容疑


 第7管区海上保安本部(北九州市)と大阪府警は19日、韓国からの密航者や密航の仲介をした
韓国人の男女計7人を入管難民法違反(営利目的の集団密航助長など)容疑で逮捕した、と発表した。

 同本部の発表によると、7人は仲介した無職鄭舜晧(42)、ホステス梁英美(46)の両容疑者
(いずれも名古屋市在住)ら。
 鄭容疑者は昨年6月30日夕、韓国南部で小型高速船に女性3人(45〜51歳)を乗せ、
同7月1日未明に山口県下関市の小串漁港に不法上陸させた疑い。

 梁容疑者は千葉県柏市と大阪市の韓国人女性2人(32、53歳)を同船で出国させるため、
同漁港まで車で運ぶなどした疑い。

 女性たちは1人50万〜100万円の報酬を支払っていたという。
 同本部は鄭、梁両容疑者は密航請負組織の一員とみている。

 大阪府警が昨年10月、不法上陸した3人のうちの1人を不法在留の疑いで逮捕し、集団密航が発覚。
 3人はすでに全員逮捕、起訴され、有罪判決を受けた。

(2012年3月19日21時08分 読売新聞)
http://www.yomiuri.co.jp/national/news/20120319-OYT1T00969.htm
0210デフォルトの名無しさん2012/03/20(火) 11:44:50.83
スレッドを生むスレッドってどーやって作るの?
0211デフォルトの名無しさん2012/03/20(火) 12:21:20.66
perlの処理順番について質問です

1:プロセス1とプロセス2を全くの同じ時間に起動した場合
全く同じ行の全く同じ部分が同時に実行されるのか?

2:プロセス1を先に起動して、その0.01秒後くらいにプロセス2を起動した場合
プロセス1の1行目はプロセス2の1行目より0.01秒はやく実行されるだろうが
それ以降の行でもプロセス1の方がプロセス2よりも0.01秒はやく実行されているのか?
例えばプロセス2の100行目がプロセス1の100行目より先に実行されるということはないのか?
教えてください
0212デフォルトの名無しさん2012/03/20(火) 12:25:05.64
>>211
CPUの数はいくつありますか?(マルチコアですか?)
0213デフォルトの名無しさん2012/03/20(火) 12:27:53.24
>>212
CPUいくつあるかわからないので
1つの場合と複数の場合について教えてください
0214デフォルトの名無しさん2012/03/20(火) 12:32:12.48
>>211
すべては不定です
0215デフォルトの名無しさん2012/03/20(火) 18:03:41.46
処理の順番が狂うとうまくいきません

yomikomi.cgi
y-1:readlockファイルがない場合
y-2:writelockファイルを作る
y-3:readlockがあればsleepで待つ
y-4:読み込んで表示

kakikomi.cgi
k-1:readlockファイルを作る
k-2:writelockファイルを作る
k-3:sleepで待ってreadlockとwitelockファイルが作成できたら
k-4:書き込む

処理の順番がy-1〜y-4,k-1〜k-4となる場合や
k-1,y-1,k-2,y-2,k-3,y-3,k-y,y-4となる場合は問題ないのですが
yー1とyー2の間にkー1とkー3が割り込んだら
ロックができない状態になります
どうすればいいんでしょうか?
0216デフォルトの名無しさん2012/03/20(火) 18:17:08.11
そういうのはひとつのロックファイルで排他ロックと共有ロックを使う
0217デフォルトの名無しさん2012/03/20(火) 18:52:23.67
DB使いなよ。
0218デフォルトの名無しさん2012/03/20(火) 19:09:26.49
>>217
バカのひとつおぼえだな
0219デフォルトの名無しさん2012/03/20(火) 19:12:40.39
>>218
もしかしてDBまでモダンだと思ってるの?
0220デフォルトの名無しさん2012/03/20(火) 19:17:40.90
>>217

=─‐\\‐  /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ,
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、
二─二二彡彡、゙、三三二==くメゝ/   ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/::      \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、  ,,,,- ゙彡//ヾ、三二= くゝ/:::....      \>∠レ-,-‐ニ二メヽ''ヽ ノ
 ゙ヽ、,,,-‐//_///,,、゙、三二=  ゙、 ""'''      ヽ>//レレヽ,,___  /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ.         //-ヘヘ,、 レレレレノ  さあ願いを言え
''"      ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,//    ゙ヽフ/|/| レ'  どんな願いも聞き流してやろう。
0221デフォルトの名無しさん2012/03/20(火) 19:18:45.87
>>220
面白いと思ったの?
0222デフォルトの名無しさん2012/03/20(火) 19:27:35.32
ドラゴンボールな、はいはい。
0223デフォルトの名無しさん2012/03/20(火) 19:59:24.98
/`゚`ii´゚`ヽ
0224デフォルトの名無しさん2012/03/20(火) 21:20:27.97
米政府 韓国メーカーに不当廉売関税適用へ

米商務省の決定文によると、サムスン電子の冷蔵庫に対しては韓国製に5.16%、メキシコ製に15.95%の同関税を課す。
LG電子については、韓国製に15.41%、メキシコ製に30.34%をそれぞれ課す。
同関税はダンピング(不当廉売)によって、国内産業が被害を受けないよう通常賦課される関税に加え特別に課す税金。

http://japanese.yonhapnews.co.kr/headline/2012/03/20/0200000000AJP20120320001000882.HTML


【FTA】 米国政府 「サムスンとLGは不当廉売なので関税をもらいます!」 ★2
http://engawa.2ch.net/test/read.cgi/poverty/1332236917/

前スレ
【FTA】 米国政府 「サムスンとLGは不当廉売なので関税をもらいます!」
http://engawa.2ch.net/test/read.cgi/poverty/1332219745/
0225デフォルトの名無しさん2012/03/20(火) 21:58:33.06
>>211, >>215
どうなるかは不定(決まってない、どっちになるか分からない)、としか答えようがないでそ。
どうしても特定の順番で処理させなきゃいけないんなら、
排他ロックを適切にかけながら処理するしかない。
そしてもちろん排他ロックにはアトミックな仕掛けを使わなくてはいけない。
ただそれだけのこと。
DB使えってのはDBMSがそのへんの排他制御を比較的よきにはからってくれるから。
0226デフォルトの名無しさん2012/03/20(火) 22:29:23.12
flockとかそういう話じゃなくて?
0227デフォルトの名無しさん2012/03/20(火) 22:31:28.02
flockでもいいんじゃない?使える環境なら
02282082012/03/20(火) 22:32:19.30
どなたか宜しければお願いします _ _
perldoc辺りが最善手になるんでしょうか・・・
0229デフォルトの名無しさん2012/03/20(火) 22:35:17.84
プログラミングの基礎を学びたいのか実戦で効率的にやりたいのかどっち?
02302082012/03/20(火) 23:05:01.65
>>229
返信有難う御座います。プログラミングの基礎を学びたいわけではないです。
かといって、実践で(仕事で)使えればそれで良いかと言えば
Perlは既に仕事で何度も使っているのでそういう訳ではないです。

Perlの仕様を隅々まで(と言っても限度はありますが
少なくともラクダ本にある程度は)把握したいです。

ですが、ラクダ本をもう一度全て読むのは分量があるので御免被りたいです。
ワガママですみません;
0231デフォルトの名無しさん2012/03/20(火) 23:09:53.61
>>230
Perlの隅々の仕様の把握ならラクダ本ほど楽な方法も中々ないぞ
一気に読もうとせず、毎日コツコツ読むだけでも随分違うかと
今まで知らなかった仕様を知ることができるかもよ
0232デフォルトの名無しさん2012/03/20(火) 23:52:47.86
>>230
http://www.modernperlbooks.com/
Modern Perlはそこそこまとまってた。
ざっくりPDF版を読んでみたら。
0233デフォルトの名無しさん2012/03/21(水) 00:43:36.81
毎日20ページ読むだけで2週間ありゃ読み終わる
0234デフォルトの名無しさん2012/03/21(水) 00:52:29.28
1ページの半分読んで眠くなる
0235デフォルトの名無しさん2012/03/21(水) 01:08:33.44
ディレクトリがあるかどうか調べるとき
ディレクトリがない場合というのelseやunlessを使うしか方法はないんでしょうか?
elseやunlessはあまり使いたくないんだけど

if(-d "test"){
print "ディレクトリがあります";
}
else{
print ""ディレクトリがありません;
}
0236デフォルトの名無しさん2012/03/21(水) 01:34:57.79
not -d
0237デフォルトの名無しさん2012/03/21(水) 01:39:19.27
>>230
そんな君にはポケットリファレンスがよかろう
0238デフォルトの名無しさん2012/03/21(水) 01:53:56.47
あの青いやつか
0239デフォルトの名無しさん2012/03/21(水) 09:40:35.99
痴漢するときに、入力したファイルをそのまま変換するのって
どんなオプションでしたっけ
0240デフォルトの名無しさん2012/03/21(水) 09:42:10.93
自己解決しました。 やっぱり愛なのね。
0241デフォルトの名無しさん2012/03/21(水) 09:53:20.77
>>239,240
なにうまいこというとんねん!
0242デフォルトの名無しさん2012/03/21(水) 10:27:36.31
関数の戻り値を変数に代入する場合、そのまま利用する場合と比較して、メモリは倍必要になるのでしょうか?

my $data = large_data();
print $data;

print large_data();
02432082012/03/21(水) 11:17:49.63
>>231
ありがとうございます!検討してみます。

>>232
まさにこういうの探していました!本当に有り難うございます _ _
みなさん長々とお付き合いありがとうございました _ _
0244デフォルトの名無しさん2012/03/21(水) 15:59:42.57
>>243
行末の「 _ _」が気になる。なんの暗号だ。
0245デフォルトの名無しさん2012/03/21(水) 16:00:40.80
>>236
> not -d
! -d を使ってる。理由は忘れた。
0246デフォルトの名無しさん2012/03/21(水) 16:06:37.64
>>244
m(_ _)m 的なものだと思われる
0247デフォルトの名無しさん2012/03/21(水) 16:08:37.06
m(_ _)m → m _ _ m → _ _ → ?
0248デフォルトの名無しさん2012/03/21(水) 16:33:26.80
( @�u@)
0249デフォルトの名無しさん2012/03/21(水) 16:42:41.27
>>246
>>247
なるほど。Thanks.
0250デフォルトの名無しさん2012/03/21(水) 19:09:23.68
排他ロックはmkdirを使うやりかたがいろいろ紹介されていますが
共有ロックはflockを使う以外では見たことありません
flockを使わないで共有ロックをするのは隙間ができたりして難しいのでしょうか?
0251デフォルトの名無しさん2012/03/21(水) 19:26:00.44
>>250
別に難しくもなんともないが、mkdirだのあのあたりの方法は
プログラムが死んだときにロックしっぱなしになるので
自分では絶対に採用しないな。
0252デフォルトの名無しさん2012/03/21(水) 19:32:51.02
http://perldoc.jp/func/exec
'exec' は Perl の組み込み関数ではありません。

え?
0253デフォルトの名無しさん2012/03/21(水) 19:37:17.22
hint: 404
0254デフォルトの名無しさん2012/03/21(水) 21:56:47.17
>>252
おいおい知らなかったのかよ
0255デフォルトの名無しさん2012/03/21(水) 23:54:25.80
シェルの関数でしょ
0256デフォルトの名無しさん2012/03/22(木) 00:33:19.22
最終的にシェルだとかシステムコールにたらい回されるにしたって、
perlfuncに載ってるexecはPerlの組み込み関数でしょ。

http://perldoc.jp/index/function
execのほかにforkやexitもだけど、リンクはあるのにクリックすると組み込み関数じゃありませんってのはおかしいので何かの手違いだろう。
0257デフォルトの名無しさん2012/03/22(木) 00:38:24.69
http://perldoc.jp/func/adelic
手違いっぽいね
0258デフォルトの名無しさん2012/03/22(木) 00:41:59.19
そりゃあ簡単だ
forkなんてUNIXの方の機能じゃん
だからperlのモンじゃあない

execもexitも同じ、perlの組み込みじゃない
0259デフォルトの名無しさん2012/03/22(木) 01:02:12.03
手違いというより単に翻訳済みのドキュメントがないってことでしょ
0260デフォルトの名無しさん2012/03/22(木) 01:44:20.59
>>258
システムコールforkをPerlから呼ぶためにはPerlの組み込み関数forkが必要だろ。
それに、perlはUNIXだけのモンじゃあない。Perlの関数forkは非UNIXではそれに応じた動作をしなけりゃならない。

>>259
http://perldoc.jp/perlfunc からは見れるからやっぱり手違いだろう。
0261デフォルトの名無しさん2012/03/22(木) 01:52:16.27
んじゃそっちからこっちへアップデートされてないってことで
0262デフォルトの名無しさん2012/03/22(木) 12:26:23.50
>>216
書き込みロックと読み込みロックの2種類があるから
どうしても2つロックが必要じゃん
0263デフォルトの名無しさん2012/03/22(木) 15:11:57.50
>>262
ファイルはひとつで済むでしょ
0264デフォルトの名無しさん2012/03/22(木) 17:38:36.06
『アドバイザリ・ロック』ッ!!
オレたちの「読み込み」のみを許可し!
ヤツらの「書き込み」を禁止しろーッ!
0265エスパー魔美2012/03/22(木) 19:26:25.42
>>262
書き込むときは LOCK_EX、読み込むときは LOCK_SH
0266デフォルトの名無しさん2012/03/22(木) 20:34:00.51
マジで吐いた処理
0267デフォルトの名無しさん2012/03/23(金) 11:30:53.06
スクレイピングをするのに、いちばん簡単な方法は何ですか

とりあえずの目標は、pixivをキーワード検索して、閲覧数でソートすることです
0268デフォルトの名無しさん2012/03/23(金) 11:35:18.03
>>267
ピンポイントで正規表現
がとりあえず一番楽
0269デフォルトの名無しさん2012/03/23(金) 11:35:29.21
use Web::Scraper;
0270デフォルトの名無しさん2012/03/23(金) 11:37:53.33
ちょっと間違った
scraperだけじゃあまだめんどい

Web::Scraper入れてコマンドラインでprocessを試し打ち、
ラクにxpath取得するために、firefoxのアドオンfirebug入れる
0271デフォルトの名無しさん2012/03/23(金) 12:10:02.21
$lock_path = "lock_test.data_mode_haita";

if($lock_path=~/(.*)_mode_(.*)/){
$lock_file_name = $1;
$lock_mode = $2;
}

とした場合$lock_modeはhaitaとなるのですが
$lock_path="lock_test.dat_mode_mode_haita";
の場合だと$lock_modeが取得できません
どうすればいいのですか?
0272デフォルトの名無しさん2012/03/23(金) 12:14:48.20
>>270
うう、やっぱり面倒そうだ

でもそのくらいは身につけても損はしない気がしてきた
0273デフォルトの名無しさん2012/03/23(金) 13:25:33.21
LWPでhtmlなりダウンロードして
あとは正規表現で欲しい所抽出してソート
って感じじゃね
0274デフォルトの名無しさん2012/03/23(金) 14:54:12.93
そういう意味ではperlはへヴィだよな
0275デフォルトの名無しさん2012/03/23(金) 14:57:49.27
>>271
if ($lock_path =~ /(.*)_mode_([^_]*)$/) {
でどうだ
0276デフォルトの名無しさん2012/03/23(金) 16:41:29.86
firebug使うと全部コピペで済ませられるらしいけど、
Firefox10以降ならツール→Web開発→調査でも、だいたいの情報が取れるよ。
0277デフォルトの名無しさん2012/03/23(金) 16:53:35.30
>>276
すごいなfirefox
それコマンドラインから自動化したいんだけど、参考になるページある?
0278デフォルトの名無しさん2012/03/23(金) 16:58:45.42
そういうの俺も探してた。→スクレイピングの自動化
対象となるウェブページとそこから抜き出したい文字列を指定することで、
自動的に類型のウェブページからスクレイピング出来るようなライブラリ。
これなら対象のウェブページの構造が変わったとしても自動的に対応できる。
0279デフォルトの名無しさん2012/03/23(金) 17:23:35.14
>>277
誤解させてたらごめん。
ページを表示して、クリックで手軽に要素の属性を知ることができるってだけで、
スクレイピングは別に必要。
Web::Scraperでpixivの作品ページから取るとすると下みたいになると思うけど、
この.viewsや.titleを手軽に知ることができるだけ。

use URI;
use Web::Scraper;

my $pixiv_views = scraper {
process '.views', number => 'TEXT';
process '.title', title => 'TEXT';
};
my $uri = URI->new('http://www.pixiv.net/member_illust.php');
$uri->query_form(mode => 'medium', illust_id => '作品id');
my $views = $pixiv_views->scrape($uri);
0280デフォルトの名無しさん2012/03/23(金) 17:40:57.57
xml::simpleも使えば
自動化できるかもナ
>>278

つっても
拾ったxmlのdumpの中身をマッチさせて
xml構造からxpathを練り上げるだけ
か?
0281デフォルトの名無しさん2012/03/23(金) 19:43:05.61
>>271
> $lock_modeが取得できません
・期待する結果
・実際の結果
・「取得出来ない」というのはどういうことか
を説明すると回答をもらえるかも。

>>276
Firebug は存在しないtbodyをXpathに含めてしまうので注意が必要。ぐぬぬ。
0282デフォルトの名無しさん2012/03/23(金) 19:55:51.17
存在しないんじゃなくて省略してるだけだよ
0283デフォルトの名無しさん2012/03/23(金) 20:11:20.75
>>282
xml的にすくレイプしてる時には出てこないから、
いやーんな感じになるんじゃね?
0284デフォルトの名無しさん2012/03/24(土) 03:37:03.73
sub hoge {
qw(asdf zxcv qwer);
}

@ary = hoge();
print $ary[1];

上記を一時的な変数を使わず直接的にアクセスするようにしたいのですが
以下の様に無名配列のリファレンスを使うよりないでしょうか?

print ${[hoge()]}[1];
0285デフォルトの名無しさん2012/03/24(土) 03:58:01.43
print + ( hoge() )[1]
0286デフォルトの名無しさん2012/03/24(土) 12:25:52.62
どうやっても読みにくくなるな
0287デフォルトの名無しさん2012/03/24(土) 12:30:32.92
面倒クセ―からクロジャーにしちまえよ

あとオメーはどういう風にアクセス()したいんだ
print hage()->[0]:
とでも死体のか?
0288デフォルトの名無しさん2012/03/24(土) 17:30:28.70
>>287
syntax error
0289デフォルトの名無しさん2012/03/24(土) 17:39:35.67
printしたいだけ、ということは普通あり得ないから、
何らかの変数への代入をする訳で

($dummy, $val) = hoge();

みたいな使い方で、大抵は問題ない
0290デフォルトの名無しさん2012/03/24(土) 17:45:54.27
そこは$dummyなんて使わずにundef
0291デフォルトの名無しさん2012/03/24(土) 18:03:50.60
そんなところにundefが書けるのは、
言語仕様として異常だよな
0292デフォルトの名無しさん2012/03/24(土) 18:09:18.30
だがしかしそれがいい
0293デフォルトの名無しさん2012/03/24(土) 18:34:55.27
結合が密なんで、代入するのが吉。
0294デフォルトの名無しさん2012/03/25(日) 05:16:56.76
>>281
Firebugが追加してるわけではなくFirefox本体が補完している
0295デフォルトの名無しさん2012/03/25(日) 12:36:11.44
>>294
そんなことはどうでもいいんだよ
0296デフォルトの名無しさん2012/03/25(日) 12:37:01.63
>>294
そうなのか、勉強になった。さんくす。
0297デフォルトの名無しさん2012/03/25(日) 13:04:51.20
>>294
そやったんや
0298デフォルトの名無しさん2012/03/25(日) 19:25:41.29
古いPerlスクリプトを動かそうとしてみたら、2003年から更新されていない
モジュールParallelUserAgentをPerlが通さなくて挫折したんだが、これを最少努力で
置き換えられるモジュールってなんじゃろう?
0299デフォルトの名無しさん2012/03/25(日) 19:31:17.95
ParalelUserAgentを動くようにする。
それが何か知らないけど。
0300デフォルトの名無しさん2012/03/25(日) 20:23:23.76
そんな努力はしたくない
が答え
そのスクリプトは捨てる
0301デフォルトの名無しさん2012/03/25(日) 20:30:49.23
ParallelUserAgentでググった結果。

2009-06-11 - nihosenの日記
ttp://d.hatena.ne.jp/nihosen/20090611

AnyEvent + Coro での並行ダウンローダの習作 - 昨日知ったこと
ttp://d.hatena.ne.jp/unau/20100114/1263432308

ここで飽きた。
0302デフォルトの名無しさん2012/03/25(日) 21:07:06.62
一括ダウンする時は、リストだけ作ってIriaとかに渡してるな
0303デフォルトの名無しさん2012/03/25(日) 22:23:13.68
俺はwget
0304デフォルトの名無しさん2012/03/25(日) 23:18:43.05
>>301
セマフォまで話が及ぶんなら
そのままthread使えよ
と思ってしまう

一つのバカでかいファイルを並列DL……
てワケでもなさそうだし
いっせんまん とかお書きになられてるし

そしてそのblog、その記事が人気エントリになってるwww
アクセスしすぎだwww
何だ何だと勘繰るだろwwwww
0305デフォルトの名無しさん2012/03/26(月) 00:13:03.03
>>303
wgetでページにアクセスして、そこで発行された
クッキー使って別のページから落とす。
みたいなことどうやってやるの?
0306デフォルトの名無しさん2012/03/26(月) 00:14:25.66
>>304
だからクローラだろ?
しっかりそのページに書いてあるじゃん。
もしかしてクローラしらないとか?
0307デフォルトの名無しさん2012/03/26(月) 02:13:38.45
>>305
クッキーを保存して使う
0308デフォルトの名無しさん2012/03/26(月) 04:00:58.35
Gtk2::MozEmbedを使うのが正解は越後製菓
0309デフォルトの名無しさん2012/03/26(月) 04:50:24.75
>>305
そんな面倒臭いことはやったことがないし今後もやらない
0310デフォルトの名無しさん2012/03/26(月) 12:51:25.81
1:投稿をファイル1に書き込む
2:投稿数をファイル2に書き込む

1と2の処理の間に鯖が落ちたり、sleepでタイムアウトエラーになったりする場合
実際の投稿数と投稿数が合わなくなりますがこういうのを避ける方法はないんでしょうか?
0311デフォルトの名無しさん2012/03/26(月) 13:06:15.05
>>310
そこまで気にするなら同じファイル(データベース)に書くしかない。
0312デフォルトの名無しさん2012/03/26(月) 13:07:48.50
>>310
というかそんな用途なら違ってもこまらなくね?
0313デフォルトの名無しさん2012/03/26(月) 13:13:33.48
マルチコアやらマルチスレッドで動いてるもんが、
究極的に処理の競合を避ける方法って無いよな

誰も使ってないことを確認してから、自分が使うことを宣言するまでの時間を
ゼロにできない
0314デフォルトの名無しさん2012/03/26(月) 13:24:57.06
PerlでFirefoxを操る方法がわからない。Win32::OLEはIEしか使えないし
WWW::Mechanize::Firefoxなるものをググってみてあるらしいことはわかったが今一
Win32::OLEみたいなものないのかな?
0315デフォルトの名無しさん2012/03/26(月) 13:49:31.03
素直にaddon書けばいいんじゃね?
さすがにそこはperlの域を超えてるような気もする

それか
Firefox::OLEのようなもの
を自作するとか
CPANに上げれば一躍スタァになれるぞ
0316デフォルトの名無しさん2012/03/26(月) 14:08:47.56
CPANに上げることもスターになることも目的ではありません。
0317デフォルトの名無しさん2012/03/26(月) 16:43:45.18
確認せずに書き込むぜ
ワイルドだろう?
0318デフォルトの名無しさん2012/03/26(月) 17:44:19.07
>>313
バカ発見
0319デフォルトの名無しさん2012/03/26(月) 19:22:18.84
>>318
俺こういうの用事ないからわからんのだけど、どうやんのが一般的?
0320デフォルトの名無しさん2012/03/26(月) 19:36:52.78
>>319
自分で調べなさい
0321デフォルトの名無しさん2012/03/26(月) 19:38:07.25
>>315
ありがとう。やっぱないかあ。
0322デフォルトの名無しさん2012/03/26(月) 19:59:56.17
そもそもFirefoxが外部から操作できるようになってないんでしょ。
0323デフォルトの名無しさん2012/03/26(月) 20:08:23.18
mozrepl
0324デフォルトの名無しさん2012/03/26(月) 20:18:02.22
>>320
はーい
0325デフォルトの名無しさん2012/03/26(月) 21:14:22.72
Firefoxのある特定のクッキーをPerlでエクスポート
エクスポートした情報をPerlで読み込んだり、
FirefoxにPerlにてインポートできますかね?やり方教えてください
0326デフォルトの名無しさん2012/03/26(月) 21:16:15.37
クッキーなんか唯のテキストファイルだから
どーにでもなる

これ以上はwebpログラム板あたりでどうだろう
0327デフォルトの名無しさん2012/03/26(月) 21:44:05.19
Firefoxのクッキーってテキストだっけ
0328デフォルトの名無しさん2012/03/26(月) 21:46:05.97
違うな
0329デフォルトの名無しさん2012/03/26(月) 21:48:57.57
テキストファイルじゃなければバイナリなんだから
どーにでもなる
0330デフォルトの名無しさん2012/03/26(月) 21:50:05.96
まあPC上のすべてのファイルはバイナリ(テキスト以外)だからな
exeもバイナリだ
0331デフォルトの名無しさん2012/03/26(月) 21:50:31.18
特定アプリのファイルの読み書きは
ウェブプログラムじゃない。

ここでよい。
0332デフォルトの名無しさん2012/03/26(月) 21:51:41.63
昔の古いバージョンじゃなければtxtじゃなくsqliteでしょ。
0333デフォルトの名無しさん2012/03/26(月) 21:52:31.61
以下、テキストとバイナリの話題がループして元に戻る
↓
0334デフォルトの名無しさん2012/03/26(月) 21:55:28.95
バイナリなんて無茶だ
0335デフォルトの名無しさん2012/03/26(月) 22:10:29.33
FireFoxのクッキーとかWebProg行きだろ
そうじゃなかったら、Perlとは関係ないFireFox都合の質問でスレ違いだろ
0336デフォルトの名無しさん2012/03/26(月) 22:16:45.78
Plackとかの質問もこっちじゃないの?
CGIじゃなければいいと思うけど。
0337デフォルトの名無しさん2012/03/26(月) 22:18:53.76
えっ
0338デフォルトの名無しさん2012/03/26(月) 22:46:03.24
WebProgで質問してもどうせこっちにたらいまわされるだろうなw
0339デフォルトの名無しさん2012/03/26(月) 22:51:40.79
最近やたらsqliteファイルにぶつかるな
そんなに便利か?
0340デフォルトの名無しさん2012/03/26(月) 22:57:31.07
うん
0341デフォルトの名無しさん2012/03/26(月) 23:08:47.49
> FireFoxのクッキーとかWebProg行きだろ
はぁ? どこにウェブ関係有るんだよw
0342デフォルトの名無しさん2012/03/26(月) 23:23:29.90

Firefoxは " W E B ブ ラ ウ ザ " なんだが
0343デフォルトの名無しさん2012/03/26(月) 23:32:24.21
PerlからSOAP::LiteでJavaアプリにリクエストを投げて、レスポンスを色々加工して表示、
ということをしているんだけど、その時に、設定したタイムアウト値(90秒)よりもかなり短い時間(早い時は1秒以内)で
タイムアウトのエラーになることが度々あって困ってます。
こういった現象の原因に心当たりのあるひとはいません?
0344デフォルトの名無しさん2012/03/26(月) 23:35:14.53
知らないくせに余計なこと書き込むから・・
0345デフォルトの名無しさん2012/03/26(月) 23:36:25.08
設定した気になってる
が 正解
0346デフォルトの名無しさん2012/03/26(月) 23:53:43.35
$timeout=90;
$soap=SOAP::Lite->proxy($url, timeout=>$timeout);
こんな感じでセットしてるんだけど、これでタイムアウトセットされてますよね?
0347デフォルトの名無しさん2012/03/27(火) 00:23:42.51
>>325
DBIやHTTP::Cookies::Mozillaで扱えたよ。
0348デフォルトの名無しさん2012/03/27(火) 01:09:13.84
>>347
おお。知っている人がいた。
まじありがとうございます。
0349デフォルトの名無しさん2012/03/27(火) 01:15:49.14
crypt関数は半角で8文字までのパスワードしか暗号化できませんが
半角で16文字までのパスワードを暗号化するには
substrで8文字ずつわけて、それぞれ暗号化して最後にくっつけるというやり方しかないんでしょうか?
0350デフォルトの名無しさん2012/03/27(火) 01:41:40.15
CPANでモジュールをバージョンアップしたい場合
アンインストールせずに普通に上書きで大丈夫ですかね?
通常の方法で大丈夫?
0351デフォルトの名無しさん2012/03/27(火) 08:21:14.94
>>349
Digestモジュールからsha1使ったら?

>>350
既存の環境壊したくなかったら適当なユーザランドにperlbrew + cpanminusしたら?
0352デフォルトの名無しさん2012/03/28(水) 13:04:38.17
>>310
ファイル名の末尾に投稿数をつければ良い

つーか1と2が連続していると仮定した場合(普通そうすると思うが)
その途中で鯖が落ちたらファイル1破損してね?
投稿数が合わなくなる云々以前の話になる
0353デフォルトの名無しさん2012/03/28(水) 15:32:53.34
return $table->{long}{$_} if defined $table->{$_};
0354デフォルトの名無しさん2012/03/28(水) 15:46:41.51
途中送信してしまいました。すみません。
say $table->{"key"} if defined $table->{"key"};

重複が気になるのですがもっと短く書けませんか?
0355デフォルトの名無しさん2012/03/28(水) 16:43:16.30
$table->{key} を何度も書きたくないだけなら変数に代入しちゃえばいいのでは。
{my $k = $table->{key}; say $k if defined $k}
ぜんぜん短くはなってないけど。
0356デフォルトの名無しさん2012/03/28(水) 16:44:45.32
a<>b<>c<>

みたいに記録してるデータを書き換えるとき $data = 'a<>b<>c<>'; として

($x, $y, $z) = split(/<>/, $data);
<処理($x = 'A'; など)>
$data = "$x<>$y<>$z<>";

みたいにやってるんだけど開発途中で

a<>b<>c<>d<>e<>f<>

みたいに追加したり

a<>d<>e<>b<>f<>c<>

みたいに挿入したりしたいが別の処理する状況で何回も同じのが出てくると修正に時間がかかる
(いちいち ($x, $y, $z, $r, $s, $t) = split(/<>/, $data); とか $data = "$x<>$r<>$s<>$y<>$t<>$z<>"; と書き換えるのが面倒)
なんか巧いやり方ありませんか?
0357デフォルトの名無しさん2012/03/28(水) 16:44:47.45
>>354
普通に代入に一票。
my $key = $table->{key};
say $key if defined $key;

お勧めしないperlっぽい何か。
defined and say for $table->{key};
0358デフォルトの名無しさん2012/03/28(水) 17:01:28.51
>>356
あのですね、
ここはおひとつ、配列というものをお使いになってはいかがでしょうか?

それか一行目に
name<>mail<>id<>date<>str
とか書く
あとはその一行目でハッシュうんぬん
0359デフォルトの名無しさん2012/03/28(水) 17:08:27.60
>>356
#!/usr/bin/perl
use strict;
use warnings;

my $target = $ARGV[0] || 'z';
my $fs = '<>';
my @field = split $fs, <DATA>;

while (<DATA>) {
  my %record;
  @record{@field} = split $fs;
  print $record{$target}, "\n";
}

__DATA__
x<>y<>z<>r<>s<>t<>
a1<>b1<>c1<>d1<>e1<>f1<>
a2<>b2<>c2<>d2<>e2<>f2<>
0360デフォルトの名無しさん2012/03/28(水) 17:49:30.32
普通はjoin使うね
0361デフォルトの名無しさん2012/03/28(水) 18:00:54.37
>>355,357
レスありがたいです。
definedがなければ以下の文でいけたので、これを基準に右側をこねくり回していたのですが、ダメでした。
say if $_ = $table->{"key"};
say if $_ = defined($table->{"key"}); #definedが1か""しか返さないのでダメ

左側で処理すればよかったのですね。このforの使い方、ラクダ本で見た記憶があります。
この様なものを欲していました。
defined and say for $table->{key};

チラ裏
say if defined($_ = $table->{key}); #これでもいけました
0362デフォルトの名無しさん2012/03/28(水) 19:36:33.33
凄い低レベルな質問で申し訳ないんですが、スクリプトを実行する度に実行結果を新しいファイル作成してログに吐き出すには、どうしたらいいんでしょうか。
ログローテーション見たいなのを想定しています。
0363デフォルトの名無しさん2012/03/28(水) 20:14:00.18
現在時間でもファイル名に与えたら?
0364デフォルトの名無しさん2012/03/28(水) 20:42:41.44
オレの勘によれば
ログローテーションをやってくれるそのものがCPANにある
1000ペリカ賭けてもいい
0365デフォルトの名無しさん2012/03/28(水) 20:47:45.42
このスレにも一過性のモダンPerl()を流行させようとする青尻君か。
長期に渡る保守を考えたらCPANなんかに頼らず自分で書かないと。
0366デフォルトの名無しさん2012/03/28(水) 20:52:22.95
www
use Encode; の代わりの何かをスクラッチから自作すんの?wwww
ガンバってねwww
プ
0367デフォルトの名無しさん2012/03/28(水) 21:08:24.28
おいおいwCPANまで否定すんのかよw
0368デフォルトの名無しさん2012/03/28(水) 21:10:53.78
CPAぁ〜〜〜N
CPAぁ〜〜N
人はぁ誰ぇ〜でもぉ〜
CPAぁ〜〜N
CPAぁ〜〜〜N
ひとつのぉ太陽ぉぉおおお〜〜〜
0369デフォルトの名無しさん2012/03/28(水) 21:18:20.24
CPANを否定するなんて、こっちは青鼻くんか...。やれやれだぜ。
0370デフォルトの名無しさん2012/03/28(水) 21:26:34.83
Jcodeで十分。
0371デフォルトの名無しさん2012/03/28(水) 21:37:01.79
いやさ
十分とかじゃなくてさ

Jcodeなど使わずにそれに類するものを
「後後の保守を鑑みて」自作する……ってんだろ?
0372デフォルトの名無しさん2012/03/28(水) 21:42:25.29
なにごともほどほどで
0373デフォルトの名無しさん2012/03/28(水) 21:54:07.64
Jcodeが嫌なの?それとも髭がいやなの?どっちなの?マギカは好きなの?
0374デフォルトの名無しさん2012/03/28(水) 22:01:40.42
素のPerlと標準モジュールだけで全て事足りるようになって
ようやく初心者卒業。
それぐらいは理解しようね、青尻くんたち。
0375デフォルトの名無しさん2012/03/28(水) 22:12:29.94
>>374
おまえ尻が青すぎw
0376デフォルトの名無しさん2012/03/28(水) 22:59:53.77
たとえば標準モジュールの例としては、
http://perldoc.perl.org/index-modules-A.html

・文字コード関係
Encodeモジュール
(Jcodeは×)

・日付関係
Time::Piece、Time::Seconds
(もろもろある日付モジュールは×)

・オブジェクト指向関係
Object::Accessor、Class::Struct

データベース関係(ファイル以外)は、何もありません。
0377デフォルトの名無しさん2012/03/28(水) 23:00:20.86
>>370
Jcodeは標準モジュールじゃない
0378デフォルトの名無しさん2012/03/28(水) 23:02:38.00
まぁお前ら。
俺の小話でも聞いて落ち着かないか
0379デフォルトの名無しさん2012/03/28(水) 23:10:29.55
小話、ワクワク、ドキドキ
0380デフォルトの名無しさん2012/03/28(水) 23:12:37.07
ガラパゴス標準をばかにする気だな、この洋かぶれが。
0381デフォルトの名無しさん2012/03/28(水) 23:15:21.18
CPANの無いPerl使うくらいならPythonやってる。
0382デフォルトの名無しさん2012/03/28(水) 23:15:58.14
モダンモダンいうならRubyやってる。
0383デフォルトの名無しさん2012/03/28(水) 23:17:05.01
あ、PHPは無い。無いわー。ごめんなー。
0384デフォルトの名無しさん2012/03/28(水) 23:17:59.00
小話はどうなった
0385デフォルトの名無しさん2012/03/28(水) 23:19:37.80
モダン冷ややかとCPAN否定はまるで別だけど、青尻くんには区別できないん
だろうな。
0386デフォルトの名無しさん2012/03/28(水) 23:21:02.57
はやく小話してくれないとかえって落ち着かないよ
0387デフォルトの名無しさん2012/03/28(水) 23:25:55.17
標準じゃなければモダンだろJcode
0388デフォルトの名無しさん2012/03/28(水) 23:38:54.10
ガラパゴスモダンってことで。うん、今いいこと言った。
0389営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 02:25:01.46
まあppmでいいな
0390営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 03:51:38.62
>>387
JcodeとJKをひっかけてるのか
なるほどこれが小話
0391営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:43:48.31
なんだこの名前は
Cスレのアレのせいかよ
0392営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:45:18.70
smalltalkはいいぞ
0393営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 11:22:59.60
【モダン推奨】スレ潰した奴が乗り込んできた模様
0394営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 12:26:19.05
も〜ダンナったら勘弁して下さいよー
0395営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 00:23:08.93
このままじゃ体がモダンわい
0396営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 05:19:38.56
ポストモダニズム
0397営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 22:08:22.81
perlで�@等のsjisの文字をutf-8にfrom_toで変換すると文字化けするんですが、
どうすればいいでしょうか?
0398営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 22:10:19.41
>>4 >>5 あたりに書いてある
結論としては:ンなモン使うなアホ
0399営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 22:12:17.81
>>398
勉強してみます。
普通の文字はちゃんと変換できるのが不思議です…
0400営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 22:27:24.82
www
フツーの文字じゃねーからそれwww
�@�A�B
0401営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 23:17:09.57
(1)とかに置き換えるように書こうと思っても、
utf8のみでは処理できない
0402営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 23:36:37.65
もういい、sjisで書くな。
0403営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 23:57:57.54
取り敢えずnkfを通すことで変換できました。
0404営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 00:12:33.35
そうは言っても、既に膨大なsjisの資産があるのだから、
今後1世紀はsjisの呪縛からは逃れられない
0405営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 00:19:40.57
オトナの事情もありますからね
0406営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 00:38:15.02
�@とかはshiftjisの範囲じゃない
cp932ならおk
0407営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 01:00:53.71
銀行の口座名義がカナしか使えないのは、100年経っても変わらない気がする
0408営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 01:02:31.72
Shift JISはJIS X 0208文字集合を利用するため、�@は機種依存文字。
Encodeはきっちり実装してるから、変換できなねえってヤツだね。

http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932
0409営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 01:05:00.03
Coroを使えば複数のファイルを監視できそうだ、という所まではわかったのですが
以下のような場合どう書けばいいのでしょうか?よろしくおねがいします。

use File::Tail;
use Coro;

for my $path(@paths){
my $file = File::Tail->new(name=>$path, tail_num=>0, maxinterval=>1, interval=>1);
while (defined(my $line = $file->read)) {
if( $line =~ /$regexp/ ){
warn "match! : $line";
}
}
}
0410営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 02:45:07.04
>>409
File::Tail::selectじゃだめなん?
0411営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 02:52:38.68
>>409
ファイルの監視とスレッドは全く別の問題。
そのコードはいろいろとその、マズい。

OSにも依るけどログを追っかけたいのならログはきちんとsyslogあたりに出して、
syslog.confに名前付きパイプでもくっつけて定期的に読みに行けばおk
0412営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 08:01:36.79
>>410
orz
完全に見過ごしてました…

>>411
ありがとうございます。syslogも含めていろいろ検討したいと思います。
0413営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 16:59:34.53
if(isset($a)){ print "SET"; }
else{ print "UNSET"; }

みたいなことやりたいんだけどどうすんのよ
0414営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 17:33:49.44
isSet($a)->printCheckString() ;
とでもなさればよろしいんではないでしょうかと提案いたしましょうか?

0415営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 17:43:20.25
>>413
if(defined($a) and $a){ print "SET"; }
else{ print "UNSET"; }

そもそもPHPのisset知らなかったんで間違ってるかも
0416営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 17:48:11.13
>>415
ありがとう。 and $a は別にいらんかった。 ありがとう。
0417営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 20:35:56.43
>>390
意味が分かりません。解説しておくんなましぃ。
0418営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 21:22:54.64
>>417
○○だろJK → ○○だろJcode
0419営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 22:11:55.07
>>413
my $str = 'foo';
print defined $str ? 'SET' : 'UNSET';

$aと$bは恐ろしい事にsortで使われる特殊変数だから、避けた方がいい。
0420営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 22:54:51.04
相当気を配る必要があるな
0421営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 22:59:41.11
この $a と $b は普段使うなって言う奴が必ずいるけど、根拠あるの?
実際に sort とからんでまずいことになるケースって具体的にどんな時?
0422営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:02:08.07
どうせ$aと$bって$a <=> $bか$a cmp $bでしか使わないよな
複雑になっても、$hash{$array[$a]} <=> $hash{$array[$b]} とかになるだけで
代表項とソート順だけ指定する方がよっぽどスマート
0423営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:16:01.97
一種の戒めじゃあないのかねこりゃ
$aや$bなんて安直な変数名つくんなよアホ!!
ってな、ありがたーいお言葉の表れだよ
0424営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:17:07.67
>>421
use Data::Dumper;

my $a = +{ num => 2 };
my $b = +{ num => 1 };
my @array = ($a, $b);

#
# あれやこれや長々と書いてて$aと$b宣言したの忘れてる
#

print Dumper sort {$a->{num} cmp $b->{num}} @array;
__END__

use diagnostics;
しておけば詳しいエラーが得られる。
コードが整然としてればまず問題ないけど、そんな機会はまれでなぁ・・・
0425営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:48:25.74
>>424
use strict; つけときゃエラーで弾かれるな。
0426営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:50:49.69
>>425
違った。use strict; つけてなくてもエラー出るわ。
0427営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:53:23.28
>>425 >>426
ほんとに?
うちの環境だと両方出ないから、やっぱ気をつけた方がいいんじゃない?
0428営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:56:10.74
>>427
Can't use "my $a" in sort comparison at test.pl line 12.
だって。line 12は「print Dumper ...」の行。perlは5.10.1 (cygwin)
0429営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 00:05:16.31
>>428
あぁそれは出る。

でもuse strictされてなくてグローバル変数あっちゃこっちゃ飛び交ってたり
変数名が変数からモリモリ作られてたら、頭抱えるだろ。
「テストもねぇ仕様もねぇ……とりあえず$aに結果入れてダンプ取るか」
で前任者が$aほったらかし。

考えたくも無いけど、今俺の目の前でそんなコードがのたうち回ってる。
0430営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 00:14:00.96
>>429
それはお気の毒様です。
0431営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 00:20:13.57
モジュール作る時日本じゃModule::Setupが幅きかせてるけど、Dist::Zillaってどう?
誰か使ってる人居る?
0432営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 00:24:28.34
Dist::
じゃなくて
God::
だったら使ったカモナー

0433営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 10:55:33.11
use strict; use warnings;
my $unko{chinko}=1;

これがエラーになるのですが、どうしてでしょうか
syntax error at line 2, near "$unko{chinko"
Execution aborted due to compilation errors.
0434営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 11:18:10.98
>>433
エラーにならない書き方 ならわかるが
どうしてエラーになるのか は処理系内部の話になるんで中途半端な習熟レベルの俺にはちょっとわからない
0435営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 11:30:29.12
>>434
そう、そこが知りたいんですよ
0436営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 11:32:14.20
>>434
すぐ答えるのも勉強にならない。
その変数が何かわかって使ってるのか?
どこで手に入れた知恵だ?
0437営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 12:43:34.87
>>433
my $hoge[0]=1; #syntax error

と同じことじゃないの?
0438営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 13:25:03.24
>>437
違います
0439営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 13:27:51.37
$unko{'chinko'}=1;
print $unko{'chinko'},"\n";

これはなぜかエラーにならない
myをつけるとエラーになる
なんでだろう
0440営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 13:29:59.82
myはスカラー変数だったらスカラー変数に my $hoge;
配列だったら配列に my @array;   こうはだめ→my $array[0] = 1;
ハッシュだったらハッシュにつけろってこと my %hash; こうはだめ→my $hash{'key'} = 1;
0441営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 13:33:44.14
>>433
myは変数そのものをローカル化できるけど、配列とかの一部のローカル化はできない。

前者がやりたいなら
my %unko;
$unko{chinko} = 1;

後者がやりたいなら
local $unko{chinko} = 1;

ちなみにmyとlocalは他にも微妙に違いがあるから、普段はmyを使うべし。
0442営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 13:34:21.09
ごめん、言いたいことの半分は>>440と同じw
0443営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 13:53:43.39
質問者じゃないけど、perl初学者の俺には勉強になった。
0444営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 14:17:29.95
なお宣言と一部初期化を同時にやりたい場合は
my %unko = (chinko => 1, manko => 2);
など。
my %unko = {chinko => 1, manko => 2};
ではないので注意。
04454332012/04/03(火) 15:21:13.77
すごくためになった
うんこちんこ連呼させてごめんね
0446営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 15:26:53.12
use strict; use warnings;
my %unko = ( chinko=>"manko" );
print $unko{chinko},"\n";

エラーがなくなった! たぶん理解できた。ありがとう。
0447営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 19:37:34.36
〜うんこちんこまんこで覚える〜 Perlプログラミング
0448営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 19:45:03.18
最後に真珠がきてるのがミソだな
0449営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 19:46:36.12
ミソだと最後がうんこになっちまうだろ
0450営利利用に関するLR審議中@詳細は自治スレへ2012/04/04(水) 00:08:30.18
>>438
perly.y を見れば >>437 が正しいことが分かるよ!
myterm (Things that can be "my"'d) の定義ね。
0451営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 16:09:21.06
>>424のリファレンス宣言に付いてる先頭の + ってなんでしたっけ
昔見た覚えはあるけど思い出せないので教えてください
0452営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 17:39:46.32
>>451
ぶっちゃけて言うと「これはサブルーチンじゃなくてハッシュ(へのリファレンス)だよ」とするためのおまじない
これがついてないとエラーになる場合もあり
0453営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 19:20:22.35
>>452
無名サブルーチン sub {} の sub が省略されてるとみなされる場合があるって話でしたっけ
みなされるケースが思い出せないけどどうもありがとう
0454営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 21:17:41.99
サブルーチンじゃなくて、ブロックだ
0455営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 23:47:48.18
>>453
perlは"{...}"で表現できることが多すぎる。
プロトタイプ宣言でサブルーチンの引数がCODEへのリファレンスであると指示されている場合、
"sub"の表記がなくてもサブルーチンとして解釈される。Try::Tiny然り。
不用意なバグを埋めこまないよう、その部分を見ただけではBLOCKかHASHREFか判断つかないような場合
+{...}と表記してハッシュであることを明示する人は多い。
perldocにはBLOCKの場合に{;...}として表記する、なんてもあるけど、こっちはあまり見かけないと思う。
どちらかというとBLOCK内でreturnを省略せずに書いたほうが見た目に受けがいいらしい。
0456営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 00:30:42.90
+{...} という言語外の表現でハッシュを示すのは
Javaのようにクソ長い言語的表現でそれがハッシュであると示すよりも
もっと効果的だと思う

記号の形状から判断するところ、perlでは自然言語外での記号からの想起や表象を
上手く使っている
0457営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 08:07:24.97
> perlでは自然言語外での記号からの想起や表象を
> 上手く使っている

例えば?
0458営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 10:32:16.40
ヤダヤダ演算子のことか・・・!
0459営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 10:34:29.38
ハッシュと配列を区別しちゃったことは失敗だと思う
0460営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 12:33:00.62
括弧記号が() [] {}くらいしか無いのが諸悪の根源か
多バイト文字圏で開発されていれば【】『』《》なども使い分け出来たろうに
0461営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 12:41:31.16
>>460
それぞれが具体的にどういう意味かすんなり理解できるならいいけどね
あんたも含めて
0462営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 12:56:27.61
《花束も買ってあったりして》
0463営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 16:32:27.29
日本人の開発したRubyがそうなってねえじゃねーかよ!!1
0464営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 16:41:23.53
(・ω・)

実際こうかければ簡単だよな
0465営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 17:26:33.20
(@益@ .:;)ノシ
0466営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 18:08:15.84
AAで表現する
0467営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 19:13:05.38
AAになるプログラムってあるのかな
0468営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 19:14:46.09
>>464-467
つjavascript
0469営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 21:38:28.71
>>467
週末はビールでも
http://codepad.org/rjeLxgnp
0470営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 21:49:25.06
つか記号使う理由有るの?

たとえばハッシュなら%dataとかせずに、
hDataってやればいいだけではないのか?
0471営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 22:05:11.00
ハンガリーにお帰りください
0472営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 22:22:04.47
でもさ、ハンガリーと何が違うの?
0473営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 23:16:46.10
>>472
なにも違わないよ
0474営利利用に関するLR審議中@詳細は自治スレへ2012/04/06(金) 23:43:01.91
やっぱりそうなのか。勉強になりました。
0475営利利用に関するLR審議中@詳細は自治スレへ2012/04/07(土) 00:30:40.12
不満ならRubyのように自分で新言語作ってみたら?
0476営利利用に関するLR審議中@詳細は自治スレへ2012/04/07(土) 01:01:15.04
シジルを使うのはネームスペースを確保するため、かな。
バージョン上がってキーワードと変数名がバッティングでもして
コンパイル通らないとかなったら泣ける。
0477デフォルトの名無しさん2012/04/08(日) 12:05:16.86
だとすると & はなんで省略してよくなったのかが説明を要する。
ちょっと納得できない。
0478営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 13:33:42.91
>>476
変数も余裕でバッティングするよね
0479営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 13:44:54.30
ラクダ本の第4版って3版とだいぶ違う?
0480営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 13:57:02.92
sub if とかふつうに定義できるし、使えるから、いいんじゃないの。
0481営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 14:23:49.13
質問です。

下記をそれぞれ実行したときに、

while (1) {
#改行されない。
print "\n", last;
}

while (1) {
#改行される
print ("\n"), last;
}

となったのですが、それは何故でしょうか?
自分の予想では、どちらも改行後、ループを抜けると思っていたのですが。
お手数おかけしますが、よろしくお願いします。
0482営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 14:42:17.15
>>477 >>478
自分がコントロールできる範囲かどうかがポイントなんじゃないの?
アンパサンド無しで括弧も無しの裸のサブルーチン呼び出しはあらかじめそれが定義されている場合にだけ有効。

他人と同じスコープ共有してて変数名がバッティングするようなら
単にチームのコミュニケーションが不足してるか
安易にスコープ切れないマズいプログラムのせいだろ。
これは言語の設計とは関係ない。

例えばもしList::Util::shuffleがデフォルトになって変数にシジルがついてないと結果が変わってしまう。

use strict;
use warnings;
use List::Util qw/shuffle/;
my @shuffle = qw/0 93 2 3 5 6 2 1 8/;
print 'キーワードになるなんて聞いてないです' unless shuffle;
0483営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 14:46:37.02
print "\n", last;
は
print("\n", last);
と一緒
0484営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 15:24:32.21
>>483
解答ありがとうございます。

といっても、まだよくわかっていないです。
例えば、
print ("1", "2");
とすれば、
「12」と表示されますよね。

printは、制御文が優先的に処理されるということでしょうか?
0485営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 15:35:23.91
print (3+5, 10+2, "hoge");だとまず
3+5が評価され8,
10+2が評価され12
"hoge"が評価され"hoge"
それら2つがprintにわたって812hogeが出力される。
括弧で囲まれた中の引数が評価されてから出力、と言う流れになる。

print ("\n", "hoge", last);の場合も同じく中の引数がまず評価されていく。
"\n"が評価され"\n"
"hoge"が評価され"hoge"
次にlastが評価されるがこれは残りの処理を飛ばし、while自体から脱出する効果を持つので
printはされない。

print ("\n", "hoge"), last;は
print("\n", "hoge"); last; と殆ど同じ。
なのでprintが行われ、次にlastが行われる。

セミコロンで区切る場合とカンマで区切る場合の違いは代入の時の挙動。
カンマで区切ると左から順番に評価されて行って一番右の値が代入される。
my $i = 3+5, 10+2;
print $i; #=> 8が出力される。
0486営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 15:53:17.10
>>485
回答ありがとうございます。

>次にlastが評価されるがこれは残りの処理を飛ばし、while自体から脱出する効果を持つので
>printはされない。
なるほど、てっきり「last」の前の文が評価されていないと思い込んでいました。
評価はされるが、printされる前にループを抜けてしまうんですね。
勉強になりました。ありがとうございます。

>左から順番に評価されて行って一番右の値が代入される。
右の値ではなく、左の値の間違いでしょうか? (一応確認です)
0487営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 16:05:50.07
>>479
>ラクダ本の第4版って3版とだいぶ違う?
なんとも言えない。基本的には追記されているわけだけど。。。
ばっさりとやってしまった部分もある。
バージョン間の互換性のことを意識し始めた様子はうかがえる。
0488営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 18:56:28.93
>>486
> my $i = 3+5, 10+2;
> print $i; #=> 8が出力される。

カンマ演算子は代入演算子より結合順位が低いので、上記を冗長に書くと (my $i = 3+5), 10+2; になる。
当然$iには3+5が代入されるから8になる。

ちなみに my $i = (3+5, 10+2); って括弧でくくると、今度はリスト(〜)をスカラーコンテキストで評価することになるから
その場合は最後の要素が返るので $i には10+2が代入されるよ。


話は変わって Perlgolf Historyネタなのですが、「10桁ゼロフィルで出力する wc -l コマンドを作れ」というお題で、最短コードが
#perl -p
}{$_=$.+1e9.$/^v1
らしいのですが、最後の $/^v1 ってのがどうにも理解できず。
$/はデフォルト値が"\n(0x0a)"で、v1とxorしているらしいけど、v1って何なのかがさっぱり...
0489訂正2012/04/08(日) 19:00:03.77
> 上記を冗長に書くと (my $i = 3+5), 10+2;
正しくは my ($i = 3+5), 10+2;

myのスコープ範囲はずれて消えちゃってました
0490再訂正2012/04/08(日) 19:01:42.36
my $i;
($i = 3+5), 10+2;

何度もスマン 言いたいことは上記
0491営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 19:13:22.52
>>488
http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Version32Strings
0492営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 19:46:10.89
$_ = (($. + 1e9) . "\n") ^ "1"
0493営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 19:55:07.40
あ、"1" じゃなくて "\1" ね
0494営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 21:01:57.48
}{
は何?
0495営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 21:14:02.18
perl -pe 'print 1'
↓
while ($_ = <>) { print 1 }

perl -pe '}{ print 1'
↓
while ($_ = <>) { }{ print 1 }
04964882012/04/08(日) 21:17:56.82
>>491-493
ありがとう、v-文字列ってのをはじめて知りました。すっきり。
0497営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 21:19:34.61
>>495
ナルホド…、thx
でもwhileのループボディーを空{ }にするのは何のためだろ。
行数だけを数え上げるために行を読み捨てていくためでおk?
0498496,4972012/04/08(日) 21:29:58.49
foreachの最適化の副作用を利用して↓でも良い気がするけど…
(0fill処理は略)

#perl
1 for <>; say $.
0499営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 21:34:41.98
>>488
>>489
>>490
納得しました。(しばらく引っかかりそうではあるけれどorz)
ありがとうございました。
0500494,4972012/04/08(日) 21:39:16.06
>>498
間違えた、オレ494,497だた。
10桁ゼロフィルは$#を設定するだけで出来ないものかな…
0501494,4972012/04/08(日) 22:05:17.73
オレはこれでいいや
$#="%010g";1 for<>;say $.
0502営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 22:05:30.63
あー>>495はちょっと不適切だったな。
-p と }{ を使うことのメリットはその短さと、$_ の内容が最後に print されること。
具体的にどうしてそうなるかは自分で -MO=Deparse とかして見てくれ。
あとは単純に
()=<>;print$.+1e9.$/^v1
とかよりも、-p をつけて
}{$_=$.+1e9.$/^v1
とするほうが短い(shebangやスイッチをどう数えるルールか知らんが)ので勝利ってことでしょう。
ちなみに say は最短でも use 5.01; とかしないと使えない(ワンライナー以外で -E は不可)のでゴルフではまず役に立たない。
0503営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 22:24:49.59
>>502
基本的にシェバング行はカウントしないけど、
シェバングにオプションも含める場合は、オプション前の空白からカウントするルールみたいです。

一応ルールとか当時の記録とか諸々まとめてあるPDF(5MB弱)があるので貼っとく。
ググればすぐだけど。
ttp://terje2.frox25.no-ip.org/perlgolf_history_070109.pdf

今回のお題はp.18に、当時の記録はp.25くらいに載ってました
0504営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 22:26:12.07
>>502
すごいな・・もはや顔文字にしか見えない ^v1
0505営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 23:41:54.29
use 5.010;
0506営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 01:10:31.02
だから言ってんじゃねーかよ
perlは自然言語の単語以外の表現で
意味を表してるって
0507営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 02:08:29.75
perlに限らずともコンピュータ言語はみな人工言語なわけで...
0508営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 11:50:38.28
while(<>)
と
while(System.in.read)

どっちが良いんだよwww
ダイヤモンドのかたちで標準入力だって意味をくみ取ってるんだろwww

人工言語とかの話じゃねーからさ、
アホちゃんww
0509営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 11:59:13.73
どっちが良いかって聞かれたら後者かなー。
0510営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 12:06:46.05
}{
こういった記号はその意味を調べるのが大変だから勘弁してほしいよなあ。
perlはこんなのが多すぎ。
0511営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 12:07:38.92
>>508
<> がシェルの $ foo < bar > baz にちなんでるかもしれないってことか
Perl知ってからいい加減経つけど全然気づかなかった
0512営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 12:08:30.38
>>511
だがしかしそれがいい。一回わかってしまえば便利だし

だらだら書かなくちゃいけないのなんて入力補助ないと無理
0513営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 12:49:22.02
そう。だらだら書かなくていいのがPerlの美点であり利点なんだ。
>>509 みたいのはPerl向きじゃない頭なんだろうね。
もっと自分に合った言語を探した方がいいね。
0514営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 12:54:28.12
while (line = System.in.Read) ならいいけど
while (System.in.Read) はやだな。中途半端すぎる
0515営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 13:42:31.93
<>が嫌ならreadlineを使えばいいじゃない。
print while readline;
0516営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 18:23:05.38
>>510
それは裏技的に使ってるだけで、普通は使わないだろ。
IOCCCのプログラムを見て、C言語をdisってるようなもの。
0517営利利用に関するLR審議中@詳細は自治スレへ2012/04/09(月) 23:47:19.39
while ブロックの終りの } と新規ブロックの始まりの { を新たに
挿入しただけだから、}{ で調べようがある訳ない。

perldoc perlrun で -p とか -n の項を読めば
「あんたのプログラムはここに来る」って明言されてる。
具体的に書くと、-p の場合概要は、
while(<>){
 # あんたのプログラムはここに来る
}
continue { print $_ ; }

だから、 perl -pe ' } N:{ $_=$.+1e9.$/^v1' (便宜上 N: ラベル付き)とすると、
そのまま解釈されて、
while(<>){
} # <- おいらのプログラムはここに来た
N: { # <-
 $_=$.+1e9.$/^v1 ; # <-
}
continue { print $_ ; }

結果、
continue ブロック無しの while ブロックと
continue ブロック付き N ラベルのブロック
が書かれていると判断される。それだけの話。

perldoc perlrun まで辿り付けないのなら御愁傷様。
0518営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 00:33:53.62
>>513
自前のサーバ運用や学問でやるならともかく、
開発環境を自分で決められるシーンってそんなに多くないんだよなw
0519営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 00:41:07.38
>>518
「貴様がメモ帳以外のエディタをインストールしたせいで社内にウイルスがうんたらかんたら」
0520営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 00:42:53.44
コーディングスタイルは合わせるからエディタぐらいは好きなの使わせてほしい。
0521営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 01:16:56.93
ブラウザ上で動くエディタがあればいいのでは
0522営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 01:35:56.51
jslinux?
つくりゃつくれそうだな。
0523営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 05:09:35.45
ハッシュベースのオブジェクトの属性を変更したときなどにフックすることってできるでしょうか。
$obj->{foo} = 'foo';
とアクセサを使わず代入したときに↓のようなメソッドを呼び出すイメージです
sub {}= { my ($self,$key,$value) = @_; $self->{$key} = ucfirst $value; }

無理矢理考えてみたのは以下のようなtieを使った実装ですが・・・
package Test;
sub new {
my ($class) = @_;
tie my(%tied), 'MyTie';
bless \%tied, $class;
}

package MyTie;
use Tie::Hash;
use base qw(Tie::StdHash);
sub TIEHASH { bless {}, shift }
sub STORE { my ($self,$key,$value) = @_; $self->{$key} = ucfirst $value; }

package main;
my $obj = Test->new;
$obj->{foo} = 'foo'; #=>'Foo'

インスタンスにblessしたタイ変数(ハッシュ)に別のハッシュにblessされたオブジェクトがtieされてるので
なんか余分なオマケがくっついて来ている感じが否めません。
逆に、オブジェクトにblessしたオブジェクトと同義と考えるとつじつま合ってる気も。
どうでしょうか。
0524営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 09:51:34.96
DBIを使用しています。
同じフィールド名が多いのですが、表結合する際に同じ名前が上書きされないようにするいい方法はないでしょうか?
いちいち〜AS〜とか書くのは面倒なので、自動でテーブル名で修飾する方法とかあれば助かるのですが。
0525営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 14:26:26.53
>>523
package _Test;
use Tie::Hash;
use base 'Tie::StdHash';

sub new {
my ($class) = @_;
tie my %hash, $class;
return bless \%hash, $class;
}

sub STORE { $_[0]->{$_[1]} = ucfirst $_[2] }

オブジェクト指向Perlマスターコースに載ってるやり方だけど、
適切かどうかはわからない。
0526営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 14:32:56.39
tie my (%hash), $class;
警告が出るから、こうか。
0527営利利用に関するLR審議中@詳細は自治スレへ2012/04/10(火) 23:21:06.33
>>525
ありがとうございます。
実は同じ実装を当初考えてみたのですが、同じTestインスタンスが2つ存在する形になることから
機能を分離して、公開されたメソッドを備えたTestオブジェクトと、
tieに特化したオブジェクトに分けようと考えた次第です。

でも、同じような実装例が信頼できる書籍に載っているというのは大変参考になります。
当面>>523の路線で進めてみようと思います。
0528営利利用に関するLR審議中@詳細は自治スレへ2012/04/11(水) 01:10:42.60
>>524
なにか抽象化のためのライブラリを使用することになんだろうけど、
コードがガラッと変わってしまったり、joinするようなコードでは結局
別名指定のSQL断片などを書くようなことになりがちじゃないだろうか。
個人的には自前での別名定義に慣れた方がいいような気がする。

あと別の考え方では、joinせずそれぞれのテーブルに対して複数のクエリを実行してってゆうのも案外珍しくないよ。
なんだかんだテーブル結合はコスト高で、えてしてインデクスがうまく使われなかったりってこともあるから、
結合クエリより効率がいい場合も少なくない。
コードが単純になる場合もあるし、逆に多少の面倒が増える場合もあるけど、
ORMに慣れてたりすると発想自体はさほど抵抗ないんじゃないかな。
0529営利利用に関するLR審議中@詳細は自治スレへ2012/04/11(水) 10:50:46.62
>>528
ありがとうございます。
考えさせられることが多く大変勉強になります。
0530デフォルトの名無しさん2012/04/12(木) 02:30:47.13
disp.cgiは
print "<TABLE>";
print "<TR><TD>$title</TD></TR>";
print "<TR><TD>$honbun</TD></TR>";
print "</TABLE>";
のようになっておりますが

これをHTML形式にするには
make_html.cgiで
open(OUT,">test.html");
print OUT "<TABLE>";
print OUT "<TR><TD>$title</TD></TR>";
print OUT "<TR><TD>$honbun</TD></TR>";
print OUT "</TABLE>";
close(OUT);
としなければならないのでdisp.cgiのデザインを変える場合make_html.cgiもまた
作り直さなければならない手間がかかるわけですが
disp.cgiを変更しても、make_html.cgiを変更しなくてもいい方法はないんでしょうか?
0531デフォルトの名無しさん2012/04/12(木) 03:18:20.85
print する前に

close STDOUT;
open STDOUT, ">poo.html";

とか書く
0532デフォルトの名無しさん2012/04/12(木) 03:24:34.89
それは1引数selectでよくねと思ったがHTML::Templateを使う
0533デフォルトの名無しさん2012/04/12(木) 03:47:51.91
setter/getter を実装するのに、個別にせこせこ書く代わりに
一括指定する方法って何かありますか?

use Rubyish::Attribute; して attr_accessor を使えばその通りなんですけど、
あまりにもそのまんまなので…。
0534デフォルトの名無しさん2012/04/12(木) 03:57:10.58
Class::Accessor系
Moose系
0535デフォルトの名無しさん2012/04/12(木) 04:53:51.95
>>533
こっちの質疑応答が参考になるかも
http://toro.2ch.net/test/read.cgi/tech/1327110999/172-174

↑はAUTOLOADでやってるけど、パッケージグローバルでやればいいし。
0536デフォルトの名無しさん2012/04/12(木) 09:45:55.96
/じゃない記号で正規表現したいんだけど、どうすりゃいいの?
0537デフォルトの名無しさん2012/04/12(木) 10:43:04.43
s|(\d+?)|$1\t|;
とかすりゃあイイんじゃねーでしょうか
0538デフォルトの名無しさん2012/04/12(木) 10:57:38.25
>>537
print "unko\n" if( "chinko" =~ /n/ );
はちゃんとunko出るけど

print "unko\n" if( "chinko" =~ |n| );
はunkoが出ないです。
0539デフォルトの名無しさん2012/04/12(木) 10:59:30.30
>>538
m|n|
0540デフォルトの名無しさん2012/04/12(木) 11:04:20.86
>>539
ありがとう! unko出ました!
0541デフォルトの名無しさん2012/04/12(木) 14:19:22.90
くせえ
0542デフォルトの名無しさん2012/04/12(木) 17:41:17.03
m|| の他に m{} m[] m<> m() m!! m"" m## m$$ m%% m'' m-- m== m.. m,, m^^ m~~ m\\ m?? m%% m`` なども使えるぞ
0543デフォルトの名無しさん2012/04/12(木) 17:55:52.36
ファイルハンドルを引数として渡すにはどうしたらいいんですか?
open(OUT,">test.dat");
&test(OUT,"テストです");
close(OUT);

sub test{
my($handoru,$str) = @_;
print $handoru $str;
}

これでいいんでしょうか?
0544デフォルトの名無しさん2012/04/12(木) 18:23:35.71
>>534-535
ありがとー、さすがにRubyshではゲゲゲと言われそうだったので。。
0545デフォルトの名無しさん2012/04/12(木) 19:11:59.39
>>530
変数に貯めといてまとめてから書き出せよ
0546デフォルトの名無しさん2012/04/12(木) 19:21:45.09
>>543
おkです
ほんの少しだけ今風にするならこんなところかな

----------
open(my $out,">test.dat");
test($out,"テストです");
close($out);

sub test{
my($handoru,$str) = @_;
print $handoru $str;
}
----------

# ↑のコードでtestの定義内に「print ref($out)」を書くと「GLOB」と表示される
# myなのにサブルーチン内から参照できるんだ…って自分なんか勘違いしてるのかな?
# ちなみにsub test{}を最初に書くと「GLOB」は出てこない
0547デフォルトの名無しさん2012/04/12(木) 19:23:24.00
あと>>543も>>530もそうだけど
「ファイルハンドルにはOUTとかのベアワードを使え」って今時Perlの参考書に書いてあるものなのかな?
0548デフォルトの名無しさん2012/04/12(木) 19:51:52.70
>>543
*OUT

>>546
今風にすると言いながら3引数openにしてないのが半端
あとおまえはレキシカルスコープを根本的に理解していない
05495462012/04/12(木) 19:54:08.51
>>548
全ておっしゃるとおりです
ありがとう教官
0550デフォルトの名無しさん2012/04/12(木) 19:55:38.80
いつものことだが、まともな回答示せないのにあげ足だけとる奴がいるね
0551デフォルトの名無しさん2012/04/12(木) 20:07:15.09

このようにすれば
普通の表示とHTML化両方できる

sub print2{
my(*filehandoru,$str)=@_;
if(*filehandoru eq ""){
print "$str";
}
else{
print *filehandoru $str;

}

}
0552デフォルトの名無しさん2012/04/12(木) 20:10:41.10
handoru()
0553デフォルトの名無しさん2012/04/12(木) 20:10:53.48
被ってるのを承知で。
strict 通らんのに OK なんて答えるなよ。
×&test(OUT,"テストです");
&test(\*OUT,"テストです");
0554デフォルトの名無しさん2012/04/12(木) 20:12:01.42
553は、>>546宛。
0555デフォルトの名無しさん2012/04/12(木) 21:25:41.63
>>549
そのへんは「型グロブ」っていう、太古の昔の仕様を引きずってるからね
*FH 周りで苦しむよりも、大人しく use IO::File; を使うことを勧めるよ

詳しくはEffective Perlって本を買うといい
0556デフォルトの名無しさん2012/04/12(木) 21:46:53.80
>>543
Effective perl (p113-114) より。
見ての通り、Perl4時代の遺物だけど、どうしても生のファイルハンドル使いたいなら。
この本を買ってバッドノウハウを得るか、あるいはPerl以外の言語に乗り換えることを勧めるよ。

-------------------------
sub funct{
local *FH = shift;
print FH "Hello";
}
open FILE, ">foo.txt;
&funct *FILE;
0557デフォルトの名無しさん2012/04/12(木) 21:54:13.46
Effective Perl には、&funct *FILE{IO}; して、my $fh = shift; するって
方法も乗ってるけど、そこまではやめてくれって感じ。
IO::File; 一択だね。
0558デフォルトの名無しさん2012/04/13(金) 12:48:15.95
#って、行頭と正規表現と文字列とコメント以外で使う事ってあるの?
0559デフォルトの名無しさん2012/04/13(金) 12:55:41.54
my @array;
my $n = $#array;

数学的には、#は集合の位数(元の個数)を表す
それの流用だろな
0560デフォルトの名無しさん2012/04/13(金) 13:51:53.60
ラリー・ウォールさんなんでそんな事知ってるの
0561デフォルトの名無しさん2012/04/13(金) 14:33:27.23
そりゃあmapなんていうスペシャルな仕組みを仕込む人だ
知ってんじゃねーの?

集合AからBへの写像(mapping) f:A→B があるとき、
それをperlでそのまま書けばこうだもん

@B = map {f($_)} @A;
0562デフォルトの名無しさん2012/04/13(金) 16:56:25.24
$#array は the # of the last index じゃないの
数学とかしらないけど the # of と書いて the number of と読ませるのわりとよく普通の英文で見かける
0563デフォルトの名無しさん2012/04/13(金) 17:41:45.78
KshやBashだと${#array[*]}で要素数が取れるから、その流れじゃないだろうか。
0564デフォルトの名無しさん2012/04/13(金) 22:45:42.26
100% ・・・ ひゃくパーセント と読むだろ?
#1 ・・・ ナンバーワン と読むだろ?
0565デフォルトの名無しさん2012/04/13(金) 22:46:11.51
#(ナンバーサイン)を一体何の記号だと思ってるの?
0566デフォルトの名無しさん2012/04/13(金) 22:47:32.10
半音上げる記号
0567デフォルトの名無しさん2012/04/13(金) 22:48:18.16
ンだから
そのナンバーサインはいつ出来た
なんでそんな形になった
っちゅー話だよ
0568デフォルトの名無しさん2012/04/13(金) 22:53:32.27
スレチレス
0569デフォルトの名無しさん2012/04/13(金) 22:55:24.91
答えられない低能は都合よくスレチとか持ち出すよな
>>568オメーだよアフォ
さっさと答えろks
0570デフォルトの名無しさん2012/04/13(金) 22:57:32.85
自分で答えられないくせに偉そうだよなぷ
0571デフォルトの名無しさん2012/04/13(金) 23:03:57.86
と答えられない奴が言っています
0572デフォルトの名無しさん2012/04/13(金) 23:07:29.08
オイオイ
低能ほどよくよくキャンキャン吠えるよな
さっさと答えろks
0573デフォルトの名無しさん2012/04/13(金) 23:18:45.30
>>567

いつできたも何も昔から使われてるだろ。

No1はナンバーワンと呼ぶ。
#1はナンバーワンと呼ぶ。

一般常識にケチつけられても困る。

http://www.google.co.jp/search?q="%231+Dad"&num=20&hl=ja&tbm=isch
0574デフォルトの名無しさん2012/04/13(金) 23:19:02.81
Perl文法ならLarryに聞けよ。
ナンバーサインの成り立ちならスレ違い。
0575デフォルトの名無しさん2012/04/13(金) 23:23:29.90
常識で押し切ろうとするアホが居るから
話がややこしくなるんだよ
さっさと答えろよks
スレチとかほざいてるのも
答えられないから口をつぐみましょうてな
無能だろ
0576デフォルトの名無しさん2012/04/13(金) 23:34:24.28
はぁ?
子供が、お父さんナンバーワン!っていうときに
#1 DADっていうだろ。

小さい子供でも知っているナンバーの記号を
ナンバーに使うのは当たり前だろ。
0577デフォルトの名無しさん2012/04/13(金) 23:38:18.93
まだそういうクソをうんぬん言ってるのか
さっさと答えろよ
お前はそういうやりとりも理解できない低能かよ
ks
0578デフォルトの名無しさん2012/04/13(金) 23:41:04.34
どうしてナンバーサインはああいう形に
なったかを知りたいの?
最初に作った人に聞けよ。

コンピュータが出来るよりも前の話だ。
0579デフォルトの名無しさん2012/04/13(金) 23:42:10.56
例えばドル記号はなんでSに縦線が入った形をしているのか?
なぜナンバー記号は、あんな形をしているのか?

文字と記号の歴史について調べればよい。
0580デフォルトの名無しさん2012/04/13(金) 23:45:49.93
だから>>564とか>>565とかの
何も考えてないし何も知らない低能の相手すんのは疲れんだよ

#にナンバーの意味が出来たのは
数学とかで使われ出してからとかだったら
ハナシが逆になるだろ
それも分からんのか

マジでアホしかいねーのか ここ
0581デフォルトの名無しさん2012/04/13(金) 23:49:07.08
一番左、ナンバーって書いてあるんだからな?w
http://virtuemart.net/documentation/User_Manual/figure/img036.png
0582デフォルトの名無しさん2012/04/13(金) 23:50:09.96
>>580
numberって単語が長いから
#って記号ができただけの話だろ。
0583デフォルトの名無しさん2012/04/13(金) 23:53:14.47
>>581
オメーは話が分かってない低能だな
口はさむなks

>>582
ようやくデキのいい答えがきたじゃん。
いいよ上出来だよお前。
俺なら答案に95点つけてやるよ。
05845822012/04/13(金) 23:55:11.70
>>583
あ、そんなことも分からなかったんだ?

記号ってのはそういうものなんだよ。
0585デフォルトの名無しさん2012/04/14(土) 00:00:21.15
>>584
笑わせんなよwww
さっさとあと5点分埋めろよwww
期待してんゾw
0586デフォルトの名無しさん2012/04/14(土) 00:01:21.62
>>585
じゃあ代わりにお前が$はドル記号なのかを答えてみ。
俺が95点だ。さてお前は俺を超えられるかな?
0587デフォルトの名無しさん2012/04/14(土) 00:01:41.31
久々の忍者降臨?
0588デフォルトの名無しさん2012/04/14(土) 00:03:41.23
無知の知だよバーカw
俺は知らねーからてめぇらが答えてればいいんだよw
0589デフォルトの名無しさん2012/04/14(土) 00:05:18.34
知らないのに点数をつけられるとはこれイカに
0590デフォルトの名無しさん2012/04/14(土) 00:06:05.71
じゃあ0点だな。

いくら開き直ってテストで知らないと書いたところで
点数はもらえない。
0591デフォルトの名無しさん2012/04/14(土) 00:08:35.60
なんということだ、ここは試験場だったのかー
0592デフォルトの名無しさん2012/04/14(土) 00:11:02.11
> 俺なら答案に95点つけてやるよ。

答案らしいよw
0593デフォルトの名無しさん2012/04/14(土) 00:13:18.69
いい加減他でやれ
0594デフォルトの名無しさん2012/04/14(土) 00:15:08.61
#をナンバーと呼ぶようになった由来を言わないのが悪い
0595デフォルトの名無しさん2012/04/14(土) 00:16:18.02
>>594
コンピュータと関係ない。
大昔に誰かが決めたこと。
0596デフォルトの名無しさん2012/04/14(土) 00:16:44.21
つまり日本が悪い
0597デフォルトの名無しさん2012/04/14(土) 01:21:14.42
コンテキストの罠
http://itpro.nikkeibp.co.jp/article/Reference/20080930/315749/

スカラーコンテキスト、リストコンテキストだぜー。
このへんがPerlの変態的なところなんだよなぁ。
0598デフォルトの名無しさん2012/04/14(土) 01:56:09.37
>>597
リンク先に「罠」なんてどこにも書いてないぜー。
0599デフォルトの名無しさん2012/04/14(土) 04:41:10.97
I --- いち(一)
II --- に(二)
III --- さん(三)
X --- じゅう(十)
# --- なんばー(井)
これって万国共通なんだな、5点。
0600デフォルトの名無しさん2012/04/14(土) 04:50:28.54
そういえばLarryは漢字もできるんだっけ、努力家なんだな、100点。
0601デフォルトの名無しさん2012/04/14(土) 18:26:51.90
>>564 ナンバーワンになれなくてもいい元々特別なおんりーわん
0602デフォルトの名無しさん2012/04/14(土) 18:58:33.10
なんでその書き込みしたの?
0603デフォルトの名無しさん2012/04/14(土) 22:09:40.97
601だからだろ
0604デフォルトの名無しさん2012/04/15(日) 00:41:39.52
リファレンス使っての多次元難しい
慣れればすらすらとなんとかなるのか
0605デフォルトの名無しさん2012/04/15(日) 00:57:58.57
$$リストリファレンス名[][][][]…
または
$リストリファレンス名->[][][][]…
こういふののこと?

あちきは
perlref
perlreftut
を読んで

${$リストリファレンス名}[][][][]…
の{}を省略した記法が
$$リストリファレンス名[][][][]…
で、また、
$リストリファレンス名->[]->[]->[]->[]…
の][の間の->は省略できるため
$リストリファレンス名->[][][][]…
でよいと理解して、身につけた(つもりw)。
0606デフォルトの名無しさん2012/04/15(日) 01:11:05.83
>>604
君はクラスを使うことを覚えよう。
0607デフォルトの名無しさん2012/04/15(日) 01:35:28.45
一瞬伏字だらけ文字化けだらけの
発禁カキコかと思ったYO
0608デフォルトの名無しさん2012/04/15(日) 01:49:06.46
文字列内に5回以上ある一文字が含まれていたら、5回目の一文字含め、それ以降の文字列を削除、
という動作をさせたいのですが、どう記述したらいいんでしょうか?
0609デフォルトの名無しさん2012/04/15(日) 01:52:06.91
  1 23  4 5
aaababbaababaanaaa

  1 23  4
aaababbaaba
0610デフォルトの名無しさん2012/04/15(日) 02:18:53.91
>>608
「ある一文字」というのが「任意の文字」ではなく下記の'A'のようにあらかじめ指定されるならばこうかなぁ

my $c = 'A'; # 5回以上登場するかどうか調べる文字
my $test_str = 'abcAAA012AAAAdefAAAAA3456AAAAA789abAAAAAAcdefg';
$test_str =~ s/^(.*?$c{4})$c.*$/$1/;
print $test_str . "\n";

$test_str = 'abcAAA012AAAAdefAAAA3456AAAA789abAAAAcdefg';
$test_str =~ s/^(.*?$c{4})$c.*$/$1/;
print $test_str . "\n";

実行例
$ perl p_char5.pl
abcAAA012AAAAdefAAAA
abcAAA012AAAAdefAAAA3456AAAA789abAAAAcdefg

「任意の文字」に対応させる場合、どうすんだろ…
もっと良いやり方知っている人がいたらレスどうぞです
0611デフォルトの名無しさん2012/04/15(日) 02:21:51.17
ごめん、意味取り違えた
>>610は5回以上「連続して登場した」場合のマッチングだった。
スマソ
0612デフォルトの名無しさん2012/04/15(日) 02:24:20.35
> 5回以上ある一文字が含まれていたら
ってのはそういうことかね?
それとも何かもっと別の壮大で長大で深遠で
常人には及びもつかないロジックなのかね?
0613デフォルトの名無しさん2012/04/15(日) 02:43:29.05
「ある一文字」というのが「任意の文字」ではなく>>609の'b'のようにあらかじめ指定されるならばこうかなぁ

my $c = 'b'; # 5回以上登場するかどうか調べる文字
my $str1 = 'aaababbaababaanaaa';
$str1 =~ s/^(([^$c]*$c[^$c]*){4})$c.*$/$1/;
print $str1 . "\n";

実行例
$ perl p_char5_.pl
aaababbaaba

間違っていたらゴメンチャイ
'b'とか決めず任意の文字の5回以上の登場に対応させるには後方参照使ってもムツカシイ感じ。
splitでバラしてlist処理に持ち込んだ方ががいっそ楽かも
もっと良いやり方知っている人がいたらレスどうぞです
0614デフォルトの名無しさん2012/04/15(日) 03:21:13.75
if ($str =~ /^((?:.*?b){4}.*?)b/){
$str = $1;
}

とか

my $cnt = 0;
while($str =~ /b/g){
$cnt++;
if ($cnt == 5){
$str = $`;
last;
}
}
0615デフォルトの名無しさん2012/04/15(日) 03:28:24.51
任意の文字が5回以上現れたら、その5回目の文字以降右をtrimするのはこうかな…

my $str = 'Animals are happy so long as they have health and enough to eat.';
my @elm = split '',$str;

my (%cnt, @seq);
$cnt{$_} = 0 for @elm;
for (@elm) {
last if 5 <= ++$cnt{$_};
push @seq, $_
}

my $str2 = join '',@seq;
print "`$str2'\n";

実行例
$ perl p_char5.pl
`Animals are happy so long'

この例の場合、5個目のspace文字' 'から右か切り捨てられる。
さて寝るか…ノシ
0616デフォルトの名無しさん2012/04/15(日) 07:58:10.12
fastq の LQ trim の宿題?
0617デフォルトの名無しさん2012/04/15(日) 08:42:53.91
% perl -le 'print @{[ ( split /(b)/, $ARGV[0]), (q{}) x 9]}[0..8]' 'aaababbaababaanaaa'
aaababbaaba
0618デフォルトの名無しさん2012/04/15(日) 11:04:39.43
$_ = 'AAAABBBBBCCCCCC';
print $_, "\n";

s/((.)\2\2\2)\2.*$/$1.../;

print $_, "\n";
0619デフォルトの名無しさん2012/04/15(日) 15:41:39.25
パ・パ・パパッパ〜Perlライス
0620デフォルトの名無しさん2012/04/15(日) 17:46:15.82
...はいらないの
0621デフォルトの名無しさん2012/04/15(日) 19:06:19.02
JAなんとかか?
0622デフォルトの名無しさん2012/04/15(日) 21:33:17.22
DBD::Pgモジュールをインストールしようとしたら
ぐぐってもperl5.8でのインストール解説しか見当たらず、
5.8にダウングレードしたいのですが
perl5.8って何処で入手すればいいんですか
0623デフォルトの名無しさん2012/04/15(日) 21:35:23.30
超発想すぎてついていけない
0624デフォルトの名無しさん2012/04/15(日) 22:59:24.55
>>622
ぐぐらずoreillyの本を買って学ぶ
0625デフォルトの名無しさん2012/04/15(日) 23:01:03.92
>>624
とか言うと絶対にラクダ本初版とか買ってくるんだよな
0626デフォルトの名無しさん2012/04/16(月) 00:33:23.42
PostgeSQLに付いてくるDBD::Pgを使うかDBD::PgPPを使うといい
0627デフォルトの名無しさん2012/04/16(月) 00:36:19.02
Reports for distributions by TURNSTEP
DBD-Pg 2.19.2
ttp://www.cpantesters.org/author/T/TURNSTEP.html
0628デフォルトの名無しさん2012/04/16(月) 14:25:01.73
みんながPHP&WordPressに走るのでPerlを勉強しようと思うのだが需要はあるかな。
0629デフォルトの名無しさん2012/04/16(月) 15:18:42.84
もうちょい訳書だしてくれると、買うかは別として
なんとなくテンション上がるんだけどな〜>オライリー
すっかりスルーされてる感じなのがつまらんね。
ラクダは10年ぶりだし(たいして目新しくもないだろうけど)出してほしいところ。
0630デフォルトの名無しさん2012/04/16(月) 15:24:28.35
訳書というか原書の時点であまり出てないんじゃない?
Effective Perlが出てないけどあれはオライリーじゃなくてAWだし
0631デフォルトの名無しさん2012/04/16(月) 15:43:11.99
while(1)のなかで改行しないprintだけを使うと処理が先に進まなくて、
改行するprintを混ぜると正常に動作するんですが、何か条件があるのでしょうか。
ActivePerl + Win7 + DOSで実行です。
0632デフォルトの名無しさん2012/04/16(月) 15:49:35.83
それはひょっとして$|ですか?
0633デフォルトの名無しさん2012/04/16(月) 15:49:56.05
たぶん行バファリングされてる
改行が出力されるかstdioのバッファが満タンになるまで出力されない
0634デフォルトの名無しさん2012/04/16(月) 16:00:32.34
あ、表示されました。
存在を知りませんでした。ありがとうございました。
0635デフォルトの名無しさん2012/04/16(月) 16:56:24.64
テキストの中から許可したHTMLタグだけそのままにして、残りは無効にするにはどういったやり方が最適でしょうか?
閉じタグの扱いや、fontのように内部にsizeやcolorなど複数の値が指定されていたり、なかなか厄介で泥臭い方法しか思いつきません。
0636デフォルトの名無しさん2012/04/16(月) 17:58:07.24
ファイルハンドルがあるかどうかを判別するにはどうしたらいいんでしょうか?

print2 "(<font color=\"#00ff00\">てすと</font>)"; #ファイルハンドルがない場合

open(OUT,">test.dat");
print2("<font color=\"#00ff00\">てすと</font>",OUT);#ファイルハンドルを渡す場合
close(OUT);

sub print2{
local($str,*FH)=@_;

if(FHがないの場合){
print "$str";
}
esle{#FHがある場合
print FH $str;

}

}
0637デフォルトの名無しさん2012/04/16(月) 18:03:14.50
>>636
>>555
0638デフォルトの名無しさん2012/04/16(月) 20:28:22.07
>>635
http://search.cpan.org/~drtech/HTML-StripScripts-Parser-1.03/Parser.pm

>>636
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod#Prototypes
0639デフォルトの名無しさん2012/04/17(火) 12:57:59.47
バッファリングの質問が出てたので便乗させてください。
perlの出力をクライアント(JavaScript)でストリーミングに受け取るテストスクリプトを書いています。
perlでは、HTML5のServer-Sent Eventsのルールに則って、一度に次のようなチャンクを返します。

"event: message\n
data: fired message event\n
id: 1\n
retry:1000\n
\n
"
↓コード(抜粋)
my @data = ( {event=>'message',data=>'fired message event',id=>1,retry=>1000}, {...} );

sub output {
my $data = shift;
my $output = '';
while (my ($key, $value) = each %$data) { $output .= "$key: $value\n"; }
print $output."\n";
}

for my $d (@data) { output($d); sleep 3; } # 時間のかかる処理をシミュレートするためsleepを使用

改行のたび出力されてしまわないよう、ひとつの文字列にしてからprintしてるのですが、
できたらループ内では↓の擬似コードのように書きたいイメージです。
$buff->append("key: $value\n"); ... $buff->flush;
あるいは
print "key: $value\n"; ... STDOUT->flush;

もっとも、通常はサーバ側のバッファリングも機能するため、この程度の分量だと
サーバのバッファ分のスペースを末尾に追加する必要があるくらいの話なんですが、
perlの使いこなしというか、コード的にもっとうまい書き方があれば知りたいです。
(改行を含む文字列をバッファにためつつ、任意のタイミングでflushする)
0640デフォルトの名無しさん2012/04/17(火) 15:02:52.42
わっかりにくい日本語だなーーー
「ループ」ってどれよアホちゃん
0641デフォルトの名無しさん2012/04/17(火) 18:22:04.85
>>639
適当にクラス作ればいいんじゃないの?
http://ideone.com/YHKD9
0642デフォルトの名無しさん2012/04/17(火) 19:10:01.97
ロックディレクトリ$lock_file_pathに
ディレクトリがないにもかかわらずF5を連打して連続リロードすると
mkdir($lock_file_path,0755)が成功しない場合があります
これはどうしてでしょうか?
ディレクトリがある場合以外でmkdirの作成が失敗することはあるんですか?
0643デフォルトの名無しさん2012/04/17(火) 19:13:27.59
なぜエラーメッセージを見ないのかす
06446392012/04/17(火) 19:53:35.30
>>641
わざわざ貼っていただきありがとうございました。
バッファに相当するものをperlでという発想ですね。

あれから調べてたんですが、やはりバッファに直接指示するようなのはできないですよね。
javaやC#などのioではよくBufferd〜というようなクラスがあって、バッファを直接操作してる感覚でいたのですが、
中身はこうしたものなのかも?(考えたこともなかったorz

printflush()があってuseするとSTDOUTでも使えるようになるのも気づきませんでした。
これが可能なのであればあとの部分の実装はいかようにも、と感じます。
たいへん参考になりました。というか、この部分、まんま使わしていただきます〜m(_ _)m
0645デフォルトの名無しさん2012/04/18(水) 05:50:42.37
>>642
CGIの質問はスレ違い
0646デフォルトの名無しさん2012/04/18(水) 09:43:49.35
642だけど原因がわかりました
連打するとロック解除の時ロックディレクトリを削除するプロセスが
ロックフォルダを作成〜mkdirの間に割り込むため
mkdirしようとしても上位ディレクトリがないので作成失敗ということでした
0647デフォルトの名無しさん2012/04/18(水) 09:55:36.47
ロックフォルダを作成~mkdir って…
二段階のmkdirをやってるの?
それそもそも設計がダメだわ。それじゃ排他制御できん。
0648デフォルトの名無しさん2012/04/18(水) 10:19:03.17
だってmkdir1回じゃディレクトリ作れないじゃん
例えば$lock_file_path="./lock/log/thread_00001.lock";の場合
mkdir($lock_file_path)ではディレクトリが作成できない
lockディレクトリを作って、logディレクトリを作ってthread_00001.lockディレクトリを作るという手順になる
3回mkdirしなければ作れないだろ
0649デフォルトの名無しさん2012/04/18(水) 12:04:04.05
だから3回mkdirしなければいけないようなロックの設計の仕方がそもそも間違いだって言ってるんだよ
0650デフォルトの名無しさん2012/04/18(水) 12:06:43.76
何故ロックのためにmkdirを使うかを知るべきだね
0651デフォルトの名無しさん2012/04/18(水) 12:12:23.63
マジモンのアホだぞこいつwww
0652デフォルトの名無しさん2012/04/18(水) 12:15:49.93
File::Pathを使えって話?

俺だったらロックディレクトリ用ディレクトリは削除しないか、
あるいはそもそもロックディレクトリをロックしたいファイルと同じパスに作るけどな
0653デフォルトの名無しさん2012/04/18(水) 12:19:11.18
書いたあとで思ったけどFile::Pathにはアトミック性が無いな
0654デフォルトの名無しさん2012/04/18(水) 12:28:42.13
>>649
windowsみたいにflockが使えない環境なら
mkdirしかないだろ
File::pathとかっていうのも内部では3回ディレクトリ作ってるんだろ?
0655片山博文MZボット ◆0lBZNi.Q7evd 2012/04/18(水) 12:42:20.37
Perlダサィ
0656デフォルトの名無しさん2012/04/18(水) 12:54:01.94
>>654
内部では1回しか作ってない
0657デフォルトの名無しさん2012/04/18(水) 13:28:25.61
>>656
File::Pathで3階層分のディレクトリをatomicには作れないだろ?
0658デフォルトの名無しさん2012/04/18(水) 18:09:34.08
文字列から最初の&までと、その後を分割したいです。
ただし、""と''の記号に囲まれている&は除外したいです。
さらに""中の'と\"、''中の"と\'は囲む記号としては扱いません。


$str = q/test"xx&xx'x"xxx'xx&xx'xxxxx&yyyyy&zzz/;
$str =~ /(.*?)&(.*)/; #ここをどう書けばいいのでしょうか?

$1; #test"xx&xx'x"xxx'xx&xx'xxxxx
$2; #yyyyy&zzz
0659デフォルトの名無しさん2012/04/18(水) 18:43:55.36
>>658
#!/usr/bin/perl -w
use strict;
q/test"xx&xx'x"xxx'xx&xx'xxxxx&yyyyy&zzz/ =~ /^
  ( # 1
    (?:
      [^"&']+
    | " (?:[^"]+|\\")* "
    | ' (?:[^']+|\\')* '
    )+
  )
  &
  ( # 2
    .*
  )
/xgs;
print "1:[$1]\n2:[$2]\n";
0660デフォルトの名無しさん2012/04/18(水) 19:12:03.18
>>658-659
遅かった…
ttp://ideone.com/yTSBI
0661デフォルトの名無しさん2012/04/18(水) 19:25:46.07
>>659-660
すごい…理解するのにちょっと時間がかかりました。
大変勉強になりました。
ありがとうございます。
0662デフォルトの名無しさん2012/04/18(水) 19:56:47.13
>>654
今は、強制ロックになるけどflockは使える。
使えないのは98,ME辺りまで。
0663デフォルトの名無しさん2012/04/18(水) 23:27:22.80
perl-mongers.org 繋がらなくなってる…
0664デフォルトの名無しさん2012/04/19(木) 12:43:29.48
for(1...5){
sleep(1;)
}
print "5秒経ちました";

for(6...10){
sleep(1);
}
print "10秒経ちました";

これを実行すると10秒経った後に
5秒経ちましたと10秒経ちましたが同時に表示されるけどどうしてですか?
「5秒経ちました」が表示されてから5秒たって「10秒経ちました」を表示させることはできないのでしょうか?
0665デフォルトの名無しさん2012/04/19(木) 12:52:45.37
>>664
>>631-634
0666デフォルトの名無しさん2012/04/19(木) 17:59:46.37
サブルーチンの呼び出しは&をつけなければならないんですか?
&をつけなくてもエラーにならなかったですけど

それと引数を渡すときは( )は省略できないのですか?
0667デフォルトの名無しさん2012/04/19(木) 18:31:49.80
>>666
http://perldoc.jp/docs/perl/5.10.1/perlfaq7.pod#Whats32the32difference32between32calling32a32function32as32foo32and32foo40
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod
0668デフォルトの名無しさん2012/04/19(木) 19:19:16.78
まるでその答えを導くためにされたような質問だな
0669デフォルトの名無しさん2012/04/19(木) 20:01:08.20
>>667
そのサイト何で文字が小さすぎるの?
0670デフォルトの名無しさん2012/04/19(木) 20:18:43.95
SHIらねーよww
テメーのブラウザがリリパット症候群なんだろ
Ctrlおちながらマウスホイル回せば大きくなるよ テイノーちゃん
プ
0671デフォルトの名無しさん2012/04/19(木) 20:19:49.21
html { font-size: 62.5%; ...

最小フォントサイズ設定してるから気づかんかったが
なるほどこりゃ小さいな
0672デフォルトの名無しさん2012/04/19(木) 20:24:26.03
こういう流れ好きだよ
0673デフォルトの名無しさん2012/04/19(木) 20:34:36.66
ぼくも大好きです
0674デフォルトの名無しさん2012/04/19(木) 21:15:00.31
>>670
いつもハリキッテるけどスルーされかたハンパないすね
0675デフォルトの名無しさん2012/04/19(木) 21:30:12.20
ひでえサイトだな
0676デフォルトの名無しさん2012/04/20(金) 01:22:34.32
PRINT("てすと");だとカッコがじゃまなので
PRINT "てすと";としたいわけですがエラーになってしまいます
カッコは必要なのでしょうか?

sub PRINT{
print "@_";
}
0677デフォルトの名無しさん2012/04/20(金) 01:46:21.53
>>676
>>667
0678デフォルトの名無しさん2012/04/20(金) 09:05:07.90
>>670みたいな白痴でも使えるんだから
やっぱりPerlは素晴らしい言語だわ
0679デフォルトの名無しさん2012/04/20(金) 12:08:36.84
>>677
一応読んだけど知りたい回答は書いてなかった

聞きたいことは
PRINT "てすと";

sub PRINT{
print "@_";
}
の場合はエラーになるけど順序を逆にして
sub PRINT{
print "@_";
}
PRINT "てすと";
とするとエラーにならずちゃんと表示されるというのはどうしてかということです。

それと
test.plに
sub PRINT{
print "@_";
}
1;
を作り
test.cgiで
require "test.pl";
PRINT "てすと";
とするとエラーになってしまうのはどうしてかということです
0680デフォルトの名無しさん2012/04/20(金) 12:17:02.56
>>679
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod
> サブルーチンを呼び出すには:
>   NAME(LIST);  # かっこが付いているときは & は省略可能。
>   NAME LIST;   # 予め宣言/インポートされているならかっこは省略可能。

> 名前が全て大文字であるサブルーチンは、 名前が全て小文字のモジュール名が
> (訳注: pragma 用として) 予約されているのと同じように Perl のコアで予約されています。
0681デフォルトの名無しさん2012/04/20(金) 12:24:42.40
>>680
インポートというのはrequire "test.pl";はインポートにはならないんですか?
0682デフォルトの名無しさん2012/04/20(金) 12:25:32.93
マイルールでは
自作関数には括弧を付ける
組み込みは付けない

その方が上級者ぽく見えるらしく
俺の株が上がった
0683デフォルトの名無しさん2012/04/20(金) 13:01:14.02
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod
> サブルーチンを宣言するには:
  sub NAME; # "先行" 宣言

> サブルーチンをインポートするには:
>  use MODULE qw(NAME1 NAME2 NAME3);

# test.pl
# test.pl のファイルスコープ上での宣言と main::myprint() の定義
sub myprint { print "Args are @_\n" }
1;

# test.cgi
require 'test.pl'; # main::myprint() が使えるようになるが、
# test.cgi のファイルスコープ上では宣言もインポートもされていない
myprint('test1'); # 括弧付きならば宣言は不要
sub myprint; # test.cgi のファイルスコープ上での宣言
myprint 'test2'; # 宣言したので括弧を省略できる
0684デフォルトの名無しさん2012/04/20(金) 15:00:02.45
なんでcgiなんだ?
0685デフォルトの名無しさん2012/04/20(金) 15:35:32.97
◆やりたいこと
人に渡すスクリプト書いてるのですが、ある処理のとこに限っては
utf8 を cp932 で出力する際に起こり得る dose not map cp932 の
出力を抑止したいと考えています。

◆こうしてみた
思い付きで STDERR を閉じたら取り合えずは希望通りの動作になりました。

◆質問
もし何らかのモジュールや何らかの設定で抑止可能であればそちらで
dose not map 〜 の warning を抑止したいのですが、
close(STDERR); 以外で何か手段はあるのでしょうか?
0686デフォルトの名無しさん2012/04/20(金) 15:54:09.72
別のクチを作るかな
0687デフォルトの名無しさん2012/04/20(金) 16:23:14.46
すんません。 サクっとサンプルが見つかってしまいました m(_ _)m

open(my $devnull, '>/dev/null');
my $bakstderr = *STDERR;
*STDERR = $devnull;

〜STDERR あての出力を抑止したい処理〜

*STDERR = $bakstderr;
close($bakstderr);


これで出来ました。



サンプル見たあとだからと言うのもあるけど、>>686 さんのはかなり的を射た助言でした。
ありがとうございました。
0688デフォルトの名無しさん2012/04/20(金) 23:40:23.98
>>684
拡張子cgiの何がおかしいの?
0689デフォルトの名無しさん2012/04/21(土) 00:00:47.20
拡張子.cgiはPerlの拡張子ではないから違和感は感じるね
Webプログラミングは別板ってのもあるし
まあ昔は.cgi=Perl、みたいな風潮もあったし俺はツッコむほどじゃないと思うが
0690デフォルトの名無しさん2012/04/21(土) 00:17:21.81
違和感ある?

cgiは何のファイルの付ける拡張子なんだ?

CGI(Common Gateway Interface)として
みなせるものはすべて拡張子cgiで間違い無いだろ?
0691デフォルトの名無しさん2012/04/21(土) 00:20:15.54
>>681
http://perldoc.jp/docs/perl/5.10.0/perlmod.pod#Perl32Modules
0692デフォルトの名無しさん2012/04/21(土) 00:31:09.99
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )

このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
0693デフォルトの名無しさん2012/04/21(土) 00:34:30.66
ようは、ファイル名の拡張子をplに変えれば
純粋なperlになるということですよ。
0694デフォルトの名無しさん2012/04/21(土) 00:41:22.58
拡張子なんてただの飾りです。ドザーにはそれがわからんのです。
0695デフォルトの名無しさん2012/04/21(土) 00:49:26.37
また頭の悪い奴がきたなw

Apacheの設定したことないのか?
拡張子でmime type定義するだろ。
0696デフォルトの名無しさん2012/04/21(土) 00:58:08.45
>>695
単なる一アプリであるApacheが拡張子をどう扱おうが知ったことじゃございません
0697デフォルトの名無しさん2012/04/21(土) 01:52:16.65
open(IN,"test.dat");のあとで
タイムアウトエラーだったり鯖が落ちたりで
close(IN);できなかった場合何か問題ありますか?
ずっとファイルが開きっぱなしってことですか?
0698デフォルトの名無しさん2012/04/21(土) 01:54:35.79
プロセスの終了とともにファイルハンドルは閉じられるよ
0699デフォルトの名無しさん2012/04/21(土) 02:37:17.32
普通にPerlの質問なら、CGIとして動かす場合でもスレ的には問題ないんじゃないかと思ってみる。
0700デフォルトの名無しさん2012/04/21(土) 02:48:24.07
アホみたいにレベル低い質問だけじゃなくて、Perlに関係ない質問もたくさん来るようになるから
初心者にもわかりやすいように、cgiと付く物は全部よそに言ってもらった方が平和
0701デフォルトの名無しさん2012/04/21(土) 03:57:03.07
>>699
問題の切り分けができる人間なら、cgiでない問題として質問すれば良いだけのこと。
切り分けができてない時点で、webprog板逝きだ。
0702デフォルトの名無しさん2012/04/21(土) 10:21:12.06
名前付きパラメータを渡すのに簡単のためCGI.pmを使っているが
Perlの質問だから気にするなよ
みたいな
0703デフォルトの名無しさん2012/04/21(土) 17:07:55.95
CGIの質問箱に行ったら、Perlの質問はこっちのスレだと言われました。
0704デフォルトの名無しさん2012/04/21(土) 17:52:19.02
質問を書くか、誘導元を書けよ
0705デフォルトの名無しさん2012/04/21(土) 19:09:20.93
もう何がなんだか
0706デフォルトの名無しさん2012/04/21(土) 19:21:17.03
>>703
WebProgのPerlスレに行け
0707デフォルトの名無しさん2012/04/21(土) 19:40:18.02
たらい回し関数が発動中だな
素晴らしい
愛のバケツリレーだwww
0708デフォルトの名無しさん2012/04/22(日) 13:09:04.52
perlで画像を表示するにはどのようなコードを書けばいいんでしょうか?

例えば<IMG SRC="access_count.pl">で画像を表示する場合です
0709デフォルトの名無しさん2012/04/22(日) 13:14:18.86
エスパー試験3級問題
0710デフォルトの名無しさん2012/04/22(日) 13:25:26.44
access_countというのがヒントだな
0711片山博文MZボット ◆0lBZNi.Q7evd 2012/04/22(日) 13:26:25.23
>>708
http://www.aimix.jp/cgi/syohoimgview.html
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_kj14.htm
0712デフォルトの名無しさん2012/04/22(日) 13:26:54.85
いや
imgタグなのに /> で終わっていないのがヒントだろうw
相当に古い *何か* を参照してるぞコイツww
0713デフォルトの名無しさん2012/04/22(日) 13:27:07.19
エスパーというかスルー検定4級問題かと…上の数十レスはなんだったのか
0714デフォルトの名無しさん2012/04/22(日) 13:27:24.91
もういい
今調べて
print "Content-type: image/jpeg\n\n";
とbinmode使うってわかったから
0715デフォルトの名無しさん2012/04/22(日) 13:37:06.32
最初から調べろよksちゃんwww
0716片山博文MZボット ◆0lBZNi.Q7evd 2012/04/22(日) 13:47:35.20
\n\nじゃないよ。\r\nだよ。
0717デフォルトの名無しさん2012/04/22(日) 13:56:09.07
そこらへんはNPHでなければWebサーバが面倒みてくれるよ
0718デフォルトの名無しさん2012/04/22(日) 14:07:17.69
\n\nじゃないよ。\r\nじゃないよ。\r\n\r\nだよ。
0719デフォルトの名無しさん2012/04/22(日) 14:47:40.15
いつのまにか HTML から HTTP の話に
つーか、質問する手間と調べる手間ってそんなに違うんかな?
0720デフォルトの名無しさん2012/04/22(日) 14:53:24.61
つーかここに書きこむ人は
検索より質問のコストの方が低い
と思っているから
書き込むんだろう
0721デフォルトの名無しさん2012/04/22(日) 15:02:46.33
俺はとりあえず質問を書いておいて
他の作業をする。

運が良ければ釣れてる程度の扱い。
0722デフォルトの名無しさん2012/04/22(日) 16:04:45.57
そんなんじゃいつまでたってもスキル上がらんわな〜
0723デフォルトの名無しさん2012/04/22(日) 16:11:04.58
てゆか2chしか頼るところがないと思ってる限りスキルが向上することはないよ
0724デフォルトの名無しさん2012/04/22(日) 16:22:14.70
スキルとやらは数ヶ月使わないだけで消えうせるよな・・
人間は勘以外蓄積しない生き物だ
0725デフォルトの名無しさん2012/04/22(日) 18:09:57.04
どこかに書いてあって、どこに書いてあるのかなんとなく分かる


ってのがあると覚えないよねw
0726デフォルトの名無しさん2012/04/23(月) 01:24:58.79
アクセスカウンター作ってるのですが
画像カウンターの場合は<IMG SRC="access_count.pl">で呼び出せばいいのですが
テキストカウンターの場合はどうやって呼び出すのでしょうか?
0727デフォルトの名無しさん2012/04/23(月) 01:28:04.00
SSI
0728デフォルトの名無しさん2012/04/23(月) 01:30:10.57
ちょ、>>708かw
0729デフォルトの名無しさん2012/04/23(月) 03:03:25.15
さーばの方に AddType image/jpeg .pl みたいな設定をすれば画像として表示できるんじゃね?
0730デフォルトの名無しさん2012/04/23(月) 03:14:28.80
それはCGIだな
0731デフォルトの名無しさん2012/04/23(月) 12:14:33.72
print "Content-type: image/jpeg\n\n";
open(IN,"img/img1.jpg");
binmode(IN);
print <IN>;
close(IN);

これで画像を表示しようとするとファミコンでバグっだような画像になってしまってきれいに表示されません
何が原因なのでしょうか?
環境はwindows7、activeperl、ブラウザ(IE8)で実行です
0732デフォルトの名無しさん2012/04/23(月) 12:23:54.77
>>731
こちらへどうぞ。

Perlコーディング初心者質問スレ Part 63
http://kohada.2ch.net/test/read.cgi/php/1315559509/
0733デフォルトの名無しさん2012/04/23(月) 12:43:20.50
このスレは上級者用なのか?
0734デフォルトの名無しさん2012/04/23(月) 12:49:49.64
シラネーヨwww
お前が回答できないなら少なくともお前は中級上級者ではないwww
0735デフォルトの名無しさん2012/04/23(月) 12:54:23.62
それなら初心者用スレに誘導する意味ないじゃん
0736デフォルトの名無しさん2012/04/23(月) 13:01:35.82
>>735
ここはPerl一般の質問を扱うスレ。
Web開発はWebProg板へ。
板のローカルルールで決まってる事だから。

ローカルルールの意味が分からない2ch初心者の方は、
半年ROMるか、初心者の質問板へどうぞ。
0737デフォルトの名無しさん2012/04/23(月) 13:13:11.79
Perl初心者スレなのかWebProg板なのか
0738デフォルトの名無しさん2012/04/23(月) 13:21:57.86
>>731
ttp://kohada.2ch.net/test/read.cgi/php/1315559509/664
0739デフォルトの名無しさん2012/04/23(月) 18:00:32.31
数字のn桁目の数字を調べるのはどうしたらいいんですか?
例えば36598の4桁目を調べて結果は6になるようにです
0740デフォルトの名無しさん2012/04/23(月) 18:10:58.45
36598 =~ /\d*(\d)\d{3}/; print $1;
print ((36598/(10**(4-1)))%10);
0741デフォルトの名無しさん2012/04/23(月) 18:48:30.41
>>740 は
あまりに親切で懇切丁寧でとっても初心者向けだと思うw



my $num = 36598 ;
my $n = 4 ;
print "".(split // , reverse $num)[$n-1] ;
0742デフォルトの名無しさん2012/04/23(月) 19:09:11.05
$suuzi=36598;
$keta=4;

$a=length($suuzi)-$keta;
$kekka=substr($suuzi,$a,1);

print "$kekka";
0743デフォルトの名無しさん2012/04/23(月) 19:10:21.46
>>739
int($suuji / (10 ** ($n-1))) % 10
0744デフォルトの名無しさん2012/04/23(月) 20:00:10.57
>>740-743で
ベストアンサーはどれですか?
動作が速いのはどれでしょうか?
0745デフォルトの名無しさん2012/04/23(月) 20:03:05.08
>>740の2行目と>>743が
ベストアンサー
0746デフォルトの名無しさん2012/04/23(月) 20:03:42.31
みんなちがって、みんないい
0747デフォルトの名無しさん2012/04/23(月) 20:38:25.25
substr($suuji,-1 * $n + 1 , 1);
0748デフォルトの名無しさん2012/04/23(月) 22:03:47.05
perl -Mbignum -e 'print 36598->digit(4-1);'
0749デフォルトの名無しさん2012/04/24(火) 03:38:03.50
There is more than one way to do it.
0750デフォルトの名無しさん2012/04/24(火) 03:43:14.67
743が一番見た目もわかりやすい割によさそうな気がする
0751デフォルトの名無しさん2012/04/24(火) 04:09:37.30
正規表現、文字列演算は遅い。
数値は数値として計算するのが正解。
0752デフォルトの名無しさん2012/04/24(火) 12:00:21.55

&img_disp("./img/1.gif");
で1.gifが表示されるけど
これのあとのに
&img_disp("./img/2.gif");
&img_disp("./img/3.gif");
としても1.gifしか表示されません、これはどうゆことでしょうか?
1つの画像しか表示できないってことですか?
2つ以上の画像を表示するにはどうしたらいいんですか?

sub img_disp{

local(*IN);
my($img_path)=@_;

open(IN,$img_path);
binmode(IN);
binmode(STDOUT);
print <IN>;
close(IN);

}
0753デフォルトの名無しさん2012/04/24(火) 12:47:32.95
sub img_disp{
my $imgpath = shift;
return if !$imgpath;

if(open(my $imgfh, '<', $imgpath)){
my $imgbin;
binmode $imgfh;
read($imgfh, $imgbin, (-s $imgbin));
close($imgfh);

binmode STDOUT;
print $imgfh;
}
}


基本的には、呼び出す時に & は不要。
0754デフォルトの名無しさん2012/04/24(火) 12:48:27.51
間違えた


× read($imgfh, $imgbin, (-s $imgbin));

○ read($imgfh, $imgbin, (-s $imgfh));
0755デフォルトの名無しさん2012/04/24(火) 12:52:09.74
>>752
話の流れから>>708はネタだと思ってたけど、マジだったの??
0756デフォルトの名無しさん2012/04/24(火) 12:53:37.78
>>753
カッコがついたりつかなかったり、気まぐれデスネ
0757デフォルトの名無しさん2012/04/24(火) 13:30:19.99
久しぶりにPerl忍者っぽいコードを見た。
0758デフォルトの名無しさん2012/04/24(火) 14:49:19.29
>>752
CGIネタはすれ違いですよ。
プログラムが間違っているのでなければ、おそらく、imgタグ内でどの画像でも同じプログラム名で呼び出しているため、ブラウザのキャッシュが効いている。
0759デフォルトの名無しさん2012/04/24(火) 15:24:53.38
>>757
その例えはやめて!w
0760デフォルトの名無しさん2012/04/24(火) 16:16:05.80
>>752
コードを書くのに参考にした本・サイトを教えてください
0761デフォルトの名無しさん2012/04/24(火) 17:47:57.87
>>760
>>711
0762デフォルトの名無しさん2012/04/24(火) 17:50:43.15
表示できる画像は1つだけだよ
だから複数の画像を連結して1つの画像にするプログラムが必要
07637522012/04/24(火) 18:10:36.76
>>762
ああそうか、カウンタを作っているのか。勘違いした。
スレチだが、gifcat.plを使うとか。ていうか、今時カウンタを自作とかしないし。
0764デフォルトの名無しさん2012/04/24(火) 18:35:35.57
gifcat.pl って10年以上ぶりに聞いたわ……
0765デフォルトの名無しさん2012/04/24(火) 18:57:53.55
カウンタのレンタルはしたくないので自作がいい
0766デフォルトの名無しさん2012/04/24(火) 19:49:58.42
Heavy.pm って、何をするモジュールですか?
0767デフォルトの名無しさん2012/04/24(火) 20:01:59.40
perlをヘヴィにするモジュール
具体的には
・perlの動作を重くする
・負荷をかける
・レスポンスを緩慢にする
など
不可視剣をしたいときに重宝する便利なモジュール
0768デフォルトの名無しさん2012/04/24(火) 20:42:38.77
settimerの勉強をしています

use Time::HiRes qw ( setitimer ITIMER_REAL time );
sub printunko { print "unko\n" };
$SIG{VTALRM} = 'printunko';
setitimer(ITIMER_REAL, 1, 1);
while(<>){}

というプログラムを動かすと、1秒後に「アラームクロック」と出力され
とまってしまいます。
1秒おきに unko を出したいのですが、どうしたらよいでしょうか
0769デフォルトの名無しさん2012/04/24(火) 20:47:04.76
1秒おきにunkoが出るようになりました

元ネタで ITIMER_VIRTUALだったのをREALにしたので、
VTALRMもあわせてALRMにする必要があったのですね
0770デフォルトの名無しさん2012/04/24(火) 21:46:04.03
うんことflushをかけてるのか。高尚だな。
カウンタの件はネタだと思ってたのにマジっぽくなってきてて噴いたw
0771デフォルトの名無しさん2012/04/24(火) 23:16:31.86
自分のサイト用のカウンターでなく、レンタルカウンターとかつくりたいんだけど、
どうやればいいのか参考になるページを教えてください
0772デフォルトの名無しさん2012/04/25(水) 01:50:10.65
やること何も変わらなくね?
0773デフォルトの名無しさん2012/04/25(水) 02:05:45.68
レンタルって課金したいの?
0774デフォルトの名無しさん2012/04/25(水) 02:08:17.42
いま、課金しました。
0775デフォルトの名無しさん2012/04/25(水) 02:55:33.92
完成前に課金すんなwww
0776デフォルトの名無しさん2012/04/25(水) 04:32:48.05
>>739もカウンタのネタだったんだな

CGIのアクセスカウンタ作成(レンタル設定も追加)に関するネタを
どこまで汎用的かつ高度な質問に変換できるか、というコンテストは
挑戦しがいがありそうな気はする
0777デフォルトの名無しさん2012/04/25(水) 08:27:59.69
だが板違いなんだなこれが
0778デフォルトの名無しさん2012/04/25(水) 14:38:32.56
>>767って、ほんとう?
ググってもよくわからない
0779デフォルトの名無しさん2012/04/25(水) 16:04:09.38
ウソはウソと見抜けない人は(掲示板を使うのは)難しい
0780デフォルトの名無しさん2012/04/26(木) 00:23:25.12
正規表現で、改行コードを<br>タグに変換したい
OSごとに、\n,\r,\r\nと3つあるそうですがそれぞれにうまいこと対処できる正規表現の記述の仕方を教えてください
0781デフォルトの名無しさん2012/04/26(木) 00:37:52.22
(i) か (|) のどちらかを使う
0782デフォルトの名無しさん2012/04/26(木) 00:48:55.72
>>781
おさないおまたと成熟したおまたみたいだな
0783デフォルトの名無しさん2012/04/26(木) 01:25:44.53
>>780
素直にmarkdown使ったら?
0784デフォルトの名無しさん2012/04/26(木) 01:38:50.37
>>771
おれが作るとしたら
ユーザーIDとパスワードでユーザー認識して
1つのユーザーは複数のカウンターを持てる
それらのカウンターの集まりにgroop名をつける
カウンター1つ1つにcounter_IDを持たせる
1カウンター1つ1つにどのリファラならカウントを加算するかを設定させる
例えば<IMG SRC="access_counter.pl?counter_groop=abcde&counter_ID=00001">
これによってどのgroopのどのカウンターを加算するのかできるようになる
0785デフォルトの名無しさん2012/04/26(木) 02:13:47.82
s/(\r\n|\r|\n)/<br>/;
0786デフォルトの名無しさん2012/04/26(木) 02:19:57.47
>>780
s{(\015\012|\015|\012)}{<br />}g;
0787デフォルトの名無しさん2012/04/26(木) 02:26:15.74
>>784
ありがとう。結構複数個設置したいという需要あるんだね
0788デフォルトの名無しさん2012/04/26(木) 05:22:55.87
group(s)な

あと俺は<br />への変換如何に関わらず\rを除去するようにしてるな
0789デフォルトの名無しさん2012/04/26(木) 09:25:20.89
>>780
http://www.din.or.jp/~ohzaki/perl.htm#CRLF_2BR
0790デフォルトの名無しさん2012/04/26(木) 09:55:49.71
>>778
不可視剣と書いてしまうような奴の言うことが
信用できるかどうかぐらい分かるだろ?w
0791デフォルトの名無しさん2012/04/26(木) 10:19:51.69
フカしだな。
0792デフォルトの名無しさん2012/04/26(木) 10:31:14.03
つーか
40時間も経ってるのに調べてないなんて
無能すぎる
それにオマイラも教えてやれよwww
0793デフォルトの名無しさん2012/04/26(木) 10:33:39.95
義務教育じゃねえんだよ
人様に質問なんかせず全部自分で調べろ
0794デフォルトの名無しさん2012/04/26(木) 10:35:26.45
Heavy.pmはPythonのコードをPerlから呼べるようにエクスポートするモジュール
Perlのビルド時に--emb-pythonを渡してコンパイルしないと使えない
0795デフォルトの名無しさん2012/04/26(木) 10:37:37.82
じゃあ超ヒント
ボクシングにはlite級やheavy級がある
0796デフォルトの名無しさん2012/04/26(木) 11:00:32.21
単体のHeavy.pmを知らんから回答しようがない。
CPANにも無さそうだし。
0797デフォルトの名無しさん2012/04/26(木) 12:53:06.18
<form action="../RealGraphView/Index.asp" method="post" id=form1
name="form1" target="_top">
<input type="hidden" name="SelectPoint" id="SelectPoint" value="">
</form>

上記をmechで記述したいのですが、どのようにしたら良いのでしょうか?
submit か post モジュールでしょうか?
0798デフォルトの名無しさん2012/04/26(木) 20:39:53.85
こんな風にするとよい。
print <<'END';
<form action="../RealGraphView/Index.asp" method="post" id=form1
name="form1" target="_top">
<input type="hidden" name="SelectPoint" id="SelectPoint" value="">
</form>
END
0799デフォルトの名無しさん2012/04/26(木) 20:52:35.84
>>797-798
うせろよ、ゴミカス共
0800デフォルトの名無しさん2012/04/27(金) 21:32:58.69
perl hoge.pl
で実行する時にhoge.plにオプション渡す方法教えて
0801デフォルトの名無しさん2012/04/27(金) 21:43:54.26
perl hoge.pl foo bar boo
で実行すると

hoge.pl の中では @ARGV で foo bar boo が参照できるよ。
0802デフォルトの名無しさん2012/04/27(金) 21:45:16.52
perl hoge.pl -a 1
ってやったらエラーになったけど
おいらの勘違い?
0803デフォルトの名無しさん2012/04/27(金) 21:48:29.43
>>802
スクリプトの内容とエラーメッセージください
0804デフォルトの名無しさん2012/04/27(金) 22:16:00.92
>>802
ARGV の参照だけでエラーにはならんよ。
スクリプトが悪い。
0805デフォルトの名無しさん2012/04/27(金) 22:17:31.24
文字列内の存在する改行(\r\n|\r|\n)の数がn回以下なら真、それより大きいなら偽
と正規表現で出来ませんか。
更に付け加えるとそれらの改行コードを置換しつつ回数の判定がしたいです
0806デフォルトの名無しさん2012/04/27(金) 22:24:06.02
>>802
オメーの勘違い

print "$_\n" for @ARGV ;

そのクソスクリプトは全部すてて
まずは上のこれだけを書き込んで

perl hoge.pl -a 1
なり
hoge.pl -a 1
と成功を念じながら打ち込んで速やかに実行しろ
0807デフォルトの名無しさん2012/04/27(金) 22:26:52.37
>>805
置換の戻り値を見る
0808デフォルトの名無しさん2012/04/27(金) 22:29:21.51
痴漢の戻り地。犯人は犯行現場に戻ってくる。
0809デフォルトの名無しさん2012/04/27(金) 22:35:21.20
>>807
そもそも文字列内にn回「含まれてる」ってどうやって記述するんですか
$s =~ /((\r\n|\r|\n).*){0,5}/;
↑これでは出来ません
0810デフォルトの名無しさん2012/04/27(金) 22:38:31.98
my $count = $str =~ /(\r\n|\r|\n)/g;
$count++ if $count;

または

my $count = $str =~ /(\r\n|\r|\n)/g ? scalar(@_) : 0;



携帯から書いたから動作は分からん
0811デフォルトの名無しさん2012/04/27(金) 22:40:47.80
いちばんテキトーに書きゃこーなる
$cnt = $s =~ /(\r\n|\r|\n)/g;
0812デフォルトの名無しさん2012/04/27(金) 22:43:50.50
書き直す


my $check = $str =~ /(\r\n|\r|\n)/g ? (scalar(@_) < $n ? 1 : 0 ) : 1;
0813デフォルトの名無しさん2012/04/27(金) 23:10:46.03
>>805
((() = $s =~ /(\r\n|\r|\n)/g) <= $n);
($s =~ s/(\r\n|\r|\n)/('A`)タリー/g <= $n);
0814デフォルトの名無しさん2012/04/28(土) 04:45:49.12
>>813
なんかはいってるぞ!
0815デフォルトの名無しさん2012/04/28(土) 04:53:13.32
外部のperlスクリプトから出力を得る為、次のようなテストコードを書きました。
便宜上、1秒以上返ってこない場合には子プロセスをkillする処理を入れていますが、
せっかく別プロセスを起動しているからには、レスポンスが返ってくるまで他の処理をしたいと考えています。

# foo.pl 単に文字列を出力する ※ 実際はもっと時間のかかる処理です
print "return from PID:$$, and '" . ucfirst($ARGV[0]) . "'";

# main.pl
if ( my $pid = open my $reader, '-|', "perl foo.pl $arg" ) {
  eval {
    # time up signal handler - kill child process, and clear timer
    local $SIG{ALRM} = sub {
      kill 'KILL' => $pid; waitpid $pid, 0; alarm 0;
    };
    alarm 1; # set time out, fire SIGALRM handler 1 sec after
    while (<$reader>) { print "$_\n"; }
    alarm 0; # clear timer
  };
  close $reader;
}

スレッドを使ったコードも書いてみてるのですが、この程度なら(変数等の共有がない)
もしかしてもっとシンプルな方法で足りるのではないかと思い
ひとまず投稿させてもらいました。よろしくお願いします。
0816デフォルトの名無しさん2012/04/28(土) 04:56:09.79
↑"待ってる間にしたい他の処理"を書いてませんが
スレッド以外で可能だとしたら、どういうコードになるかわからないので・・・
0817デフォルトの名無しさん2012/04/28(土) 12:01:30.12
>>815
waitpid($pid, WNOHANG)でループさせて、
その中でファイルハンドルをselectして、読み出し可能なら読み出す。
0818デフォルトの名無しさん2012/04/28(土) 16:47:17.01
>>805

# split も正規表現、な
@line = split(/\r\n|\r|\n/,$_);

# 置き換えたいものでくっつける
$_ = join('<br />', @line);

# 落ち着いて数を数える
if(scalar(@line)-1 > 5){
$result = 1;
}
else{
$result = 0;
}
0819デフォルトの名無しさん2012/04/28(土) 18:13:22.91
文字列1のどこの位置に文字列2が含まれていてもいいのではなく
文字列1の最初の位置から見て文字列2が含まれているかを調べるにはどうしたらいいんですか?

$str1="abc/def/abc/def";
$str2="abc/def";
この場合は文字列1に文字列2が含まれているとする

$str1="www/nnn/abc/def";
$str2="abc/def";
この場合は含まれていないとする

if($str1=~/$str2/){
print "含まれいる";
}
これだと文字列1のどの位置に文字列2が含まれていても
含まれているとされるのでだめです。
0820デフォルトの名無しさん2012/04/28(土) 18:14:24.81
split は思いつかなかったw
0821デフォルトの名無しさん2012/04/28(土) 18:27:03.43
サーカムフレックスなどお使いになられてはいかがでしょうか
0822デフォルトの名無しさん2012/04/28(土) 18:34:51.42
アブフレックスなら知ってるけどサーカムフレックスっていうのは知らないですね
0823デフォルトの名無しさん2012/04/28(土) 18:51:58.66
インデックスでもいける。アブフレックスは多分無理。

http://perldoc.jp/docs/perl/5.10.1/perlre.pod#Metacharacters
http://perldoc.jp/func/index
0824デフォルトの名無しさん2012/04/28(土) 19:07:44.20
check ("abc/def/abc/def") ;
check ("www/nnn/abc/def") ;

sub check {
my $str1 = shift ;
my $str2="abc/def";

if ($str1=~/^$str2/){
print "含まれいる\t$str1\t$str2\n";
} else {
print "含まれていない\t$str1\t$str2\n";
}
}

# 結果
# 含まれいる abc/def/abc/def abc/def
# 含まれていない www/nnn/abc/def abc/def
0825デフォルトの名無しさん2012/04/28(土) 19:22:50.66
Perl Cookbookのレシピ6.5 パターンにn番目にマッチする文字列を見つける
問題
3つ目のfishの直前の単語を取得したい。

解法
$WANT = 3;
$count = 0;
while (/(\w+)\s+fish\b/gi) {
  if (++$count == $WANT) {
    print "The third fish is a $1 one.\n";
    # 注意:このループをlastで抜けてはならない
  }
}

このループをlastで抜けてはならないのは何故なんでしょうか?
0826デフォルトの名無しさん2012/04/28(土) 19:47:46.79
>>825
lastがないから。
0827デフォルトの名無しさん2012/04/28(土) 19:50:36.54
>>824
それだとだめ汎用性がない
0828デフォルトの名無しさん2012/04/28(土) 19:54:52.13
>>827
シラネーヨkswwww
お前の言う汎用性とやらをちょっと説明してみろやwww

> 文字列1の最初の位置から見て文字列2が含まれているか
を満たすんだからいいだろアホwwww
でなきゃあもっとテメーが説明しろよクズwwww
プププププウwww
0829デフォルトの名無しさん2012/04/28(土) 20:12:33.65
test1.plの中身
$aaa = 30000;
1;

test2.plの中身
require "test1.pl";
print "$aaa";
1;
これだと30000が表示されますが

test2.plの中身を
require "test1.pl";
package www;
print "$aaa";
1;
とすると$aaaが表示されません
どうすれば表示できるんでしょうか?

0830デフォルトの名無しさん2012/04/28(土) 20:16:38.70
>>829
print "$::aaa";
0831デフォルトの名無しさん2012/04/28(土) 20:27:00.91
>>825
5.005のperlfaq4に含まれ、5.6のperlfaq4には含まれない所まで分かったけど
それ以上は分からず。5.003のjperlでは問題なさそうだった。

http://search.cpan.org/~gsar/perl5.005/pod/perlfaq4.pod#How_do_I_change_the_Nth_occurrence_of_something?
http://search.cpan.org/~gsar/perl-5.6.1/pod/perlfaq4.pod#How_do_I_change_the_Nth_occurrence_of_something?
0832デフォルトの名無しさん2012/04/28(土) 20:30:48.33
requireしたときは、変数を直には呼びたくない きもちわるいから
だから直せ

my $bbb = &test1::getValueAAA(); # $aaa の値を取得
とかにしろ
0833デフォルトの名無しさん2012/04/28(土) 20:36:04.66
言いたいことはわかるが果てしなく例がダサい
0834デフォルトの名無しさん2012/04/28(土) 20:38:08.56
じゃあアンさんが
ガイアがささやくようなカッコイイ例を
是非とも
0835デフォルトの名無しさん2012/04/28(土) 20:39:12.37
>>825
正規表現の修飾子に /g を使っているから、whileを途中でlastすると
次の正規表現の処理が途中から始まってしまって分かりにくいバグになる。
それを防ぐため。レシピ6.5のお題とは直接関係がない。
08368252012/04/28(土) 21:44:31.96
>>831 >>835
http://perldoc.jp/docs/perl/5.6.1/perltrap.pod#General32Regular32Expression32Traps32using32s47etc.
これ見て対象が$_がまずいのか、なんか落とし穴があるのかと思いましたが、
>レシピ6.5のお題とは直接関係がない。
これが正解みたいですね。どうもありがとうございます。
0837デフォルトの名無しさん2012/04/28(土) 23:17:48.46
>>819
if(substr($str1,0,length($str2)) eq $str2){
  print "含まれいる"
}
0838デフォルトの名無しさん2012/04/28(土) 23:21:17.97
>>829
test1.plの中身
package www;
$aaa = 30000;
1;
0839デフォルトの名無しさん2012/04/28(土) 23:34:24.62
数百行前後の小さいスクリプトなら暗黙も良いだろうけど、
use してインポートするか、->() で呼び出した方が良いよ。
08408152012/04/29(日) 00:55:04.43
>>817
ありがとうございます。ノンブロックモードというのがあるんですね。
参考にして書いてみたのがこちらですが、どうでしょうか(タイムアウト処理を省略しました)

use POSIX qw/:sys_wait_h/;
my $pid = open my $reader,'-|',"perl foo.pl $arg";
my $wait_pid = -1;
my $main_process_end = 0;

do {
  if ( $pid && ( ($wait_pid = waitpid $pid, WNOHANG) > 0 ) ) {
    while (<$reader>) { print "$_\n"; }
  }
  # main process
  unless ( $main_process_end ) {
    # do something main process, and turn flug
    $main_process_end = 1;
  }
} while $wait_pid != -1;

close $reader if $reader;

openの仕方によるのだと思いますが、select($pid)では
STDOUTが返ってくる(foo.plのSTDOUTと$readerがつながっているから?)ため
素直にopenしたハンドルから読み込んでいます。
0841デフォルトの名無しさん2012/04/29(日) 07:34:28.93
perlはあらゆる用途のあらゆる規模のプログラムに向いている、といったようなことが「リャマ本」に
かかれていたのだけど本当なの?
0842デフォルトの名無しさん2012/04/29(日) 07:52:06.22
お前ん中ではなってやつだよw
0843デフォルトの名無しさん2012/04/29(日) 09:14:28.36
>>840
http://ideone.com/OXsC2
ざっくり書いてみた。
selectは4引数の方使ってくれい。
0844デフォルトの名無しさん2012/04/29(日) 11:56:45.49
>>841
XSはperlに含むの?含まないの?それとも何でもありなの?
0845デフォルトの名無しさん2012/04/29(日) 17:13:25.29
>>842 がすでに回答しているとおり、主観でしかない。だから他人の回答が
自分に役立つとは限らない。ヒント:「向いている」という単語。
08468152012/04/29(日) 22:30:54.33
>>843
ありがとうございます!!いただいたコードは動作確認できましたが、
使ったことない関数が多くあったり、調べるうちに新知識を得たりと、
なかなか自分のコードに落とし込んでコレだというところまでいきません。
しかしおかげさまでメドは立って来ました。
もしかすると後日、掲載させていただくかもしれませんが、機会があったら見ていただけたら幸いですm(_ _)m

なお、9行目のopenの第3引数が洩れていると仮定して動作させています。
0847デフォルトの名無しさん2012/04/30(月) 19:02:16.28
golf関係で質問させてください.

http://thospel.home.xs4all.nl/golf/minigolf4.html にあるコードで,一番最後に
print<@{q[@b,@ARGV]=@b=0..30}>.$/ とか
print<@{h{@a,@ARGV}=@a=0..30}>.$/ ってのがあるんですが,

・q[@b,@ARGV]になぜ@bを代入できるのか?
・h{@a,@ARGV}ってなんなのか?
がわかりません.確かに実行すると動くんですが…
どなたか解説して頂けませんでしょうか?
0848デフォルトの名無しさん2012/04/30(月) 19:31:37.50
きたねーコードだなw
0849デフォルトの名無しさん2012/04/30(月) 19:51:11.56
qw//とかqw[]とかの囲むなにかじゃねーの
qもhも
0850デフォルトの名無しさん2012/04/30(月) 20:00:30.64
上は @a=0..30;@a[@ARGV]=();print<@a>.$/ の短縮版
下はハッシュスライス my%h;@h{1..2}=1..2
0851デフォルトの名無しさん2012/04/30(月) 20:09:50.09
print <@a>における山括弧の使い方は俺の知ってるのと違うような
どのへんのドキュメントで勉強できる?
0852デフォルトの名無しさん2012/04/30(月) 20:51:46.86
らくだ本に書いてあるよ
0853デフォルトの名無しさん2012/04/30(月) 21:17:24.04
>>852もどうせ知らないだろうから調べてきた
ttp://perldoc.jp/docs/perl/5.14.1/perlop.pod#I47O32Operators
こんなんgolfぐらいでしか使わんなw
0854デフォルトの名無しさん2012/04/30(月) 21:20:09.04
日本にゃgolf好きやacme好きは少ないな。
0855デフォルトの名無しさん2012/04/30(月) 21:33:23.98
だってなぁ。所詮Perlでしか通用しない技術だし。
0856デフォルトの名無しさん2012/04/30(月) 22:01:02.03
globを空文字削除として転用してるということか?
合ってるとしたら、その発想はなかった…
0857デフォルトの名無しさん2012/04/30(月) 22:35:27.98
空文字を無視して最初の要素を取得してる感じかな。
これは知らなかった。

use File::Glob;
print scalar glob(" a b c"), "\n";
08588472012/05/01(火) 01:50:33.08
>>850
助言と色々試行錯誤してみたら,おかげで理解できました.

#!/usr/bin/perl
@a=0..30; @array[@a,@ARGV]=@a;
print<@array>.$/
08598472012/05/01(火) 02:00:06.06
>>858
書いてる途中で送信してしまいました...

>>850
助言を元に色々と試行錯誤したら,理解できました.ありがとうございました.
qとかhってただの変数名なんですね.
@qを@arrayにしてコードを書きなおしてみると,こんな感じでしょうか.

#!/usr/bin/perl
@a=0..30; @array[@a,@ARGV]=@a;
print<@array>.$/

@array[@a,@ARGV]は,@array[@a]=@aなら個数はあっていますが,
@array[@a,@ARGV]だと,右辺の@aで指定しきれてないリスト,つまり()が入るということですね.
たしかに短縮版になってますね...

それにしても,変数名を明示的に囲むだけと思っていた{}が,
@array[@a,@ARGV]=@a; → @{array[@a,@ARGV]=@a}; みたいに,式ごと囲めるとは思ってなかった...
08608512012/05/01(火) 02:28:52.37
教えてくださった>>852-853,あときっかけをくださった>>847
ありがとうございました。勉強になりました。
0861デフォルトの名無しさん2012/05/01(火) 04:08:15.31
qはq//があるからわかりづらいな
0862デフォルトの名無しさん2012/05/01(火) 04:17:06.80
そういう難読コードを読み解くときはとりあえず use O "Deparse" してみるのが鉄則
0863デフォルトの名無しさん2012/05/01(火) 13:02:58.84
独りで全部プログラミングする場合
packageする必要があるのか?

package名::変数名としなければならないので呼び出しの変数名やサブルーチン名が長くなり
プログラムファイルの容量が増えその分重くなる。

他のパッケージにサブルーチンを移し変えた場合
例えばサブルーチンaaaをpackage testからtest2に移し変えた場合
$test1::aaa;を全部$test2:aaa;と修正しなければならない

グルーバル変数名とサブルーチン名を重複させないようにすればpackageする必要なんてないと思うが
むしろpackageしたほうがデメリットあるのでは?
0864デフォルトの名無しさん2012/05/01(火) 13:06:27.50
$test1::aaaと$test2::aaaじゃなくて&test1::aaaと&test2::aaaだった
0865デフォルトの名無しさん2012/05/01(火) 13:54:18.66
>>863
Exporter使って輸出すれば完全修飾名で使うことは無いから、そうすればいいよ。
名前が衝突するかも知れないけど、そこは気を配るしかないね。

パッケージを使う理由は、
1. コードを再利用しやすくなる。変数名もサブルーチン名も衝突しないから。
2. デバッグしやすくなる。問題が出たらパッケージ単位で調べればいいから。
0866デフォルトの名無しさん2012/05/01(火) 14:09:56.30
blessするだろ普通。
0867デフォルトの名無しさん2012/05/01(火) 15:20:10.22
情報の隠蔽を学ぶ段階で、オブジェクト指向を突きつけるのことは、私には無理。
0868デフォルトの名無しさん2012/05/01(火) 15:49:24.83
むしろパッケージ使うの禁止で泣きながら関数名の付けかえとか一度経験すべきw
0869デフォルトの名無しさん2012/05/01(火) 16:01:08.97
その伝統を未来永劫引き継いでいくべき
モダン()Perlなんかくたばれ!
0870デフォルトの名無しさん2012/05/01(火) 21:00:10.87
再帰の練習をしているのですが、再帰せず1度で終わってしまいます

#!/usr/bin/perl

sub unko {
my $name = $ARGV[0];
my $count = $ARGV[1]+0;
print "name=$name,count=$count\n";
if( $count==0 ){exit;}
unko($name,$count-1);
}

unko($ARGV[0],10);

$countがいきなり0になっているように見えます。
どうすれば指定回数分だけunkoが呼ばれるようになるのでしょうか
0871デフォルトの名無しさん2012/05/01(火) 21:11:00.83
サブルーチンの引数は@ARGVじゃなくて@_。基本なのでちゃんと勉強してね。
0872デフォルトの名無しさん2012/05/01(火) 21:11:07.70
sub rec {
my $name = shift;
my $count = shift;
print "$name, $count\n";
return if $count == 0 ;
rec($name, $count-1);
}

rec("myrec",10);
0873デフォルトの名無しさん2012/05/01(火) 21:11:59.06
もしかして:@ARGVと@_をごっちゃにしている
0874デフォルトの名無しさん2012/05/01(火) 21:49:12.00
>>863
> 独りで全部プログラミングする場合
> packageする必要があるのか?

Perlを一人で作ったと考えよう。
packageなしで使いやすいと思うか?
08758702012/05/01(火) 21:51:36.80
ありがとうございます! $_[0]とかに直したところ、
再帰的にunkoが出るようになりました!
0876デフォルトの名無しさん2012/05/02(水) 07:21:10.86
以下の時間の文字列の差分をとってsleep関数でその差分の時間で待機させたいのですが
どのようなコードをかけばいいんでしょうかね?
あと�@の取得方法などもありましたらよろしくお願いします


電波時計などから取得した時間: 07:03:21 �@
ある特定の時間の文字列: 06:54:32

sleep( 07:03:21 - 06:54:32 );
0877デフォルトの名無しさん2012/05/02(水) 09:52:11.20
POSIXの何かを使う
0878デフォルトの名無しさん2012/05/02(水) 10:04:20.32
Time::Pieceで引き算しる
0879デフォルトの名無しさん2012/05/02(水) 14:18:03.51
use Time::Local;
sleep( time - timelocal(32,54,6,2,5-1,2012) );
0880デフォルトの名無しさん2012/05/02(水) 19:45:02.57
>>876
use Net::NTP;
use HTTP::Date;

sleep(
+{get_ntp_response('ntp.nict.jp')}->{'Transmit Timestamp'} -
str2time('2012-05-02 19:40:00')
);
0881デフォルトの名無しさん2012/05/03(木) 01:36:12.43
再帰で連想配列を渡したいんですが、
連想配列のデリファレンスってどうやればいいんでしょうか
0882デフォルトの名無しさん2012/05/03(木) 01:41:01.85
やってみろよ。一発でうまくいくから。
0883デフォルトの名無しさん2012/05/03(木) 01:56:07.03
>>882

use strict; use warnings;
sub unko {
my ($count,%chinko) = @_;
print "count=$count\n";
return if $count<=0;
$$chinko{"$count"}=$count*2; # ★ここがエラー
unko( $count-1,\%chinko );
}

my %chinko;
unko( 5, \%chinko );
for my $i (%chinko) { print "$i\n"; }

こういうコードで試してるんですが、$chinkoが
グローバルな男のシンボルになってしまいます
0884デフォルトの名無しさん2012/05/03(木) 02:00:10.55
リファレンスの型は何かを知らずにチンコ切って死ね
0885デフォルトの名無しさん2012/05/03(木) 02:15:20.04
>>884
もう1時間くらいチンコ切り続けてるんですが、諦めきれません・・・
0886デフォルトの名無しさん2012/05/03(木) 02:21:13.54
sub unko {
my ($count,$chinko) = @_;
print "count=$count\n";
return if $count<=0;
$$chinko{"$count"}=$count*2;
unko( $count-1,$chinko );
}

これでうまく動きました!
>>884さんのヒントが無ければ解決出来なかったよ・・・ありがとう!
Cと同じように考えたらそれなりに理解できた気がする
0887デフォルトの名無しさん2012/05/03(木) 02:24:34.96
デリファレンスを $chinko->{$count} ってシたほうがよくわかるだろ
0888デフォルトの名無しさん2012/05/03(木) 03:48:08.05
>>887
以外と初心者ほどその書き方を知らんのよね
まあ他の言語ではあまりしない書法だから仕方ないが
0889デフォルトの名無しさん2012/05/03(木) 07:56:53.23
>>877
>>878
>>879
>>880
ありがとうございました。ためしてみます
0890デフォルトの名無しさん2012/05/03(木) 08:25:08.08
今日もパールのような物で戦います。
0891デフォルトの名無しさん2012/05/03(木) 09:52:20.57
>>887
俺もコレ分からない!!!調べてみよう
0892デフォルトの名無しさん2012/05/03(木) 11:58:13.86
>>888
C言語で普通にするでしょ、そこから来たんだし
0893デフォルトの名無しさん2012/05/03(木) 12:14:48.97
俺が C で書いてた矢印は幻だったのか
0894デフォルトの名無しさん2012/05/03(木) 12:21:50.02
アロー演算子ドット演算子の呼び方を教えてくれないのは不親切だ!
0895デフォルトの名無しさん2012/05/03(木) 14:00:50.77
>>892
いやC言語のアローの後にブレースや角括弧は来ないと思うぞ
0896デフォルトの名無しさん2012/05/03(木) 14:46:33.74
>>890
ジェイパールですね、わかります。
0897デフォルトの名無しさん2012/05/03(木) 15:55:50.02
矢印はCのとは違いすぎてちょっとわかりにくいな
むしろCの*を使わせる感じのほうがわかりやすい
0898デフォルトの名無しさん2012/05/03(木) 17:58:05.25
Cのポインタは全く詰まることがなかったのに
Perlのリファレンス周りが未だに怪しい
0899デフォルトの名無しさん2012/05/03(木) 18:01:17.83
form.plの中身
package FORM;
(途中略)
$form_data{$name}=$value;  #デコードしてフォームから送信された値を格納する
1;

test.plの中身
pacckage TEST;
%form_data = %FORM::form_data;
print "$form_data{'aaa'}";
1;

他ファイルでフォームデータを受け取るには
このようにすればいいのですか?
0900デフォルトの名無しさん2012/05/03(木) 19:20:33.49
ポインタの場合はどんどんインクリメントしていくと、自分で確保した
領域以上のところまで行ってしまって、バグの元になる。
一方で、リファレンスの場合は実在するメモリの参照を扱うわけなので
領域以上のところにアクセスする危険性がない。
あとは変数のリファレンスやリテラルのスカラー、リスト、ハッシュ、
関数のリファレンスの記述方法を覚えればもう終わり。
0901デフォルトの名無しさん2012/05/03(木) 19:31:57.83
どうして他ファイルでフォームデータを受け取ることを思いついたのか
0902デフォルトの名無しさん2012/05/03(木) 19:38:05.45
>>899
通るのこれc
0903デフォルトの名無しさん2012/05/03(木) 19:57:20.56
>>901
じゃあformデータを受け取るサブルーチンを
各ファイルにコピペするというのか?
他ファイルでデータ取得するしかないだろう
0904デフォルトの名無しさん2012/05/03(木) 20:02:20.12
ま、まあCGIも他ファイルといえば他ファイルだよ…ね?
0905デフォルトの名無しさん2012/05/03(木) 20:06:52.64
>>899
そこまで書けるなら試せばいいじゃん

やり方はスマートじゃないから、俺ならこんなやり方はしないけどね
0906デフォルトの名無しさん2012/05/03(木) 20:19:06.97
>>905
じゃあどのようにやってるの?
0907デフォルトの名無しさん2012/05/03(木) 20:49:37.64
メソッド
0908デフォルトの名無しさん2012/05/03(木) 20:50:17.56
質問スレでくだくだ言っているだけのやつwwwwwwwwwwwww
0909デフォルトの名無しさん2012/05/03(木) 21:03:38.46
>>905
The cgi-lib.pl Home Page ttp://cgi-lib.berkeley.edu/
で、Version 1.14 からはじめようぜ
0910デフォルトの名無しさん2012/05/03(木) 21:26:40.92
>>909
アホか
そんなん使うぐらいならライブラリなしで済ますわ
0911デフォルトの名無しさん2012/05/03(木) 21:31:54.50
レス相手を間違えたんだろう
0912デフォルトの名無しさん2012/05/04(金) 18:11:52.65

@id_list=("aaa","bbb","ccc","ddd","eee","fff");

print "<TABLE>";
foreach $id(@id_list){
print "<TR>";
print "<TD><inpu type=\"checkbox\" NAME=\"check_$id\"></TD>";
print "<TD>";
print "<form method=\"POST\" action=\"test.cgi\">";
print "<input type=\"hidden\" NAME=\"id\" VALUE=\"$id\">";
print "<input type=\"submit\" name=\"shousai_settei\" value=\"詳細設定\" >";
print "</form>";
print "</TD>";
print "</TR>";
}
print "</TABLE>";

これだとチェックボックスのデータが送信できないので
<TABLE>から</TABLE>までをFORMタグで囲むようにしてもFORMのネストになるので
チェックボックスの値が取得できません
このような場合でチェックボックスの値を取得する方法を教えてください
0913デフォルトの名無しさん2012/05/04(金) 18:21:06.06
チェックしたチェックボックスのname一覧を取得したいのです
0914デフォルトの名無しさん2012/05/04(金) 18:42:33.23
>>1を読め。100回読め。声に出して読め。
0915デフォルトの名無しさん2012/05/04(金) 18:43:48.54
>>914
読んだ。
0916デフォルトの名無しさん2012/05/04(金) 19:21:43.38
>>914
今日近くの寺で写経会があったんだけど、般若心経でなく>>1を100回書くのも
ありなのかなと書いてて思った
0917デフォルトの名無しさん2012/05/04(金) 19:39:41.10
誘導することに疲れました。
このjperl(5.003)使いをなんとかしたいです。
0918デフォルトの名無しさん2012/05/04(金) 20:43:40.93
つい答えちゃう頭の弱いやつのせい
0919デフォルトの名無しさん2012/05/04(金) 21:38:55.38
>>917 おまかせあれ。
Shift_JIS(cp932)を使用する
ttp://www.perlplus.jp/perl/encoding/index2.html
0920デフォルトの名無しさん2012/05/04(金) 21:56:12.90
正規表現で利用する文字列に変数って利用できますか?

$itemと$checkって変数を正規表現にかけて、
マッチしたら処理をするって感じにしたいです。
でも、以下のプログラムだとエラーが出てしまいます。
どうしたらいいでしょうか??

if($item =~ /$check/){
    $flg++;
}
0921デフォルトの名無しさん2012/05/04(金) 22:02:59.13
my $item = "this is a pen." ;
#my $check = "gh" ; # (none)
my $check = "th" ; # (match)

if ($item =~ /$check/){
print "match.\n" ;
} else {
print "none.\n" ;
}


エラーがでない
どうやってそのエラーを出せば良いんだ
エラーを出すのも一苦労DA☆ZE
0922デフォルトの名無しさん2012/05/04(金) 22:05:36.17
if($item =~ /\Q$check\E/){
    $flg++;
}
0923デフォルトの名無しさん2012/05/04(金) 22:07:58.11
>>912
<form></form> の外に置かれた <input> を送信してくるブラウザを俺は知らない

HTML 要素は小文字表記

method は post と小文字で表記

use strict と use warnings は必須

ヒント: type="submit" の name は押された時に送信される。
name が aaa bbb ccc の submit があり、bbb の submit を押した場合は aaa と ccc の value は送信されない。


perl を学ぶ前に HTML を学習しような。
0924デフォルトの名無しさん2012/05/04(金) 22:23:09.20
>>923
池沼はよそ逝けよ
0925デフォルトの名無しさん2012/05/04(金) 22:24:16.80
>>923
まとめて氏ね
0926デフォルトの名無しさん2012/05/05(土) 00:16:04.85
>>920
ドキュメントに普通に登場するようなかなりの初歩だから、ネットでぐぐらずに>>2の本のうちどれか買いなさいな。
これからも、そういったど初歩の質問をし続けるつもりですか?
0927デフォルトの名無しさん2012/05/05(土) 00:47:36.06
>>921>>922
できました!
ありがとうございます。
0928デフォルトの名無しさん2012/05/05(土) 00:49:24.49
>>926
おいおい「>>2の本以外は絶対に買うな。特に日本人が書いた奴」を忘れてるぞ
0929デフォルトの名無しさん2012/05/05(土) 01:35:13.10
初心者なのですが、KENTさんの本でお薦めはどれですか?
0930デフォルトの名無しさん2012/05/05(土) 01:39:18.08
KENT神のお書きになられた御本は全てお勧めです
その全てをコンプリートしていても何もおかしくないような名著ばかりです
是非とも全て買いましょう
コンプするのがperlモンガーへの最もな近道です
そしてkENTは紙です
彼(あるいは彼女(に貢ぎましょう
我々は信者であるからして、彼の儲けになるべくして存在している存在なのです
0931デフォルトの名無しさん2012/05/05(土) 02:25:37.65
http://kotobank.jp/word/%E3%82%B1%E3%83%B3%E3%83%88%E7%B4%99

ケントし【ケント紙】

化学パルプを100%原料とした,純白で固く締まった上質の図画用紙。
比較的厚手でインキがにじまず,消しゴムで消しても毛羽立たないが,
鉛筆で書きやすいようないくぶんざらついた面をもつ。
イギリスのケントKent地方ではじめて作られたので,この名称が日本で用いられている。
主用途は製図用であるが,名刺やカレンダーにも使用される。【臼田 誠人】
0932デフォルトの名無しさん2012/05/05(土) 02:29:27.78
>>929
> 初心者なのですが、KENTさんの本でお薦めはどれですか?

そんなもん無いよ。

KENTというのは、2000年より以前の時代。
アマチュアのフリーウェア作家が
頑張っていた時代の人だから。
0933デフォルトの名無しさん2012/05/05(土) 02:31:53.53
>>932
KENTはプログラマだろ。プログラマと言ってもコボラだが。
0934デフォルトの名無しさん2012/05/05(土) 02:34:07.42
KENTのソースコード見て勉強すると
馬鹿になる。
0935デフォルトの名無しさん2012/05/05(土) 02:41:10.05
書籍執筆のご案内
ttp://www.kent-web.com/pubc/book/

ゼロからわかる CGI/Perl超入門はいかがですか?
0936デフォルトの名無しさん2012/05/05(土) 02:44:09.13
KENT は初心者にチン毛が生えたようなもん
チン毛が好きなら買えばいいよ
0937デフォルトの名無しさん2012/05/05(土) 03:13:18.34
○○のラーメン次郎はイマイチみたいな話の流れだな
0938デフォルトの名無しさん2012/05/05(土) 03:14:18.48
ラーメン次郎はどの店もイマイチみたいな流れじゃないのか?


KENTはどのアプリもいまいち
0939デフォルトの名無しさん2012/05/05(土) 03:16:20.68
初心者でも知っているKENT氏をバカするな
0940デフォルトの名無しさん2012/05/05(土) 03:17:17.20
馬鹿にしてない。中学生のコードだって言ってるだけ。
本当の中学生なら頑張ってる方だ。
0941デフォルトの名無しさん2012/05/05(土) 03:17:23.60
KENT は反面教師と言う良い例
0942デフォルトの名無しさん2012/05/05(土) 03:25:00.95
昔はあんなのでももてはやされた
0943デフォルトの名無しさん2012/05/05(土) 08:34:51.25
おれはperl5.0でEUC-JPでのプログラミングが組みやすいし見やすいので好きだ
今のUTF8やオブジェクト指向となんて嫌いだ
0944デフォルトの名無しさん2012/05/05(土) 08:59:47.73
今時ソースコードをEUC-JPにする意味が分からん
環境がUTF-8非対応ならそんなもん窓から投げ捨てろ
0945デフォルトの名無しさん2012/05/05(土) 09:07:24.00
単に新しいものについていけないだけだろうねw
0946デフォルトの名無しさん2012/05/05(土) 09:35:32.90
韓国財閥、ハンファグループの太陽電池事業を手掛けるハンファソーラーワンは3日、
ソフトバンクの自然エネルギー事業会社SBエナジーから太陽電池モジュールの供給企業に選定されたと明らかにした。

 SBエナジーが建設を進める徳島県内の2カ所の太陽光発電所に
太陽電池モジュール5600キロワット分を供給する。
SBエナジーは徳島空港臨空用地と小松島港赤石地区に
出力規模がそれぞれ2800キロワットの発電所を7月までに建設する計画。

 ハンファソーラーワンの関係者によると、日本の太陽光発電市場で
海外の企業が太陽電池モジュールを供給するのは初めてという。


ソース:
http://japanese.joins.com/article/525/151525.html?servcode=A00§code=A10
0947デフォルトの名無しさん2012/05/05(土) 10:08:52.57
>>943
もう無理すんな爺さん
分かってるだろうが、爺さんとは年齢のことではない
0948デフォルトの名無しさん2012/05/05(土) 10:57:14.82
KENTさんのプログラムは初心者にも分かりやすくて勉強になります
できればこの組み方を多くの人に知ってもらいたいです
0949デフォルトの名無しさん2012/05/05(土) 11:05:11.38
>>944
アマチュアプログラマ乙。
0950デフォルトの名無しさん2012/05/05(土) 12:09:54.27
gifcatを作ったとほほはすごい
0951デフォルトの名無しさん2012/05/05(土) 12:17:50.92
何だかんだ言ってるけどおまえらKENTよりプログラムできるのかよ
0952デフォルトの名無しさん2012/05/05(土) 12:30:04.90
できないです...ただモダン、モダンといっているだけです...すみません
0953デフォルトの名無しさん2012/05/05(土) 12:38:53.95
でもKENTさんの本を10分で読むことならできます
0954デフォルトの名無しさん2012/05/05(土) 12:38:59.59
まぁ、「perlのパスが分かりません!サーバはGeoCitiesです、パソコンはWinXPです!」みたいな
レベルの質問をサポート掲示板にしてくるようなユーザばっかりだから

そういう環境では、「自分の実装以外の一切を信用しない、perlコア以外は利用しない」という
やり方をせざるを得ないのかな
0955デフォルトの名無しさん2012/05/05(土) 13:20:30.93
euc-jpのみで書いて処理が可能な案件なら、そっちの方がラクなことは確か。
文字コード変換とか考えないで済むからね。
でも日本語処理でeuc-jpはけっこう罠があるよ。パターンマッチとか。
perlじゃなくてawkだけど、大昔のまだ初心者だった頃に大失敗こいた。
なので今日びutf8で処理する手順を手に馴染ませちゃった方が、
結局のところは早いし確実だと思う。
0956デフォルトの名無しさん2012/05/05(土) 14:01:09.08
>>954
KENTは馬鹿よけとして最適だなw
おじいさん・おばあさん向けパソコン教室的なやつで
明らかにレベルが低い教室であっても
存在価値はあることが解るだろう。
0957デフォルトの名無しさん2012/05/05(土) 14:19:02.43
【中国BBS】韓国産白菜の名称を改名! 中国人たちの意見は?
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0505&f=national_0505_039.shtml

 中国の掲示板サイト天涯社区の掲示板に「韓国がまた改名するぞ!」というスレッドが立てられた。
スレ主は、これまで国際的な食品分類で、チャイニーズキャベツ(Chinese cabbage)であった韓国産の白菜が、
キムチキャベツ(Kimchi cabbage)になるというニュースを紹介した。

  今回の名称変更に賛成という意見には次のようなものがあった。

・「国際的に韓国がキムチの宗主国と認められたということだ」
・「うん、キムチ国としての風格があるね」

  しかし、反対意見もないわけではなく、「白菜を代表して抗議する。白菜はキムチにしか使わないというのか!」
  という意見もあった。また、比較的多かったのが、国名も変更すれば?という意見だ。

・「何を言っても、キムチ国の方が韓国よりも聞こえがいいよね」
・「韓国は国名をキムチ国に変えるべきだろう!一目瞭然で非常に良い!」
・「はやく大キムチ国に改名してください」

  他にも「国旗もキムチに変えたら?」という意見まであった。だが、今回の名称変更くらいは大目に見ようという意見も多かった。

・「韓国の劣等感は無限大だからな」
・「ハハハ!許してやろうよ」
・「韓国は可哀想な国なんだよ。同情してあげなきゃ。あざ笑っちゃダメだよ!」

  ほかには、韓国起源説を持ち出して「何年かしたら、韓国の学者がキムチは世界の白菜の先祖だというだろう」と予測する人
  もいた。全体的には、今回のニュースについては比較的冷静に捉えているようだった。(編集担当:畠山栄)
0958デフォルトの名無しさん2012/05/05(土) 14:41:07.76
環境的にほとんどperlコアしか使えないん人には有効なの?
0959デフォルトの名無しさん2012/05/05(土) 14:44:40.75
なんでプログラマごときが文字コードを自由に選択できるんだよ
家族経営じゃあるまいし
0960デフォルトの名無しさん2012/05/05(土) 15:23:14.74
>>959
プログラマ以外の誰が選択するんだよw
0961デフォルトの名無しさん2012/05/05(土) 15:23:44.10
でも、フレームワークについても同じ事が言えて、
フレームワークなんてすぐobsolutedになるから絶対使わない、CGIでいく、という人もいる

フレームワークの古いバージョンを入れようとすると、モジュール依存地獄を見るからなぁ
0962デフォルトの名無しさん2012/05/05(土) 15:24:55.27
>>961
CGIでいく。とか言ってる時点で
お前初心者だって分かるよw
0963デフォルトの名無しさん2012/05/05(土) 15:31:04.07
>>962
えー、クラシックだけどcgi/fcgiで十分じゃない?
Rackなんかに手を出してしまうと仕様変更追っかけゲームになるよ
0964デフォルトの名無しさん2012/05/05(土) 15:36:02.70
>>963
えとさ、モジュールは自分で選ぶってこと知らないの?

なんで、相手に合わせるのさw
0965デフォルトの名無しさん2012/05/05(土) 15:38:40.13


フルスクラッチでいかせてもらいます

0966デフォルトの名無しさん2012/05/05(土) 15:40:33.88
手段と目的が逆になった瞬間w
0967デフォルトの名無しさん2012/05/05(土) 15:46:53.49
じゃあPerlでオーソドックスな開発環境って何なんだと
皆mixiみたいにmod_perlでApacheモジュール書きまくってるの?
0968デフォルトの名無しさん2012/05/05(土) 15:49:24.35
mod_perlでApacheモジュール書きまくる

↑

みなさん、言ってることが意味不明なの
わかりますよねw
0969デフォルトの名無しさん2012/05/05(土) 15:50:42.47
>>967
お前は、Apacheモジュールを
作るのに何を使ってるの?
0970デフォルトの名無しさん2012/05/05(土) 15:51:55.06
>>969
C
0971デフォルトの名無しさん2012/05/05(土) 15:55:35.23
Cでウェブアプリってるわけじゃないでしょう?
0972デフォルトの名無しさん2012/05/05(土) 16:03:41.41
>>964
相手に合わせるってどこから出てきたんだ?
0973デフォルトの名無しさん2012/05/05(土) 16:05:40.96
>>972
どうせ、安共有サーバーで入ってるモジュールのバージョンが〜ってやつでしょ?
モジュールなんて自分で入れ替えればいいのよ。
0974デフォルトの名無しさん2012/05/05(土) 16:18:53.59
以降、fcgi派とmod_perl派のフレームをお楽しみください
0975デフォルトの名無しさん2012/05/05(土) 16:25:19.79
ま、おれ位のレベルにもなればWebサーバごとまるっとアプリケーション
を実装するがな
0976デフォルトの名無しさん2012/05/05(土) 16:29:39.77
データはお前の私物なのかよw
0977デフォルトの名無しさん2012/05/05(土) 16:34:06.29
>>974
Plack派が調停に入るもつかの間、次はフレームワーク戦国時代が
0978デフォルトの名無しさん2012/05/05(土) 16:39:48.84
今ならVPSが月500〜1000円で借りられるんだから
普通それ使うでしょ。だから環境は好きに選べる。

自分でサーバー運用するぐらいの知識がないのは
初心者なんで、どうしようもない。

初心者は自分の力量による制限に苦しむのはしかたのないこと。
0979デフォルトの名無しさん2012/05/05(土) 17:02:10.29
質問スレで何やってんの?
0980デフォルトの名無しさん2012/05/05(土) 17:15:25.31
WebProg板
http://kohada.2ch.net/php/
0981デフォルトの名無しさん2012/05/05(土) 17:52:06.31
おまえらGWもプログラム議論かよ
0982デフォルトの名無しさん2012/05/05(土) 17:55:24.28
参加者ひとり追加です
0983デフォルトの名無しさん2012/05/05(土) 17:58:10.47
腐臭漂う言語に次スレはいりません
御役御免
0984デフォルトの名無しさん2012/05/05(土) 18:01:24.49
意訳

つ、次スレなんかいらないんだからね!
でも・・・立てちゃったら仕方ない・・けど(ボソッ
0985デフォルトの名無しさん2012/05/05(土) 18:02:56.32
あいまい検索みたいなものってどうやって実装すればいいでしょうか?

例えばエノテカのホームページにあるワインの売れ筋情報が、
自分のところで取り扱っているPOS上に登録した商品名とマッチするかどうか
判断させるみたいな。

例)
エノテカ側:CH.モン・ペラ・ブラン
自分のところ:シャトー モン ペラ プルミエール・コート・ド・ボルドー 2009


ほかにも同じような名前の商品がある中で、ヴィンテージ違いは許容対象内として
上記二つを同じものであると判定させたいのです。
0986デフォルトの名無しさん2012/05/05(土) 18:03:59.63
>>985
地道に対応データベースを作って下さい。
0987デフォルトの名無しさん2012/05/05(土) 18:05:15.11
わーどやえくせるでも実装されているので
お前らにできないわけがない
0988デフォルトの名無しさん2012/05/05(土) 18:06:13.45
ワードやエクセルと同等の開発費をくれれば
俺にも出来るよ。人雇うけどね。
0989デフォルトの名無しさん2012/05/05(土) 18:13:56.01
sqlのlikeじゃだめなん?
0990デフォルトの名無しさん2012/05/05(土) 18:15:00.12
ダメに決まってるだろwww
0991デフォルトの名無しさん2012/05/05(土) 18:16:00.86
正規表現でそれっぽいのがヒットするように頑張る
0992デフォルトの名無しさん2012/05/05(土) 18:17:08.54
正規表現に期待しすぎなやつ多いよなw
0993デフォルトの名無しさん2012/05/05(土) 18:19:25.15
バイトにチェックを頼む
0994デフォルトの名無しさん2012/05/05(土) 18:21:58.78
でもまあ実際のところ
文章Aと文章Bがどのくらい似ているかを判定するモジュールくらいは
CPANにあると思う
ベイズ分類器もあるくらいだし
0995デフォルトの名無しさん2012/05/05(土) 18:24:30.86
文章といえるぐらいの量があれば別だが、
この程度の量では無理
0996デフォルトの名無しさん2012/05/05(土) 18:28:45.92
エキスパートシステムでルール作ってある程度の類似度を示すぐらいしか思いつかんわ。
0997デフォルトの名無しさん2012/05/05(土) 18:33:42.45
エノテカ側の区切り文字が・で
自分のところの区切り文字が全角スペース
ほかもそうならそう難しくないような
0998デフォルトの名無しさん2012/05/05(土) 18:35:07.64
CH = シャトー

言われなくても分かるよな?
0999デフォルトの名無しさん2012/05/05(土) 18:37:18.29
>>997-998が作ってくれるってさ。
1000デフォルトの名無しさん2012/05/05(土) 18:39:04.73
終了
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。