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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:10:40 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 pc11.2ch.net/php/ )

CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2008/08/11 現在の最新版(安定版): 5.10.0
● 2008/08/11 現在の開発版: 5.9.5

▼ 前スレ
Perlについての質問箱 36箱目
pc11.2ch.net/test/read.cgi/tech/1215569470/

リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5-6 あたり

116 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 11:45:57 ]
>>103のようなチンポしゃぶりがいる限り、寄生虫は出現しつづける。

117 名前:103 mailto:sage [2008/08/17(日) 12:32:20 ]
>>116
だってかわいそうなんだもの。
この子がこのまま社会に出るなんて、ぞっとするんだもの。

118 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 13:58:33 ]
>>117
社会に出て来ることを前提にするからそうなるわけで
社会が受け入れを拒めば良い。ニートも珍しくない時代だぜ。


119 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 14:00:35 ]
>>117はすでに問題の寄生虫に依存している。



120 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 14:03:36 ]
>>117
歪んだ持論で100に粘着したり、
「ぐぐれカス」で済むところをねちねち言ったり、
自治しようとしたり。

お前さんのウザさは、107と変らんよ。

121 名前:103 mailto:sage [2008/08/17(日) 16:33:09 ]
>>118
ニートが社会に拒まれてそうなるというのは新説な気がするの。
どちらにしろそういう事例は少ないほうがいいと思うの。
でもこのスレでやるべきことじゃないとは思うので反省してる。

>>119
誰かボクを隔離して欲しいの。
でもこれ以上迷惑になるいけないのでがんばって自分で克服します。

>>120
ウザくてごめんなさい。
持論が歪んでるのは自覚があるので鵜呑みは危険と言っておくの。

ボクが言うのもなんだけど、みなさん気にせずPerlのお話しましょう。

122 名前:デフォルトの名無しさん [2008/08/17(日) 17:08:03 ]
なんかすごく怖くなってきた

123 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:19:19 ]
>>110
これで、文章が表示されるのと合わせて、
音楽を鳴らしたいんだけど、
(本物のウイザードリーみたいに)
Perlだと実装はものすごく面倒なの?

124 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:27:00 ]
みんな聞いてくれ!
pc11.2ch.net/test/read.cgi/php/1204488452/556
で、質問がでていたので、
pc11.2ch.net/test/read.cgi/php/1204488452/560
と、オレ様が、かっこよく回答しちゃったぜ!
ちなみに、あってるかどうかは、知りません



125 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:27:01 ]
がんばって、あなたなら出来るわ

126 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:33:02 ]
合ってないところがいいな。

127 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:46:30 ]
統失で10年くらい入院したあと退院してPerlに目を付けたという感じか?

128 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 19:58:01 ]
>>123
Win32::Sound

129 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:00:22 ]
perldoc に関する質問です。

ある単語 foo に関する perl のドキュメントを読みたいが、

perldoc foo → No documentation found for "foo"
perldoc -f foo → No documentation for perl function `foo' found
perldoc -m foo → No module found for "foo"
perldoc -q foo → No documentation for perl FAQ keyword `foo' found

となるとき、すべての perl ドキュメントから foo を検索して、
どのドキュメントを見ればよいか表示するような機能はないでしょうか?

例えば __PACKAGE__ を調べようとしても上の4つではだめで、
最終的には perldoc perl の出力を眺めて当たりを付けて、

perldoc perldata

に辿り着きましたが、当たりを付けるまでに手間がかかります。

zsh のマニュアルの man zshall のように、インストールされているすべての
ドキュメントを連結表示するとかでもいいのですが。


130 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:36:17 ]
aaa
aaaa
aaab
aaaaa
aaaab

参考書読んでて、
文字列ソートすると、こういう順番に
なります、と書いてあって、どうしても理解できなくて、
ホームページの正誤表みたら、誤植だった。
ただしくは
aaa
aaaa
aaaaa
aaaab
aaab
だった。なんでbが先にくるかなあ?と
1時間悩んだ。

131 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:48:22 ]
>>129
力技。
find /usr/lib/perl5/5.10/pods -name '*.pod' | xargs grep -i KEYWORD | less
あとはGoogle DesktopやWindows Searchでドキュメントの領域を検索対象にするとか。


132 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:25:23 ]
>>128
なんかすげー難しそう
1行書いたら音が出るみたいのを
イメージしてたんだけど、
HSPとかRPGツクールとかだと
音出すなんて簡単だったんだけど、
Perlでは難しいってことかな?

133 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:31:27 ]
>>131

ありがとうございます。find | xargs grep | less 系のやり方をする
ことにしました。(あるいは同様のコマンド)


134 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:36:25 ]
>>129
これってぼくも誰も作ってないのかなと思ってるんだけど、
やっぱり誰も作ってないのかい。



135 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:43:32 ]
検索してたらこんなものを見つけてしまった

353 名前:名無しさん 投稿日:2001/02/08(木) 12:40
Perlで音を出すことって出来ないでしょうか。
処理が終了したときにちーんと鳴らしたいのですが。

www.angelfire.com/ak5/2ch-web-program/kako/979894521.html

136 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 00:05:14 ]
>>128
やってみた。
かんたんだった。

use Win32::Sound;
Win32::Sound::Volume('100%');
Win32::Sound::Play("file.wav");
Win32::Sound::Stop();

↑これを書くだけで、できた。
Win32::Soundは最初から入っていた。

137 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 00:26:36 ]
Win32::MIDIって使い方がよくわからんな。
midiを鳴らすときは、必ずWin32::MIDIでないとだめなの?
それとも、midiもWin32::Soundでいけるの?

138 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 00:54:45 ]
perlでmidiファイルを鳴らす方法がまじでわからんわ。
midiファイルを指定して、すぐに鳴らすとかできないのかな?

139 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:00:59 ]
>>134
順序が逆だっちゃ。
大量のドキュメントに対して grep などによる全文検索だけでは不便だから perldoc のセクション特定用の各オプションがある。

140 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:04:19 ]
>>139
> 順序が逆だっちゃ。

これは順番の問題ではない。不便な全文検索が問題なら不便でない全文検索が
求められるだけのこと。

141 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:38:01 ]
ま、いずれにせよ、「それを欲しい者がそれを作る」のが基本だべさ。

142 名前:103 mailto:sage [2008/08/18(月) 04:34:08 ]
>>140
全文検索自体が不便つーことでなく、単純な全文検索だとどこからでもパターンを拾ってきちゃうから、-f だの -q だのがあんだべ、って話。
パターンがどのファイルのどこにあるか知るだけなら find, grep で特に不便もないし、それ用の Perl スクリプトを書いても2分てとこだろ。

143 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 04:37:30 ]
>>142
> パターンがどのファイルのどこにあるか知るだけなら

そんなのじゃ不便過ぎるだろ。


144 名前:デフォルトの名無しさん [2008/08/18(月) 07:43:42 ]
不便に思ったことないんだがどんな使い方がしたいんだ?

まさか初めてのPerlすら持ってない奴の戯れ言じゃないだろうな……



145 名前:デフォルトの名無しさん [2008/08/18(月) 07:49:29 ]
子供はHSPでも使ってろ

HSPには可変長配列は無いがな!!(まさに外道)

146 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:55:44 ]
アセンブリを外道と言うな。

147 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 15:27:11 ]
夏だなあ

148 名前:デフォルトの名無しさん [2008/08/18(月) 15:43:15 ]
確実にここではないと思うのですが、どこなのか分からなくてスミマセン。

perl書くときに $ とか %#"'() など良く打つと思いますがshift押さずに入れるように
するようなソフトや方法はありますでしょうか?

数字はテンキーがあるのでキーボードの1〜9の範囲は全部記号にしたいのですが。

149 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 16:39:16 ]
>>134
もう数年前になるけど、大学の研究室に、Perl関係のドキュメントを
インクリメンタルに全文検索でひけるソフトがあった。

Rubyで書かれていたけどw


150 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 17:10:00 ]
active perlでのforkについてです

子プロセスの上限を決めてforkで処理するのに、
pidをpushしていって、上限を超えたらいちばん古い子プロセスをwaitpidしていますが、
たまたまそいつが遅いと他のプロセスはとっくに終わってるのに先頭のを待ち続ける、
というはめになります

pidのリストのうち、どれか一つ終わったら、という処理をさせるには
どうすればいいですか

151 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 17:31:18 ]
>>150 $SIG{CHLD} じゃダメ?

152 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 17:31:28 ]
>>150
っ[Parrallel::ForkManager]

153 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 17:51:40 ]
>>148
スキャンコードをリマップすることにより可能。
方法は OS 等により異なる。使用 OS の板・スレで聞くといい。

154 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:05:26 ]
d
勉強してみます



155 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:05:41 ]
154=150

156 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:41:09 ]
WAVEを鳴らすのは、カンタンにできたんだけど、
midを鳴らす方法がわからない。
MP3については、mediaplayerなんとか、っていうモジュールを
使えばいいみたいなんだけど、ppmでダウンロードのリストに入ってない。

157 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:43:28 ]
数字をランダムジェネレートして、
アルファベットの小文字と大文字
a-z,A-Zにchrを使って変換して表示する
プログラムを作ろうと思ったんだけど、
65-120だと、まんなかに、余計な記号が入ってしまう。

この場合、if 95<x<98 then redo
でいいのかな?
もし記号の数字だったら、ルーレットをまわした結果を
破棄して、もう一度ルーレットをまわすって言う。

158 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:45:00 ]
ようは、randで、65-95、かつ95-120の数字がほしい、
って指定できればいいんだけど、できないんだよね。

他の言語だとできるの?

159 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:46:09 ]
>>158
まちがえた。

○ようは、randで、65-95、かつ98-120の数字がほしい、

160 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 19:19:20 ]
>>157 発想を変えてみる
@str = (a..z,A..Z);
print $str[rand(@str)];


161 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 20:25:45 ]
>>160
なんもプリントされないんだけど。

162 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:08:40 ]
こうですか?

$x = int(rand(52));
print chr(($x + ($x % 2) * 63+ 130)/2);


163 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:17:41 ]

my $a;

do {
$a=int(rand(123-65)) +65;
say "fault!";
} while ($a<=96 or $a>=91);


print $a;


↑これやると無限ループになる。なんで?

164 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:20:53 ]
>>163
自己解決した。
orじゃなくてandだった。

こんな難しいバグも一人でデバッグできるオレ様の単価は
120万円/月くらいですか?



165 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:29:18 ]
my $a;
my $b;
for ($b=1;$b<=8;$b=$b+1){
do {
$a=int(rand(123-65)) +65;
} while ($a<=96 and $a>=91);


print chr($a)," ";
}


↑やったーパスワード発生器できたよー

166 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:34:31 ]
system q|cls|;
my $a;
my $b;
for ($b=1;$b<=8;$b=$b+1){
do {
$a=int(rand(123-65)) +65;
} while ($a<=96 and $a>=91);

sleep(0.5);
print chr($a)," ";

}
print "\n";

↑こっちのほうが、ちょっとかっこいいかな?

167 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:46:46 ]
今、考えてるのは、
配列に、3つの要素が入ってるとして、
その3つの要素を連結して、一つの文字列にして、
スカラー変数にいれるということ。

@a=('a','b','c')
だとして、
$b="abc"
にしたいということ。

自分で考えるから、おまいら、絶対に正答を書くなよ!
いいか、絶対に書くなよ!

168 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:50:53 ]
sub genpass {
    my @chars = (0..9, "A".."Z", "a".."z");
    join "", map { $chars[rand(@chars)] } 1..8;
}
print genpass(), "\n";

169 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:55:05 ]
>>168
こ、これは、、、
スカウターの数字が、、、
パールレベル12を超えてるだと?!

170 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 22:01:36 ]
これ以上このスレに常駐するなら、あぼーんするからコテつけてくれ。

171 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:11:06 ]
use feature qw( :5.10 );
use Time::HiRes 'sleep';
$|=1;
#----------------------------------

system q|cls|;
my $a,$b,@c,$e;

for ($e=1;$e<=5;$e=$e+1){ #外側のforループ
for ($b=1;$b<=3;$b=$b+1){ #内側noforループ
do {
$a=int(rand(123-65)) +65;
} while ($a<=96 and $a>=91); #do-while文


push(@c, chr($a));#生成したランダム文字を配列にプッシュ

}

my $d;
$d=join ("",@c);#配列に格納されている文字をスカラー変数に代入

say "$d";#文字を出力
@c=();#配列を初期化
}
#----------------------------------------

↑やったー
ランダムな3連文字列を5回出力することに成功
あとはソート部分のロジックだけだー

172 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:14:45 ]
>>168
実を言うと、

>print genpass()

ここがわからなかったりする。
無名サブルーチンの呼び出し?
サブルーチンを呼び出して、その返り値を
プリントしている?

173 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:22:56 ]
randの引数に、配列を入れるってのは、ありなのか?

174 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:25:31 ]
ありだよ。



175 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:25:54 ]
レベル低い質問ばっかりだな

176 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:26:48 ]
>>175
妬むなよ!


177 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:27:05 ]
レベル低い煽りばっかりだな

178 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:28:28 ]
そりゃ、初心者の廚が常駐してんだもん、
レベルの高い質問になるわきゃねえ。

まあ、夏休みが終るまでの我慢我慢。

179 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:44:47 ]
夏休みであって欲しいとか小中学生であって欲しいとは思う。

180 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 01:03:15 ]
>>168
見ればみるほどすごいわ
天才だろこれ

181 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 01:53:07 ]
>>180
grepやmapは暗黙的なloopを構成できるので、
馴れればすぐにそれっぽく書けるようになるよ。

182 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 01:56:59 ]
さーせん、xmlの変更処理で、簡単で短いコードを教えてください。
検索処理ではなく、変更処理っす、文字列でなく、xml文章として扱って変更するタイプ。
入力xmlは、標準入力かファイル名、出力するxmlは標準出力
処理前xml
<xml? ....ありきたり>
<root:yesroot>
<!-- subtree -->
<subt e='befoore' />
</root:yesroot>

変更後xml
<xml? ....ありきたり>
<root:yesroot>
<!-- subtree -->
<subt ele='after' />
</root:yesroot>

自分で作るにあたって参考にしたサイトは、
www.ibm.com/developerworks/jp/xml/library/x-xmlperl1.html( 1 - 3)
なんですが、どうも簡単。ってレベルじゃないと”感じ”ました。
javac,c,python,rubyでやっても同じじゃん。みたいな。

183 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 02:11:33 ]
>>181
みっともないやつだな

184 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 02:59:31 ]
>>182
> 検索処理ではなく、変更処理っす、文字列でなく、xml文章として扱って変更するタイプ。

Perl は入力をほとんど常にバイト列として扱います。
XML として扱いたいなら XML::* モジュール郡を使ってください。

> javac,c,python,rubyでやっても同じじゃん。みたいな。

そういうことなら Perl にこだわる必要もないのでは?



185 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 10:54:11 ]
CGIレベルでなくて、純粋なコンソールレベルの
perlの入門書を探しているんだが、あんまりないね。
結城さんのは読んだし、すぐわかるperlは今読んでるし。

186 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:08:22 ]
Perl初めて塾 やさしいPerl [表計算的処理編]
ミニマルPerl
Perlクックブック Volume 1

等々あるけど、べつに結城本でもテキスト処理はカバーしてるよ。
CGIも処理の大半はテキスト処理だし

187 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:19:56 ]
何でこんな変な文字列になるのですか?

$a = "\Q声";
print $a # => \申コ

188 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:24:45 ]
\Q ... \E は英数字以外の文字にバックスラッシュを追加する

189 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:37:28 ]
>>188
そうなんだ
サンクス

190 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 17:11:25 ]
>>172
ヒント:

sub hogehoge(){
'Hello World!!';
}
print hogehoge(); #Hello World!!

191 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 19:53:40 ]
>>190
なにか、名前はついてるんですか?
「サブルーチンの、無宣言呼び出し」とか。
名前がわからないと、本で調べることもできないし。

たぶん、このサブルーチンの呼び出し方は
入門書レベルでは解説ないですよね?

&をつけて呼ぶ方法しかのってないのが普通だと思う。

192 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 20:09:01 ]
本が古いだけなんじゃ

193 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 20:31:06 ]
ラクダ本だと「裸のワード」ってよばれてる。
$, @, & とかなくてクォーテーションで囲まれてない文字列をどう解釈するか。

@list = (hoge, hage);
print $list[1];

とかね。

194 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 20:41:57 ]
>>191
>&をつけて呼ぶ方法しかのってないのが普通だと思う。
…いつの時代の人ですか?



195 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:02:35 ]
…誰も突っ込まんから一応突っ込むが、
>>168はごくごく普通のサブルーチン
>>190はプロトタイプ付きのサブルーチン(引数を取らないと宣言している)

本人は解ってて書いてるのかも知れんが、
sub hoge(){
 my $dat = shift ;
 …
}
とかやる奴が出てきそうで怖い

ってここまで書いて初心者スレじゃない事を思い出した。ご丁寧に書く必要なかったな

196 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:30:42 ]
初心者スレとかあるの?

197 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:03:03 ]
webprogにあるよ

198 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:46:49 ]
>>195
微妙に難しいな。
いや解説してくれたのはありがたいんだけど。
プロトタイプってレベル2だろ。

199 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:16:23 ]
あっち池。

Perlコーディング初心者質問スレ Part 58
ttp://pc11.2ch.net/test/read.cgi/php/1218030872/
くだすれPerl(超初心者用)2
ttp://pc11.2ch.net/test/read.cgi/php/1204488452/


200 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:14:27 ]
>>199
一時期そちら方面でもお見かけしたのですけれど、
どうも、その…、回答者の質がお気に召さないご様子でして、
大変光栄なことに、数を撃てばなにがしかの情報が引き出せて、
かつ適度に遊んでもらえるこちらに居を定められた模様なのですよ。

個人的に殿下には、同じあちらでも下記スレをおすすめ申し上げたい。
pc11.2ch.net/test/read.cgi/php/1158647441/l50

201 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:39:07 ]
何度同じサイクルを回れば気が済むんだよ、チンポしゃぶりどもが。

202 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:54:32 ]
おまえもな

203 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 01:09:57 ]
おまえもな


204 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 01:17:11 ]
おれらもな



205 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 01:17:56 ]
おまえだけだよ

206 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 01:24:36 ]
いやいやおまえもだろ

207 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 02:58:59 ]
もういいです

208 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 14:06:12 ]
いやいやよくない

209 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 15:22:53 ]
こういうのははっきりさせとかないとな

210 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:06:37 ]
正規表現って、
s///と、
tr///と、
m///と、
3つの種類しかないの?

211 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:13:12 ]
つ split(//)

別にこれらが正規表現な訳では無い
これらのパターンマッチ関数で正規表現を使用しているという事

212 名前:デフォルトの名無しさん [2008/08/20(水) 20:38:24 ]
質問age

hoge.plは処理の中でlocaltimeを取得するんですが、hoge.pl自体の改修はせずに
実行時にlocaltimeを指定してやることは可能でしょうか?

別のhogehoge.plを作って、その中で指定した値をlocaltimeとしてhoge.plに渡して実行
みたいなことができるとベストなんですが。

213 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 22:30:23 ]
意味不明

214 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 23:05:42 ]
>>212
が言いたいのは、たぶん、
hogehoge.plの中味で、
$a=123456;
とかを指定。
そんで、
localtime=$a;
とかにする。そんで、
hoge.plを実行するときに、引数で渡す。

perl hoge.pl localtimeとか。
そしたら、hoge.plが、引数として渡された
localtimeを食って、localtimeとして実行する。

こんなイメージだと思う。違ってたら言って。



215 名前:212 mailto:sage [2008/08/21(木) 00:00:51 ]
>>214
すいません、ちょっと違います。

hoge.plは純粋にlocaltimeを取得するだけで
引数をlocaltimeとして扱うという機能はありません。
例えば、実行するとそのときの時刻をテキストに書き込む、といった感じです。

実行したときの実際の時刻とは違う時刻を取得させたいのですが
hoge.pl自体を改修せずに実現できないものかと考えております。

216 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:28:35 ]
最初から、そのhoge.plが、
引数を食うような設計になってないと、
無理なんじゃないかな。

217 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:33:33 ]
ビルトイン関数をユーザ定義関数で置き換えることって出来なかったっけ?

218 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:13:12 ]
# hogehoge.pl

chomp( my $the_world = `time /t` );
my $you_want = '00:00';
system( 'time', $you_want ) and die;
system( 'perl', '.\\hoge.pl' ) and die;
system( 'time', $the_world ) and die;

# そんなことやってると、もっと恐ろしいものの片鱗を味わうことになる。
# 今のうちにやめとけ。俺は止めたからな。

219 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:50:57 ]
ビルトイン関数のオーバーライドはできるよ

220 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 02:25:11 ]
localtime($hogehoge::hogetime) とか hogehoge::hogetime() にするのが本当に無理な状況なら
権限がないので書き換えられないと書いてそうなんだけどな。

221 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:06:25 ]
www.nicovideo.jp/watch/sm2744352

これってperlでもできるのかな?

222 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 17:19:21 ]
ああ

223 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 18:22:30 ]
Q.「〜はPerlでも可能ですか?」
A.「できます」

ほとんどの "〜" について上記の答が返ってきます。
"〜" が「電気ストーブの作成」である場合等、いくつかの例外を除いて。

224 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 18:28:57 ]
>>221
電気ストーブ作りたいならここ参考にね☆
pc11.2ch.net/test/read.cgi/php/1010583350/



225 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:11:55 ]
なんか質問の趣旨が誤解されてるようですが、
perlで同じ物作れるか?って質問でなくて、
perlでソースコード組むときに、このシステム使って
ネット経由でペアプログラミングしたりとか、
自分のコーディングを録画して中継したりとか
できるのかな?って意味だったのですが。

226 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:15:18 ]
うむ

227 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:15:21 ]
ああ

228 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:36:43 ]
kazato.run.buttobi.net/cgi-bin/material/src/vm002_0183.png

perl版のこういうの作らない?

                while

文字列の長さを取得する     ループを作る

みたいなの

229 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:37:33 ]
>>226
ちょっとperlでソースコード書いて、
>>221のシステムでうぷしてもらえませんか?

230 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 04:29:53 ]
>>228
作っていいぞ。

>>229
うpっていいぞ。

231 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 10:20:37 ]
ばかなんじゃないの

232 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:42:37 ]
おまえもな



233 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:14:57 ]
おまえもな

234 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:17:41 ]
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエモナー
  (    )  \_____
  | | |
  (__)_)



235 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:55:27 ]
言い出しっぺの法則。
自分が欲しいものは自分で作れ。

236 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 16:35:25 ]
>>235
言い出しっぺの法則は、「言い出しっぺがやらない限り誰もやらない」だ。

237 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:02:15 ]
>>236
言いだしっぺの法則は、「お前がやれ」って返って来る法則のことじゃないのか?

238 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:10:39 ]
>>237
いなかっぺ大将は、「キクしゃん、ハナしゃんと西一の三角関係」を描いた物語ですよ確か。

239 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:49:44 ]
>>238
違うダス!
わしとキクしゃんの恋愛物語なんダス!

240 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 08:37:58 ]
かなりのおっさんがいる?

241 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 17:41:35 ]
にぎりっぺ

242 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 18:58:42 ]
ActivePerl v5.10.0 を使用しています。

LWP::UserAgent を使用して、たとえば https://mixi.jp に接続すると、
Client-SSL-Warning: Peer certificate not verified がレスポンスヘッダに出てくるのですが、
これを解消するためにはどうすればよいのでしょうか。

243 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:16:50 ]
Crypt::SSLeayを入れる

244 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:19:37 ]
Crypt::SSLeay は 0.57 が入っていました。



245 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:01:55 ]
OSはWindows2000でActivePerlについての質問です。

よくCPANから○○をとってきてインストールしろとか
みますが、Activeperlを使っている人は、PPMで
インストールできるモジュールしか使えないのでしょうか?
PPMのインストールのメニューに出てくるという意味です。

246 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:07:55 ]
PPMを起動すると、
kazato.run.buttobi.net/cgi-bin/material/src/vm002_0191.png
こんな画面がでてきて、ほしいファイルを右クリして
インストールする仕組みになっています。
これって誰が管理しているか知りませんが、
たぶんactivestate社がやってるんですよね。
で、PPMのメニューに出てこないものは
インストールできないのかなと。

247 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:09:17 ]
最近perlも飽きてきた。
どの入門書読んでも、だいたい同じこと書いてあるから。

で、今日はレファレンスについて勉強してみようと思いますが、
グーグルで検索するときに、レファレンスなのでしょうか?
それとも、リファレンスなのでしょうか?

248 名前:デフォルトの名無しさん [2008/08/23(土) 21:17:47 ]
ぐぐれカスとも言えない新技だな

249 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:51:20 ]
>>247
両方ぐぐれよ。
あるいはreferenceで。

250 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 22:12:34 ]
>>245
やってやれないことはないけど、気合と根性が必要。
俺はPPMに無いものはCPANからアーカイブを取ってきてMinGW+nmakeでインストールしてる。
が、Windowsには類似のAPIがない、UNIXべったりのモジュールには苦戦してる。
(同じ機能はあってもAPIの仕様が全然違う)

251 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:53:26 ]
セーブファイルをネット上に保存する、ってのは
かんたんにできるのかな。

アップローダーみたいな、、、っていうのかな?

print (FILE www.abc.com/abc.txt);

みたいな。

252 名前:デフォルトの名無しさん [2008/08/23(土) 23:56:31 ]
以下のように@とかそういうのを全部変換したくて延々書いているのですが、
速く処理出来るようにするにはどのようにしたらよいのでしょうか?

$str=~s/T/1/g;
$str=~s/U/2/g;
$str=~s/V/3/g;
$str=~s/W/4/g;
$str=~s/X/5/g;
$str=~s/Y/6/g;
・・・
$str=~s/@/(1)/g;
$str=~s/A/(2)/g;
$str=~s/B/(3)/g;
・・・


253 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:58:38 ]
アロー演算子っていうのは、
ハッシュのレファレンスを表すときにしか
使わないんですか?

254 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:01:07 ]
>>252
コーディングの行数を減らしたいってこと?
コンピューターの処理速度を速くしたいってこと?



255 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:03:32 ]
$str=~tr/T-]/1-10/g;
$str=~tr/@-I/(1)-(10)/g;

これだと動かないかな。

256 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:15:10 ]
use strict 'refs';

↑これって書かないと動かないの?
それとも、use strictを書けば、その中に含まれるの?

257 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:37:44 ]
ha??

258 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:44:24 ]
>251
自分のパソコンと相手のパソコンが繋がれてあったとして、
こちらのパソコンを操作するだけで相手のパソコンのHDDに書き込むことができるか?という問いに近い。

>252
ローマ数字に対応してるかどうか分からんけど、Unicode::Normalizeとかは?



ギャル文字の正規化めんどくせぇなあ……(ぼやき)


259 名前:デフォルトの名無しさん [2008/08/24(日) 00:44:35 ]
>>254
処理速度のほうです。

>>255
有り難う御座います。
$str=~tr/@-I/(1)-(10)/;
$str=~tr/@-H/1-9/;

上の方法では出来ず、下の方法では出来ました。
括弧を付ける方法とかあるんでしょうか?

260 名前:側近中の側近 ◆0351148456 [2008/08/24(日) 00:54:15 ]
>>259
(っ´▽`)っ
$str=~tr/@-I/\(1\)-\(10\)/;
ではどうだ?

261 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:26:01 ]
>260
そーゆーことじゃなくね?

262 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:53:33 ]
# tr/// が、正規表現とは関係がなく、また文字列を置き換えるものでもないという点は FAQ にも程があるんでこれ以上は自分で調べてもらうとして。

sub to_arabic_number {
my $str = $_[0];
my @circles = qw/@ A B C D E F G H I
J K L M N O P Q R S/;
my @romanU = qw/T U V W X Y Z [ \ ]/;
my @romanL = qw/@ A B C D E F G H I/;

my $i = 1;
foreach (@romanL) {
$str =~ s/$_/$i/g;
$i++;
}
$i = 1;
foreach (@romanU) {
$str =~ s/$_/ $i/g;
$i++;
}
$i = 1;
foreach (@circles) {
$str =~ s/$_/ ($i)/g;
$i++;
}
return $str;
}

263 名前:262 mailto:sage [2008/08/24(日) 01:58:58 ]
P.S. >>260 は釣りなのかネタなのか知らんが、武士の情けで見逃してやるから人生やり直して来い。

264 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:08:50 ]
>>262
さすがにそのコードは人に見せられるレベルじゃないだろ…



265 名前:デフォルトの名無しさん [2008/08/24(日) 02:10:41 ]
>>262
有り難う御座います。
処理速度は遅いような気がするのですがどうでしょうか。

266 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:14:28 ]
>>262よりは>>252のほうがいいと思うよ

267 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:20:31 ]
>>262は嫌がらせ。


268 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 03:10:52 ]
use feature qw( :5.10 );
use Time::HiRes 'sleep';
system q|cls|;
#----------------------------------
my @a;
@a=localtime;
sleep(.5);
say "\@a=@a[0..8]";
sleep(.5);
say "scalar(localtime)=",scalar(localtime);
sleep(.5);
say "localtime=",localtime;
sleep(.5);


localtimeという関数はホンマおもしろいなー
3通りもの出力があるんだから。

269 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 03:49:57 ]
oracleにselect文を実行したときの取得レコード件数が知りたいんですが何か方法ありますか?
phpだとmysql_num_rows()とか便利なのあるんですけど、perlだとわかんないorz

270 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:00:20 ]
エスパー期待してるんですか?

271 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:06:30 ]
しゃぶりついてくるやつ期待してるんだろう。



272 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:17:54 ]
いや、だから、
oracleにselect文を実行したときの取得レコード件数を
知るための関数でしょ?

273 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:18:41 ]
ところで、ファイルに引数を食わせるときに、
スペース混じりの引数を食わせるには、
どうしたらいいですか?

274 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:42:39 ]
www.aritia.org/hizumi/perl/perlwin.html

ここ読んでたら、なんか
日本語のファイル名も扱える
みたいじゃないですか。
どうやるの?



275 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 04:48:27 ]
use feature qw( :5.10 );
system q|cls|;
#----------------------------------
"abcde" =~ m/b(.)d/ ;
say "$1";


↑これを実行すると、c、と出てきますが、
ここの$1は、ソースコードの、どこまで有効なの?

ずーっと後ろまで?

276 名前:262 mailto:sage [2008/08/24(日) 05:01:37 ]
>>265
遅いよー。
括弧を考えず、一桁でいいなら tr/// のが高速。
でも文字列単位の置換、文字数の異なる置換に対応できない。
速度的には、サブルーチンにせず >>266 の言うように全部インラインで書いたほうがマシ。

@circle_patterns = ();
foreach (@circles) {
push @circle_patterns, qr/$_/;
}
# (以下必要なセットで繰り返す)
# とあらかじめ準備しておいて、
# 置換ループに入ったら、

$i = 1;
foreach (@circle_patterns) {
$str =~ s/$_/($i)/;
$i++;
}
# (以下必要な...略)
# などとやればちょっとは速くなる気がする。

置換対象が行数の多いファイルなら、一気読みで $str にひとつにまとめて突っ込んでしまうのも手。
データの傾向やらで効果的な最適化は変わるだろうから、いろいろ試して比較してみてね。

277 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:01:39 ]
>>262
w

278 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:04:26 ]
Win32::Soundとかっていう書き方、あるじゃないですか。
これってPerlの世界でのみ、通用するものなの?

それとも、一度おぼえたら、他の言語にいっても通用するの?

279 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:13:04 ]
$str=~ s/[@-I]/($&)/g;
$str=~ tr/@-H/1-9/;
$str=~ tr/T-\/1-9/;
$str=~ s/[I]]/10/g;


280 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:15:05 ]
$str=~ s/[@-I]/($&)/g;
$str=~ tr/@-HT-\/1-91-9/;
$str=~ s/[I]]/10/g;


281 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:16:29 ]
>>276は嫌がらせの激遅コード


282 名前:262 mailto:sage [2008/08/24(日) 05:18:44 ]
>>279
GJ
せっかくだからさらにちょっとだけ性能改善。
# 最近の perl では $& のオーバーヘッドってどうなってんだろね?

$str=~ s/([@-I])/($1)/g;

283 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:33:01 ]
sでも文字クラスって使えるんだ?

284 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:54:56 ]
>>269
$sth -> rows;
のことか?



285 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 08:47:06 ]
うちのバイト募集に>>262みたいのが来たら、即座に却下だな。

つーか、ゴミでスレを埋め尽くすのはいいかげんやめておくれ。

286 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 11:02:53 ]
初心者です。

配列かなんかに保持しておいて、ループさせるという考え自体は悪くない……ですよね?
よほど速度がクリティカルになる状況じゃなきゃ、そこまで酷いとも思えないし。

287 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:10:50 ]
私初心者だけどクリティカルな状況でなければさほど酷くもなかろう
と言われましても。

288 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:13:55 ]
こんなのはいかが

my @circles = qw/@ A B C D E F G H I J K L M N O P Q R S/;
my @romanU = qw/T U V W X Y Z [ \ ]/;
my @romanL = qw/@ A B C D E F G H I/;
my %hash = ();
%hash = (%hash, map { $circles[$_-1] => "($_)" } 1..20);
%hash = (%hash, map { $romanU[$_-1] => $_, $romanL[$_-1] => $_ } 1..10);

sub to_arabic_number {
    my $str = shift;
    $str =~ s/([@-ST-]@-I])/$hash{$1}/ge;
    $str;
}

289 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:22:13 ]
>>288
[参考になる+11]

290 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:54:50 ]
>>288
やるならとことん逝こうぜ。個人的には%hashを全書き換えしてるのが気になる。

my @nums = (
[qw(@ A B C D E F G H I J K L M N O P Q R S)],
[qw(T U V W X Y Z [ \ ])],
[qw(@ A B C D E F G H I)]
);
my %hash = map {
my $num = $_;
map {$num->[$_ - 1] => "($_)"} 1..(scalar(@$num))
} @nums;
my $re = join("", map {$_->[0].'-'.$_->[$#$_]} @nums);

sub to_arbic_number {
local $_ = shift;
s/([$re])/$hash{$1}/geo;
return $_;
}


291 名前:デフォルトの名無しさん [2008/08/24(日) 13:01:27 ]
-------------
>>276
>>288
ありがとうございます。参考になります。
eって遅くなるのかと思って試してませんでした。
文字数によってはeを利用したほうが速くなりそうですね。
単純に-で繋げて表現出来ない文字列も多いので、eが有用というのは私的には!!でした。
色々試してみます。ありがとうございます。

-------------
>>280
>>282
ありがとうございます。そういう方法もあるのですね。一つ一つ書いていくより
かなり速くなりました。
I-Sの場合が無いのでまだ速度を比べられないのですが、この場合はどのよう
にしたらよいのでしょうか?

trではやはり2文字になるのでダメで、一つ一つ書いていく方法しか思い浮かば
ないのですが、方法はないのでしょうか?


292 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 13:04:26 ]
■■学校を作ろう!■■
VIP発でサイトを作ろうと思うんだ。(詳しくはWikiを見てくれ)
パートスレになるんでパー速(GEP)に移動している。
今スタッフを募集しているから、来てくれないか?

■Wiki
www36.atwiki.jp/vipvipschool/
■募集スタッフ
プログラム担当(特にErlang、Perl)
デザイナー(サイト上のアイコン、ロゴなど)
WEBデザイナー(サイトデザイン案に沿って、htmlやCSSを書ける)
他にも宣伝担当なども募集している。
■スレ
ex14.vip2ch.com/test/read.cgi/news4gep/1219068297/

293 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 13:07:34 ]
見てもらったらわかるが、IRC・スレともに過疎って今にも潰れそうだから行かないほうがいいぞ

294 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:16:48 ]
>287
具体的に何が悪いかを指摘せずに、ソースだけ書かれても
後から見た人は困るって意味さ



295 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 15:46:25 ]
$str=~ s/([@-H])/($1)/g;
$str=~ s/([I-R])/(1$1)/g;
$str=~ tr/T-\@-HI-R/1-91-90-9/;
$str=~ s/]/10/g;
$str=~ s/S/20/g;


296 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 15:54:45 ]
>>286
君はプログラミングは諦めて他の道へ進んだ方がいい

297 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 16:06:28 ]
>296
質問スレで質問しちゃだめなん?

298 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 16:13:24 ]
>>296
っていうか、来ないでくださいって感じ。

299 名前:デフォルトの名無しさん [2008/08/24(日) 16:19:48 ]
>>295
そういう方法がありましたか。まったく思いつかなかったです。
試してみます。有り難う御座います。

>>286
考え自体は全然悪くないと思います。
スピードよりも見やすさのほうが通常は大事だと私は思います。
どうやって見やすくかつ速く出来るかで悩みます。

でもどっちを優先するかは時と場合によります。

300 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 18:55:13 ]
モジュールWWW::Mechanizeを使って、クッキーの送信と受信をしたいんだけどどうすればいいの?

301 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 20:24:11 ]
質問です。Perlでファイルのアップロードをしようとして
フォームから値を送るサンプルを弄くってるのですが
my $local = $q->param('upfile');
my $fname = basename($local,"");
my $path = '.file';
my $newfile = "$path/$fname";

こういう感じでbasenameを使って、ウィンドウズ環境から上げると
パスが
.file/C:\Documents and Settings\Admin\デスクトップ\hoge.txt
となってしまい、ちゃんとアップできません。
他のサンプルとかでもこうやってるようなのですが

みなさんはどうやってるのですか。

302 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 20:30:13 ]
すみません
my $path = '.file';

my $path = './file';
です

303 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:33:29 ]
>>301
$local =~ tr|\\|/|g;
# or
$fname =~ s/(?:\\|\/)([^\\\/:*?"<>|]+?$)/$1/;
# 思いつきで書いた。どっちもその場しのぎ。当然テストなんかしてない。

304 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:40:39 ]
>>303
まあ tr に g オプションはないよな



305 名前:303 mailto:sage [2008/08/25(月) 01:06:49 ]


306 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 01:40:11 ]
まぁ、trを正規表現と勘違いしてるやつ多いよな……。

307 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 01:52:09 ]
yでおk

308 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:35:23 ]
perlちょっと飽きたかも。
入門書読んでも、どの本も
同じことしか書いてないし。

だいたい,スカラー変数の説明から始まって、
配列、ハッシュ、ループ、プリント文、あとなんだ、
サブルーチン、正規表現、こんな感じ。

あとはコンテキストがどうたらこうたら。
演算子の優先順位がどうとか。

309 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:39:17 ]
あとは、if文、それと、正規表現で取得した文字列の再利用の方法とか。
あと入出力。それと、変数のスコープとか。
ファイルからの入力、ファイルへの出力。
再帰、引数利用の引数渡し。

それ以上難しいのは、グロブ、レファレンス、パッケージ、
モジュール、二次元配列、二次元ハッシュとかかな。


基本は1ヶ月もやれば覚えてしまうね。目新しさがないというか、
飽きる。「ああまたこれか」みたいな。

310 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:40:40 ]
あと、->があったとき、
レファレンスとして使われている可能性と、
オブジェクト指向での記述として使われている可能性と、
2つあるの?

311 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:47:10 ]
今なんか、おもしろそうな機能を発見したぜ

$\

use English: $OUTPUT_RECORD_SEPARATOR / $ORS

[入出力関連] 出力時の行末文字

デフォルト値は NULL です。
$\ の使い方

$\ = "\n";
print "Hello Perl World !";

↑これを使うと、行末文字を変更できるのだ
ということは「にょ」とかもできるはず。さっそくやってみよう。

312 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:49:15 ]
$\ = "にょ";
print "おはよう";

さっそくやってみたぞ
実験結果

おはようにょ

成功!みごと成功したようだ!

313 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 07:32:03 ]
>>308,309
飽きる原因
・理解してるのに同じ事を繰り返してる
・理解出来ないのに同じ事を繰り返してる
どっちも馬鹿には違いないがw

つか、入門書を何冊も読んでる時点で相当の馬鹿

>>311,312
チラウラカスうぜぇ

314 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 07:34:56 ]
>・理解出来ないのに同じ事を繰り返してる
 ↓
何度も同じことを繰り返してるのに理解出来ない

の方が良かったな
失敬



315 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 08:19:00 ]
スペースキーを押したら、次のメッセージが出る、
っていうのは,Perlでは実装できない?

Cのときはできたんだけど。scanfだっけ?

316 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 09:57:01 ]
なんか、
pc11.2ch.net/test/read.cgi/prog/1213800787/297
このレベルの話があって、漏れは一回読んで意味がすぐ理解
できたんだけど、
pc11.2ch.net/test/read.cgi/prog/1213800787/298
みたいに、理解できない人もいるみたいなんだけど、
これってコミュニケーション障害?

317 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 10:45:32 ]
>>316
俺もわからん。あんたがエスパーなんだろう。
というか板違い甚しい。他所でやってくれ。

318 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:02:52 ]
1〜4 を 0、5〜9 を 10、11〜14 を 10、15〜19 を 20 といった具合に、
四捨五入したいのですが、どのように記述すればいいのでしょうか。

If 文でこつこつ書いて、あまりの多さにめげてしまいました。

319 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:45:56 ]
>>318
sub round10 {
int(($_[0] + 5) / 10) * 10;
}

320 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 13:11:34 ]
これ5を代入すると0になるな

321 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 13:31:10 ]
効率いいかしらないけど・・・
print round(10);
sub round {sprintf('%.1f',($_[0] / 100 ))*100}


322 名前:321 mailto:sage [2008/08/25(月) 13:34:06 ]
結構古いバージョンから問題なく動いてるコードなんだけど
そもそもsprintfって四捨五入するの保証してるのか不明デス



323 名前:318 mailto:sage [2008/08/25(月) 16:21:26 ]
ありがとうございます。50行ぐらいあったコードがなくなってすっきりしました。

324 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 17:16:13 ]
うちの環境だと、>>319は正当が出て、
>>321は、print round 15 すると答えが10が返る。
# ま、原因は浮動小数点の処理にあるのは明白なんだけど。
>>321氏は「その環境では上手く行ってたとしても別環境では上手く
行かない事がある」程度には認識した方が良いかと。

>>323
何故に50行?ベタ実装してもそんなに行は食わないだろ?
sub round {
 my $t = chop ( my $i = shift ) ;
 my %h = map{ $_, $_ < 5 ? 0 : 10 } 0..9 ;
 ( $i || 0 ) * 10 + $h{$t} ;
}
printf "%d->%d\n", $_ ,round $_ for 0 .. 30 ;



325 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 19:10:41 ]
読めねーw

326 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:47:39 ]
>>299

$str=~ s/([@-S])/($1)/g;
$str=~ s/([@-S])/ord($1)-ord('@') + 1/eg;
$str=~ s/T-]/ord($1)-ord('T') + 1/eg;

>>318
$data=~ s/(\d*)(\d)/$1 * 10 + (($2 < 5) ? 0 : 10)/e;

327 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:02:28 ]
>>326
$str=~ s/([@-S])/'(' . (ord($1)-ord('@') + 1) . ')'/eg;

でいい気がするんだが

328 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:12:57 ]
>>318
sub round($) {
return $_[0] % 10 >= 5 ? int($_[0]/10+1)*10 : int($_[0]/10)*10;
}


329 名前:326 mailto:sage [2008/08/25(月) 21:17:50 ]
>>327
そだね

あと、ミス
× $str=~ s/T-]/ord($1)-ord('T') + 1/eg;
○$ str=~ s/[T-]]/ord($1)-ord('T') + 1/eg;

330 名前:326 mailto:sage [2008/08/25(月) 21:28:07 ]
さらに、ミス、スマソ
× $str=~ s/T-]/ord($1)-ord('T') + 1/eg;
○ $str=~ s/[T-]]/ord($1)-ord('T') + 1/eg;

331 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:41:15 ]
全部クラス化した方が効率いいだろ。

@num{ord('@')..ord('S')} = 1..20;
@num{ord('T')..ord(']')} = 1..10;
$str =~ s/([@-ST-]])/$num{ord($1)}/eg;


332 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:44:09 ]
あ、上のやつは()つけといてくれ。。。見逃した。
・・・=map{"($_)"}1..20

333 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:48:50 ]
>>324
一応、自己(嫌悪)レス。
sub round{ my $t = chop ( my $i = shift ) ; ( $i || 0 ) * 10 + ( $t < 5 ? 0 : 10 ) ; }

334 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:20:40 ]
質問です。

perlを勉強し始めて間も無い物です。
MacOSX 10.5でLWPを使った簡単なマクロツールを使っているのですが、

Terminalにログをだらだらと表示する画面では無く、
viや、CPANを実行した時の様な専用画面が表示されるようにしたいと考えています(exitを打ち込んだから、shellに戻る様なイメージ)。

ぐぐるにもどう言った言葉で表現すればいいのか分からないので、
困っています。ヒントだけでも良いので押しえてください。
よろしくお願いいたします。



335 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:34:13 ]
>>334 Curses

336 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:50:49 ]
>>335
ありがとうございます!!
当スレの過去ログ等も調べさせて頂き、
色々見てみたのですが、インストールは出来そうだけど、
perlとどう対話(?)させれば良いのかが分からないです…。

もし私のような初心者にも分かりやすいサイト等があったら
お教え頂けますでしょうか。

337 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:52:30 ]
ググれよ

338 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:07:33 ]
すみません、ぐぐってます…。
ググっても分からないぐらいのレベルなんです。

とりあえず、インストールは終わったんですがね。
検索ワードをCurses.pmに買えてやってみます。

339 名前:デフォルトの名無しさん [2008/08/25(月) 23:45:31 ]
>>326
あぁ。そういう方法もありますか。よくこんな方法思いつきますね。
見れば、なぁんだと思うけどなかなか思い浮かばないですね。

でもこれだと>>288 のやり方(をサブルーチンとか外して効率化したの)とスピード
は変わらないですね。
逆にord使う分だけ遅くならないのかなーと・・・。

でもアイデアは面白いと思いますので参考にしたいと思います。

有り難う御座います。


340 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:06:30 ]
>>338です。
色々調べた結果難しそうなので、今回はチャレンジするのをやめました。
screen(?)を上手く使った方法を考えたいと思います。
お騒がせいたしました。

341 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:49:26 ]
>>334
CPANを読めよ

342 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:50:40 ]
mamono.2ch.net/test/read.cgi/newsplus/1219666275/1
これみたら2ちゃんは一日に2億アクセスあるみたいですが、2億行の
アクセスログも、Perlだったら、スイスイ取り扱いできますよね。

343 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:00:12 ]
serif.hatelabo.jp/28142fc0b6794ceb77aaee46a4e561fd6f01b549/f11f68151964cc79558e14662706685dccfea1ba

344 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:51:42 ]
use feature qw( :5.10 );
system q|cls|;
#----------------------------------

my $a,$b;
$a=10;
$b=3;
my $c;
say $c=$a/$b;
say $c*3;

このコードを実行したら、10になった。
一方、電卓で計算したら、9.99999999999、、、になった。
なんで?



345 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:57:28 ]
電卓が安物だから。

ちゃんとしたやつなら10になる。

346 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 04:18:11 ]
perl のコードを実行できる電卓があるんか?

347 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 04:50:07 ]
バカは消えろ

348 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:08:06 ]
rarファイル(パスワードつき)をperlから操作したいのですが
CPANでモジュールを探したところ、
Archive::Rarではオプションでパスワードを扱えなくて
Archive::Rar::Passthroughでないとダメみたいです。
ところが、このモジュールは使用OS(Windows)には入りません。
エラーが出ないことを前提に、直接rar叩いちゃった方が楽ですか?

349 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:14:21 ]
>>348
楽ですか?っていうかほかにやり方ないんならそうするしかないじゃん
何が聞きたいの?

350 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 23:39:38 ]
前に弄った時は、 Win32::API で unrar32.dll を読み込んで使ってた。

351 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 01:40:15 ]
${変数名}

こんな書き方があることを30分前に知った。
お前ら、ちゃんと教えてくれなきゃだめだろ。

352 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 01:55:11 ]
シンボリックリファレンスの仕様は非推奨です。

353 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:10:06 ]
$a=あ;

print "$aい";

こんなとき、こっちの意図は

「あい」

という出力なのに、perlが勝手に
$aい

という変数だと誤解して、エラーになる、
こういうときに、
${a}
と書くと、エラーにならない。

今読んだ本にそう書いてあるんだけど。
これがシンボリックリファレンスなの?

354 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:11:45 ]
Perlを学び終えたとき、次に学ぶ言語として
最適なのはどれ?

Ruby?
PHP?
Phtynon?
C?



355 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 03:37:37 ]
DBMにURLとアクセス時間を100万件くらい記録したファイルがあって
これをアクセス時間でソートしたリスト(テキストファイル)を作りたいんですが、
あまりメモリに負担をかけずにやるにはどうやるのがいいですか?

DBMはこんな感じで使ってました。
use DB_File;

tie %u, 'DB_File', 'url', O_RDWR|O_CREAT, 0644, $DB_BTREE;

$u{$url} = $last_modified;

356 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 03:43:28 ]
ActivePerl(Perl 5.10.0) でData::Aliasを動かせている人っていますか?

ppmリポジトリでも軒並みテストにFAILしているし、
自分の環境(VC++ Express 2008)でも一緒でした
配布物内のREADMEには動く節が書かれていますが……orz

Data::Alias以外の方法で同様なことを実現するには、
素直にサブルーチンを掘ってリファレンスで受け渡しするしかなさそうで、
ちょっと難儀しています

357 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:49:49 ]
>>353
それはシンボリックリファレンスとは違う。
分からないことがあったら「ググる」という事を覚えようね。

あと、できるだけ、

  print $a, "い";

って書き方を習慣付けておいた方が
後々、他の言語にも移行しやすいよ。

358 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:42:21 ]
前から疑問だったのですが、

print $a. "い";
print $a, "い";

では異なるんでしょうか。

359 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:47:09 ]
>>358
明らさまに異なる。
print $h = $a. "い" ;
print @a = ( $a, "い" ) ;

360 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:49:42 ]
% cat hoge.pl
use Benchmark;

open DEVNULL, ">", "/dev/null" or die $!;
$x = "hogehogehoge";

timethese(
undef,
{
dot => sub { print DEVNULL $x. "hoge" },
comma => sub { print DEVNULL $x, "hoge" },
}
);
% perl hoge.pl
Benchmark: running comma, dot for at least 3 CPU seconds...
comma: 3 wallclock secs ( 3.42 usr + -0.00 sys = 3.42 CPU) @ 2453425.44/s (n=8390715)
dot: 4 wallclock secs ( 3.19 usr + 0.02 sys = 3.21 CPU) @ 1753933.96/s (n=5630128)

361 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:51:21 ]
結果は同じ。おそらく内部処理が違うだろうけど気にするほどでも無い。
文字列の足し算をするか、しないか。どっちが効率がいいか考えればわかるよね?

あと、print 文のときはソレでいいけど、代入文とかのとき
$b = $a. "い"; とは書けるけど
$b = $a, "い"; はダメ。

362 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:59:10 ]
なんという低レベルスレ・・・・

363 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:02:37 ]
英語ソフトを日本語化する作業をしています。大量の置換スクリプトを書いてます。

s/"qwertyuiop@[asdfghjkl;:]zxcvbnm"/"たていすかんなにらせちとしはきくまのりれけむつさそひこみもねるめろ"/;

こんな長い置換を、2行に折り曲げて書く方法って無いでしょうか?

s/"qwertyuiop@[asdfghjkl;:]zxcvbnm"/
"たていすかんなにらせちとしはきくまのりれけむつさそひこみもねるめろ"/;

って書くと改行が混じるんですよね。

364 名前:363 mailto:sage [2008/08/27(水) 13:04:22 ]
投稿ミス

置換パターンに @ とか [ ] とか出てくるのは忘れてください。
テケトーにキーボードを叩いただけですから。
本来はふつうの英文です。



365 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:36:33 ]
>>363
やり方あるはずだよ。
なんかのオプションをつけるはず。
s/●/○/rとか。
そのrとかのオプションの名前は忘れたけど。
「正規表現中の改行を無視する」
ってオプションだと思う。
こないだ読んだ本に書いてあった。

366 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:38:02 ]
>>363
っ[x]

367 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:39:55 ]
最近の
「マニュアルを見るのは賎民のやること」
という風潮には目を覆うものがあるな。

368 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:42:52 ]
xかなあ。

> パターン中の空白文字(半角スペース、
>Tab文字、改行文字)と、「#」から行末まで
>の文字列を無視する。
> 「[]」内の文字は、無視されない。

369 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:49:22 ]
>>361
それは結果がたまたま同じだっただけだ。
man perlvar の $, を100ぺん読み直せ

370 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:51:31 ]
お尋ねします。
「○○もしくは△△を含む」は「○○|△△」でできますが、
「○○および△△を含む」はどうするのでしょうか?
つまりand検索です。
要素が二つとは限らず可変なのですが、どうするのが効率が良いのでしょうか?


371 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 14:20:11 ]
>>370
っ[?=]

372 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 14:29:36 ]
>>370
っ[ブール代数]

373 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:00:48 ]
>>366
アリ!バッチリです。これで仕事がはかどります。

374 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:06:01 ]
もう見てもいないだろうけど
my $hoge = q{hoge} ;
$hoge =~ s{hoge}
# これでも良くね?
{foo} ;
print $hoge . "\n" ;




375 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:44:49 ]
他人が書いたソースコード読む場合なんだけど、
アロー演算子がでてきたときに、それが
オブジェクト指向のアロー演算子なのか、それとも、
デリファレンスのアロー演算子なのか、どこを見て
見分ければいいの?

376 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:54:27 ]
オレ様が考えた、仕様を全部理解していなくてはならない度

レベル1 言語使用考案者(ラリー・ウオール)
レベル2 仕様書を紙に書く人
レベル3 インタプリターを書く人
レベル4 専用エディター作る人
レベル5 モジュール作る人
レベル6 教科書や参考書を書く人
レベル7 このスレで初心者に教える人
レベル8 このスレで質問する人

377 名前:356 mailto:sage [2008/08/28(木) 02:10:26 ]
とりあえずLexical::Aliasでお茶を濁すことにしました
Data::Aliasとの違いに気を付けようと思います

378 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 09:59:37 ]
「はじめての人のためのかんたんPerl/CGI入門」
読んでるけど、よくわからんな。

379 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:03:39 ]
ourってなに?
よく使うの?

380 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 12:13:44 ]
>>375
ぐぐれしね

>>376
逆だしね

>>378-379
最後まで読めしね

381 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:09:36 ]
しねしね団ですね。わかります。

382 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:11:09 ]
「逆だし、ね」なのか
「逆だ、死ね」なのか

383 名前:355 mailto:sage [2008/08/28(木) 17:35:40 ]
回答がなかったので、結局、DBにつっこんだ。

今さらだが、もしハッシュでやるんならキーとvalue入れ替えてBTREEのハッシュ再構築して、
トラバースってことになるんだろうな。。。
DB_Fileはキー重複にも対応してたはずなので、やろうと思えばできそう。

384 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:45:38 ]
>>383
とりあえず順番考えずにべたで出力したのをsortコマンドに食わせれば楽だったかもな。
ぜんぜんperlじゃないけどw

sortコマンドはメモリ足りなけりゃ中間結果をディスクに書いてマージソートとかやってくれる。



385 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:55:18 ]
>>384
× マージソートとかやってくれる。
○ ソート済みファイルのマージとかやってくれる。



386 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:15:14 ]
requireの相互呼び出しってできないんだな。

387 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:20:47 ]
requireが実際に何をしているか知っていれば自ずと分かることだ

388 名前:デフォルトの名無しさん [2008/08/29(金) 11:13:17 ]
ttp://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2FLWP#i6
↑のページの通りにLWPを使ってPOSTしているのですが、
どのようなデータをPOSTしているか確認する方法はないでしょうか?
%formdataの中を見るのではなく、requestした結果から見れたらいいのですが。


389 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 11:17:50 ]
パケットキャプチャは一番確実。
暗号化されてたらバケラッタだけど

390 名前:388 mailto:sage [2008/08/29(金) 11:43:42 ]
>>389
ありがとうございます。
Etherealというソフトで確認してみたいと思います。

391 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:10:06 ]
Template-tooklkitでdoにあたるincludeやprocessは見つかったのですが
evalのような関数は無いでしょうか。
[%
  tt2_str = '[% cnt = 10 + 5; cnt; %]';
  EVAL(tt2_str); # ←のような感じ
%]
期待する表示結果:15

392 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:53:40 ]
ぐぐれ

393 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:08:14 ]
最近はなんでもかんでも「ぐぐれ」って返すのがブームなの?

394 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:10:19 ]
ぐぐれ



395 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:28:54 ]
ぐぐっても解決しない質問キボウ

396 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:00:13 ]
ファイル名 「a.pl」

ソースコード

print "a";
require a.pl;

↑これを実行するとどうなる?

397 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:23:10 ]
試せ

398 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:24:29 ]
↑が代わりに試せ

399 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:44:59 ]
>これを実行するとどうなる?

自分で実行すればいいじゃないかよ。
もしかしてナイコン?

400 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:21:28 ]
>>399は40代と見た。

401 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:14:08 ]
いきなり考えなしに実行すると危険なことってあるよね。

コンソールレベルでも、
open FILE > C:/windows/comamnd.com とか。

コマンドコムが上書きされてしまう。

あと危険なのは、rmとか。
systemとか。

あと、レンタルサーバーで無限ループになったときって
どうすればいいの?

402 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:40:30 ]
my a=1;

これでエラーが出るんで、
「おかしいなーおかしいなー」
って悩んでたら、よく考えたら、
$が抜けてた。

403 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:00:37 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
system q|cls|;
#----------------------------------
my $bar = 'fuga.txt';
if (-f $bar) {
print "ファイル".$bar."が存在します。\n";
}
else {
print"ファイル". $bar."が存在しません。\n";
}

↑このコードすごいよ。
ファイルが存在するかどうかを調べてくれて、
レポートまでしてくれるよ。

404 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:10:35 ]
>>401
> いきなり考えなしに実行すると危険なことってあるよね。

ありますね。なので考えてやりゃいいんじゃないでしょうか。

> コマンドコムが上書きされてしまう。

とか、

> あと危険なのは、rmとか。
> systemとか。

とか、このへんがあなたにとって「危険」でありうる環境でなら、なんぼでもやってください。
ただしその程度の認識で公開のサーバを利用するのはできれば、できるかぎりやめてください。



405 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:11:04 ]
グローバル変数って絶対使ったらだめなの?

myしか使っちゃだめなの?

外で変数使いたい場合もあるんだが。

406 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:14:16 ]
>>405
自己レス

サブルーチンにして、
retrunつかったら解決した。

407 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:14:32 ]
>>403
ファイルテストを行ってから、print するまでの間に、あったファイルが消えたり、なかったファイルが作られたりした場合はどうすんの?

408 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:19:47 ]
一回だけ初期化されるstateってどういう意味?
説明四でも意味がわかんない。



state変数

* 一回だけ初期化される変数。
* Cのstatic相当

state変数
今までは...

{
my $i = 0;
sub incr { $i++ };
}

state変数
これからは...

use feature 'state';
sub incr {
state $i = 0;
$i++;
}

409 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:21:12 ]
もしかして初めてアクセスされる一回目だけ初期化されて、
2回目以降はその初期化の行は実行されずにスルーされるってこと?

410 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:37:37 ]
それで?

411 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:41:09 ]
サブルーチンの中に
サブルーチンって書いていいの?

412 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:46:50 ]
>>408
それを読んでわかんねー、というか理解に少しでも不安があるようなら正直かなりマズい。
Perl をまるで読めてねーっつーことだから。
基礎からがんばれ。

413 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:52:02 ]
>>411
どこのサブルーチンの中にサブルーチンが書いてあるの?

414 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:56:15 ]
>>413
いやだから、
自分でこれから、そういうコードを書いても
いいのかなあ?って。



415 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:59:19 ]
fuga.txtがあるかどうかを調べ、もしあるならあると言い、なければないと言い、ない場合はわざわざ作成してあげて、
作成したと言い、ある場合は、ファイルサイズを調べてレポートするプログラム。↓
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use feature qw( :5.10 );
system q|cls|;
#----------------------------------
my $bar = 'fuga.txt';
my $a=&file;
sub file{
if (-f $bar) {
print "ファイル".$bar."が存在します。\n";
return 1;
}
else {
print"ファイル". $bar."が存在しません。\n";
return 0;
}
}
given($a){
when (1){
my $file_size;
$file_size = (stat'./fuga.txt')[7];
say $bar."のファイルサイズは、".$file_size."バイトです"; }
when (0){
open FH, ">fuga.txt";
say "ファイル". $bar."を作成しました。";
}
}

416 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:01:09 ]
use utf8;
use open IO => ":encoding(cp932)";

↑先頭の2行にこれを忘れていた。入れてください。

417 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:08:23 ]
>>415
-f してから open するまでの間に誰かが fuga.txt を作っていた場合、
何もかも台無しになるという点で >>403 より性質が悪化してるんだが
それはいいのか。

418 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:08:30 ]
ねーねーこれ↓って、実行されちゃうよね?

&で明示的に実行を指示したときだけ
サブルーチンを実行したいんだけど、
これだと、処理の流れがそこまできたときに、
なしくずし的に実行されてしまうんだけど、
それって正常な動作なの?

sub a;
{
print "a";
}

419 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:10:23 ]
ようは、&aってしたときだけ、そのサブルーチンが実行されて
ほしいのに、ソースコードの一番下にそのサブルーチンの定義部を
置いておくと、そこまできたときに、勝手に実行されてしまうのが
困るといっているんです。

420 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:14:20 ]
>>418-419
は自己解決したごめん

もう一回ためしたら実行されなかった。
;(セミコロン)が余計に入っていた。

421 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:14:54 ]
mapの場合はゆっくり出力するってできないのかな?

foreachの場合は、sleepかませて
1行づつゆっくり出力するってできるけど、
mapだと、一度に一気に配列に全部入ってしまうから、
一個づつゆっくり出すとか無理だよね?

422 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:16:31 ]
久しぶりに来たけど激しくゆとり臭くなったな

423 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:17:30 ]
map {print $_, $/; sleep 1;} 0..100;

なにが不満なの?

424 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:19:54 ]
sleepかませ



425 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:24:09 ]
system q|cls|;
map {
system q|cls|;
print $_, $/;
# sleep 1;
}
0..100000;

こりゃーすげー

426 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 06:55:02 ]
>>422
明日まで我慢。
あさってには居なくなるから。

427 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 14:38:11 ]
mod_perl2導入の途中でmod_perl.soを配置するApache2\modulesの指定をしくじりました
mod_perl.soが配置されないままmod_perl2がインストールされてしまいやり直そうにも
"Package 'mod_perl' is already installed."と表示されてやり直しも利きません
どうにか導入する方法は無いでしょうか?

428 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:03:51 ]
my $a;
ってファイルの上のほうで宣言して、
5,000行下でも、その$aにアクセスできるよね。

でもこれって「グローバル変数」とは呼ばないんだよね。

429 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:05:45 ]
a.plと
b.plとあって、
requireで呼び出して使う状況で、
両方とも、$aって変数をつかってても、
myでプライベート化してれば、問題ないのかな?

逆に、myを使ってないで
グローバル変数として使っていたら、
a.plとb.plで同じ$aがあったら、
それは同じ変数として扱われてしまうの?

つまり、複数人で作業するときに、どつぼにはまる
可能性が高い?

430 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:26:47 ]
参考までにどうぞ。
ttp://www.rwds.net/kuroita/program/Perl_tips.html#my
ttp://d.hatena.ne.jp/perlcodesample/20080310/1205162964

431 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 19:39:18 ]
>>427
よく知らんけど mod_perl 無しの状態にロールバックしてやり直せない状態だとしたら、初手から構築し直すのが安全じゃないかな。

432 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:56:41 ]
a.plで、
require b.pl
print "$a";

にして、b.plで、
my $a=1;
にしたら、a.plを実行したときに、
1って表示されないんだけど、
別ファイルでrequireされることがわかっているときは、
変数はmy化したらだめで、グローバル変数にしておかないとだめなの?

433 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:58:11 ]
b.plがrequireされるファイルで、その中でなんかの処理をして、
その処理の結果をa.plに渡す、ってときに、通常
どんな手段で渡しているのかなー?って。

とりあえず、その変数をmy化したら渡せないってのはわかった。
グローバル変数だったら渡せるというのもわかったが、
それって普通の方法なのかな?

434 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 02:51:00 ]
length q eq ge and print chr ord q each le

このコードの意味わかる?
漏れはわからない。



435 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:11:47 ]
B::Deparseに食わせろ

436 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:59:39 ]
>>434
qがquote-like operatorだということに注意すればそんなに難しくはない。

437 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:42:52 ]
>432-433
2000〜3000円くらいの安い入門書を買うことをすすめる。
サブルーチンの項目あたりに書いてるはず。

ぶっちゃけ、Perlというか、
プログラミングにおける基本的な考え方の1つなので、そこから勉強するべき。

あと>430は無視なのかい?

438 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 11:38:11 ]
http.confにLoadModule perl_module modules/mod_perl.soって書くと起動出来ない…
これはバージョンの相性が良くないってことなんでしょうか。Apache自体が起動しないです

439 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 13:26:43 ]
>>438
ログにエラーが出ていませんか?
出ていればそれを手がかりに調べてください。

440 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 14:46:33 ]
>>438
どうにか解決しました
どうもです

441 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:28:31 ]
サブルーチンの説明は書いてあっても、
requireとからめた使い方が書いてないんだよっ!

で、requireでインクルード?したファイルの中の
変数を使いたいときって、どうすればいいの?

442 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:31:56 ]
a.plがあったとして、そのa.plの中で、一生懸命に計算なり
処理なりをするよね。そんで、なんかの結果が出てきて、
それを$aに代入したとする。

そんで、b.plを作って、b.plの中で、
require a.pl

ってやって、さっきの$aの結果を利用しようとしたときに、
a.plの中で、
my $a
ってmy化されていたら、b.plから利用できないじゃん。

もちろん、ourでグローバル化しておけば利用できるのは知ってるけど、
やたらとグローバル変数を使うのはバグの元だからやめろって教科書に書いてあるし。

つまり、a.plの中でサブルーチンを作って、
return渡しをすればいいのか?

443 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:37:43 ]
>>441
答えは”モジュール”にあると思う

444 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 16:26:09 ]
length q pop and print chr oct oct ord q local

このコードの意味がわからん



445 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 16:37:55 ]
>>444
きみ、Perl に向いてない。

446 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 17:06:15 ]
use warnings;
use strict;
use diagnostics;

print "a"


↑これでなんのエラーもでないんだが、
もしかして、ワンライナーの場合は
セミコロンは必須ではないのか?

447 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 17:07:47 ]
つまりセミコロンがついてないのに
なんで実行できてしまうんかと。

448 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 17:46:06 ]
>>446
ありがちっちゃありがちだけどもな、
Perl の文法をいい加減に覚えていると、そういう疑問を持ってしまう。

perl は文の区切りとして ; を要求するのであって、
文の終端として、ではないのだ。

ブロック内の最後の行で ; を省略できるのも、
ブロック生成子としての {} が文を区切ってしまうためなのだ。

基礎からやり直しつつ1年ほどROMれ。

449 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 18:57:27 ]
>442
一番最後の行で答えが出てるじゃないか。

>444
まさにPerlの美学であると同時にデメリットだよなあ。
自分なら適当に区切るか括弧をつける。

>448
でもまあ、付けるけどな、俺。


450 名前:448 mailto:sage [2008/08/31(日) 19:33:07 ]
>>449
>>444 にあるコードは読み手を混乱させるのが目的なので、あえてそのように書いているのはお分かりかと思います。従って可読性を上げては意味がありません。
ただ今回のコードはまったくややこしくない、いわば子供だましの類なので、読めないとちょっとアレなのは確かですが。

>>448
もちろんそれがよいでしょう。理由は…、言うまでもありませんな。

451 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:51:31 ]
>>444
ppencode の出力の一部じゃないのか? ppencode が何者かはぐぐればわかる。

452 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 20:28:16 ]
print q pop

これでoって出るのがすげーわらえる

453 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 20:53:40 ]
はいはいわろすわろす

454 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:45:17 ]
>>444って要するに、"q"の意味がわかれば簡単だよね?



455 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:47:55 ]
>>444
それぞれ一つ一つの意味は分かっても、こうやって並ばれると分からないです><


456 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:54:00 ]
残念ながらそれは、知らないと ハァ? なレベルの知識だ。

457 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:08:19 ]
ハァ?

458 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:02:46 ]
今日からPerlを始めたいと思ってます。 
Active Perlというものは今でも無料で入手できるのでしょうか。。。 
Windowsで使いたいのです。 


459 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:11:26 ]
なぜ実際に自分で試そうとしない?

460 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:11:48 ]
>>458
ActivePerl そのものは現在も無料です。楽しんでね。

461 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:40:46 ]
なるほど、ここで生成されたものか

ppencode - JavaScript demo
namazu.org/~takesako/ppencode/demo.html

462 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:49:55 ]
>>458
ActivePerlは無料です。
でもダウンロードのリンクは
IQ150以上でないと
探せないようになっております。

463 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:51:06 ]
ちなみに最新バージョンは
5.10です。

ごーてんいち、でなくて
ごーてんじゅう、です。

464 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:51:58 ]
ダウンロードしてきたファイルは、
msiファイルを右クリで、インストールを
選べばインストールできます。
ダブクリではインストできないこともあります。



465 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:52:45 ]
ちなみに、VISUALPerlというものは
開発中止になった模様です。

466 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 01:59:27 ]
レンタルサーバのLWPでhttpsなサイトにアクセスしようとしたら、
Protocol scheme 'https' is not supported (Crypt::SSLeay not installed)
と怒られました。
telnetやsshでログインできないサーバなのですが、httpsなサイトにアクセスできるように出来ないでしょうか?


467 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 02:03:33 ]
できません

468 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 02:50:24 ]
鯖缶にモヅル入れろと頼めば突っ込んでくれるとこもある

469 名前:デフォルトの名無しさん [2008/09/01(月) 02:52:58 ]
use Term::ANSIColor qw(:constants);
my @colors = qw(RED GREEN BLUE);

for (@colors) {
  print $_, "$_", "\n";
}

みたいな事をやって、ループ内の動きが以下と等価になるようにしたいです。

print RED, 'RED', "\n";
print GREEN, 'GREEN', "\n";
print BLUE, 'BLUE', "\n";

現状はループ内の print の第一引数に文字列がそのままわたっているだけなので、
希望通りの動作をしませんが、希望通りに動かすにはどうしたら良いのでしょうか?

よろしくお願いします。

470 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 03:18:17 ]
>>469
print eval($_), $_, "\n" for @{$Term::ANSIColor::EXPORT_TAGS{constants}};



471 名前:デフォルトの名無しさん [2008/09/01(月) 03:23:24 ]
>>470
なるほど、evalで文字列を評価してやれば良い訳ですね。
リファレンス当たりをごにょごにょするのかなーと漠然と思っていたのですが、
そういう考え方には至りませんでした。

ありがとうございます。

472 名前:470 mailto:sage [2008/09/01(月) 03:29:30 ]
>>471
eval も一法というだけ。
@colors への代入時に解決してやる手もある。
というかそちらのほうが素直。

my @colors = RED, GREEN, BLUE;

473 名前:デフォルトの名無しさん [2008/09/01(月) 03:41:11 ]
>>472
はじめはそのような方法を考えてみたのですが、
代入時に評価してしまった場合、その後どうやって文字列として取得するかがわからず、
先ほどのようなコードになりました。
もしよろしければ、文字列として取得する方法も教えて頂けますか?


474 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 03:56:10 ]
my @colors = qw(RED GREEN BLUE);
for (@colors) {
    print $Term::ANSIColor::{$_}->($_), "\n";
}



475 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 04:00:33 ]
my @colors = qw(RED GREEN BLUE);
for (@colors) {
    no strict 'refs';
    print $_->(), $_, "\n";
}

476 名前:458 mailto:sage [2008/09/01(月) 08:33:05 ]
>>460 >>462 
 先ほど無事インストールし、[Hello World!!]を表示できました。 
 いろいろありがとうございました。。。 (´・ω・`) 



477 名前:466 mailto:sage [2008/09/01(月) 10:50:02 ]
>>467,468
サーバの管理者へインストールをお願いしてみます。


478 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:26:36 ]
「1.pl」の内容

use feature qw( :5.10 );

sub a {
my $a=1;
return $a;
}

1;

------------------
「2.plの内容」
use feature qw( :5.10 );

require q|1.pl|;

say &a;
----------------------
これで、「2.pl」を実行すると、「1」と表示されるが、
本当にこれでいいのか?
つまり、1.plの変数の内容を、2.plで、requireで呼び出して使うとき、
サブルーチン渡しでいいのか?

それとも、モジュール渡しをするのが普通なのか?

our渡しは、できるけれども、教科書に「やるな」と書いてあるので
排除の方向で。
それとも、ほかの何かがあるのか?

479 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:27:24 ]
1.plで変数があって、
それを
requireで、
2.plからその変数を利用したいときに、
どうやって変数を渡すのか、という
問題です。

480 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:38:24 ]
q| | って書く頭わるいの前からいるけど同一人物だよな。
夏休みいつまでなの?

481 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:43:36 ]
毎日がエブリデイなんじゃないかな。

482 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:56:53 ]
>>476
おめでとさん。Perl の泥沼へようこそ。
泥んこ遊びは楽しいYO!

483 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:22:05 ]
もうPerlなんてみたくもさわりたくもないと思いながら、早2年。
毎日のように#!/usr/bin/perl -wと書いています。

484 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:41:22 ]
>>483
> 毎日のように#!/usr/bin/perl -wと書いています。

これを自分で書く奴は相当のバカ



485 名前:デフォルトの名無しさん [2008/09/02(火) 00:32:56 ]
晒しage

486 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:42:38 ]
ttp://drop.io/travian_pl
jbbs.livedoor.jp/bbs/read.cgi/game/38835/1193931349

これおかしなプログラムとか組み込まれてませんか?

487 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:45:18 ]
板違いです

488 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 01:21:12 ]
ファイルをまたいだ引数の渡し方について
マジでおしえてくんないかなー?
requireでなくてuseを使うの?

489 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 01:44:08 ]
うるせーよだまってろ

490 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 02:07:54 ]
ここはひどいインターネッツですね

491 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 02:34:26 ]
ttp://drop.io/travian_pl
jbbs.livedoor.jp/bbs/read.cgi/game/38835/1193931349

これおかしなPerlとか組み込まれてませんか?
Perlで組まれてるらしいでつ

492 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 02:37:29 ]
板違いです

493 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 03:45:53 ]
なんだ・・・解析できないのか・・・はぁ・・・


494 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 04:13:48 ]
もしかして、パッケージを一致させればいいのか?



495 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 04:18:31 ]
もしかして、モジュールとパッケージとrequireについて
調べればいいのか?

それで、読むべき教科書は
www.rfs.jp/sb/perl/04/01.html
ここであってる?

496 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 05:21:19 ]
>495
結論が出てるのに何が疑問なのかが分からない。
それと多分、誠意が足りてない。


497 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 08:07:27 ]
>>496 を読んだ >>494

「なんだよ、あってるならあってるってとっとと言えばいいのに」
「誠意とか意味わかんないし関係ないじゃん」
「まあいいや。誰かも煽りはスルーって言ってたし。バカには言わせとけばいいんだ」

498 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 11:41:23 ]
質問です。

my @aaa = ("A" , "B" , "C" , "D");
foreach(@aaa){
@aaaの中を一つ飛ばす。
printf("%s\n",$_);
}

とし、結果を

B
D

としたいのですが、どのようにしたら簡単に出来ますでしょうか。
for()で$iを途中インクリする方法を考えたけど、いまいち複雑になったので。

499 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 11:58:28 ]
next;

500 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:05:45 ]
splice

501 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:06:44 ]
my @aaa = qw(A B C D);
for my $i (0 .. $#aaa) {
 next if $i % 2 == 0;
 print $aaa[$i], "\n";
}

502 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:10:17 ]
ヒアドキュメント内でループ処理したいのですが
コンボボックスをループで動的に生成したいのです。
どうやってやればいいのですか


503 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:21:31 ]
>>502
@{[ 任意の式 ]} を埋め込めばいいだろ。式としてdo BLOCKをつかえばおよそ何でも書ける。

Template Toolkitとか使った方が幸せになれそうだけどな。

504 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:29:08 ]
mapでおk



505 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 14:53:09 ]
リャマ本の133ページ(手元にあるのは11版です)の「8.5.1 優先順位の例」にある

  このパターンは、文字列先頭にあるfredにマッチするか、あるいは末尾にあるbarにマッチします

の部分ですけれど、これって

  このパターンは、文字列先頭にあるfredにマッチするか、あるいは末尾にあるbarneyにマッチします

の誤りじゃないんですか?オライリーのエラッタには載ってないみたいなんですが。



506 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 14:54:56 ]
途中で送信してしまった…

/^fred|barney$/ だとそうなるような気がするんスが。

507 名前:498 mailto:sage [2008/09/02(火) 14:54:57 ]
>>499-501

サンクス。
確認できますた。

508 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 15:03:51 ]
>>505
最初/^foo|bar$/ってなってたのを書き直したんだろうなw

509 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:05:42 ]
>508
なんだか急に親近感がwww


510 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:04:03 ]
そして11版まで行って誰も指摘してないのかよこれww

511 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:32:56 ]
指摘しちゃだめだろjk

512 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:13:41 ]
Perlを勉強する分には、Win上でActive Perlを使うのでも支障は無いでしょうか? 
UNIX上とはかなり差があるような気がして… 


513 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:17:08 ]
Perl自体にWindowsもUNIXも組み込みも関係ない

514 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:11:06 ]
>>512
コマンドプロンプトの操作性やパスの設定、文字コードを考えると、
Unix系のOSでperl使った方がましだと思う。

Cygwinでもいいんだけどさ。



515 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:33:34 ]
>>512
perlを1ヶ月学んできづいたことは、
CPANからモジュールとってくる、ってときに、
WinのActivePerlだと、PPMっていうソフトで
新しいモジュールをインストールするんだけど、
そこのPPMのメニューにすでに登録されている
モジュールしかインストールできない。

厳密に言えば6段階くらい複雑な手順をふめば
PPMを使わないで手動でインストールできるらしいんだが
初心者にはおすすめできない。

つまり、CPANから○○をダウンロードして使え、だとか
言われたりしたときとか、あるいは自分でグーグルで検索して
よさそうなモジュールみつけたときでも、それをかんたんには
入れられないケースが発生することがある。

自分がはまってるのは、mp3を鳴らすなんとか、ってモジュールを
入れたいんだが、PPMにのってないので困っている。

516 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:35:12 ]
2番目は、文字コードの問題。
DOSプロンプトで勉強するときに、必ず

use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;

と書かないといけない。

517 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:08:44 ]
>>512
coLinux+debian sidオススメ。
無駄にハイクオリティーなことをすると楽しい。

518 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:46:20 ]
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1.の行を入れると、DOS窓への日本語出力は簡便になりますが、
# ソースファイル名に非ANSI文字が含まれる場合にdie 文の出力が失敗します。
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。


-----------------------------------------------------
↑これの説明がよくわからないんだが、ファイル名が日本語の場合、
上記の措置が必要という意味なの?

それとも、ファイル名がアルファベットでも、
そのファイルの中味に日本語が書いてあったら、
上記の措置が必要という意味なの?

で、あれば、ファイル名が英語で、なおかつ
ファイルの中味が全部英語なら、上記の措置は
必要ないってことなの?

519 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:55:57 ]
どっちが主流ですか?

1. $obj = new X;
2. $obj = X->new;

1. call_sub();
2. &call_sub;

520 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 22:02:39 ]
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;

-------------------------
↑これってmy $fhって、なんなの?
ファイルハンドルなの?

521 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 22:09:10 ]
open(IN, "1.txt");
while (<IN>) { print; }
close(IN);

-------------------
別に、>>4に書いてあるようにcp932ってしなくても、
上記で日本語を含むファイルを開けるのですが、
これでいいの?

522 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 23:30:15 ]
>>515
こんなんもあるYO

Strawberry Perl
www.moongift.jp/2008/06/strawberry_perl/

523 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 23:37:16 ]
別ファイルに変数を渡す問題だが、
サブルーチン渡しにしたら問題が解決したと書いたが、
参考書で調べたところ、
「サブルーチンは宣言すると、すべて自動的にグローバルになる」
と書いてある。
つまり、ourでグローバル渡しをしているのと
実質的にまったく同じことなので、意味がないのだ。

ここはやはり、モジュールとかパッケージの勉強を
するべきなのか?

本当はどうやって渡すの?

524 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:37:40 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;



525 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:38:28 ]
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;

526 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:39:15 ]
>>524をファイルの先頭に書けば、
>>525は必要ないの?

実際、>>524だけで、
>>525なしでも、動いたんだけど。

527 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:46:07 ]
何もせずにそのままコピーするだけならエンコーディング無視のバイト列で
扱ってもいいけど、普通は中身みて加工とか集計とかするわけで、そういう
ときに違いが出るんだな。


528 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:10:24 ]
$fhってのはファイルハンドルなの?

普通は出てくるはずの
<IN>とかの文字が見えないので不安なんですけど。

529 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:13:03 ]
他ファイルのmy化された変数を別ファイルで読み込んで
使うのって、結局ourでグローバル変数化しておくか、あるいは
サブルーチンに入れて、return渡しするしかないの?

サブルーチンにいれるのは、すべてのサブルーチンは
宣言すると自動的にグローバル化されるのだから、
他ファイルに渡せるのはあたりまえなんですよね。

結局ourでグローバル化してるのと本質的には同じだし。

パッケージとモジュールの勉強をしてみましたが、
それでも結局グローバル化されてる変数は読み込めましたが、
my化されてる変数は読み込めませんでした。

530 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:46:49 ]
自分で何回もためしてみたけど、やっぱりモジュールファイルの中で
my化してるとだめなんだ〜

他ファイルで使って欲しい変数はグローバル化してないと
だめなんだね。

531 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:48:43 ]
>529
相変わらず質問の意図が分かりかねるのだが、それはさておき。


>他ファイルのmy化された変数を別ファイルで読み込んで
>使うのって、結局ourでグローバル変数化しておくか、あるいは
>サブルーチンに入れて、return渡しするしかないの?

やり方が分かってるなら、そうすればいい。


>それでも結局グローバル化されてる変数は読み込めましたが、
>my化されてる変数は読み込めませんでした。

myで宣言されてる変数が他から読めたら、myの意味が無いっしょ。



例えばグローバル変数にはメリットとデメリットがある。
特に理由が無ければデメリットの少ないローカルな変数を使って、サブルーチン間を渡せばいい。
ただし、メリットとデメリットを理解している人間が、的確な場所に使う分には何も問題がない。

グローバル変数を使うのも使わないのも、両方とも正解だ。
その「的確な場所」が分からないのなら、まだ使うべきではないということだ。



532 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:50:26 ]
Wikipediaの「名前空間」の項目が、少しは疑問を解決してくれるかも。
ja.wikipedia.org/wiki/%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93

533 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:56:37 ]
だーかーらー。

たとえば、モンスターの設定ファイルで、
スライムの体力=1とかって設定するとするでしょ。

ファイル名「a.pm」

package 1;
my $a=1;
1;

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

このmy $aを
他のファイルから読みたかったの。
でも無理だとわかったの。
この理解であってる?

534 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:03:42 ]
>>533
いい加減しつこい。とりあえず以下のドキュメント読んどけ。読み終わるまで戻ってくんな。
> perlboot - Perl OO tutorial for beginners
> perltoot - Perl OO tutorial, part 1
> perltooc - Perl OO tutorial, part 2
> perlbot - Perl OO tricks and examples




535 名前:533 mailto:sage [2008/09/03(水) 03:05:01 ]
読み終わりましたー

536 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:08:03 ]
だってグローバル変数絶対使うなみたいなことよく
書いてあるじゃん。

だから絶対使ったらダメなのかと思ったし。

でも外部から読み込まれることを前提に設計されてる
モジュールの場合は、外部に渡す変数はグローバル宣言なのね。

最初からそう言ってくれればいいのに。

入門書にも書いてないしー

537 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:50:29 ]
>>536
・Perlについてくるマニュアルに書いてある
・標準モジュールやユーティリティのソースで実例が見られる
・Webを検索すれば割とすぐに見つかる
・それについて書いてある本がいくつもある

そういうアレな質問に回答を返す病的に親切な人が出てきても、
「聞きたいのはそれじゃない」だったり、完全スルーだったり。

回答者が寄り付かないように工夫しているとしか思えないです。

あなたの好みと水準にぴったり合わせた答えを提供する義務は
誰にもありません。その点は忘れないで下さい。

538 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:51:14 ]
>>533
だーかーらーそれが勇者の設定ファイルなら読めるわ

539 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:59:50 ]
病的に親切な人と、叩こうとする=構おうとする人がなぁ。

540 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 04:00:02 ]
>533
それであってると言う主旨の回答を3回くらい見かけてるわけだが

541 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:02:26 ]
下でエラーが出るのは何故ですか?

--a.pl----------------
our $a = "hoge";
---------------------

--b.pl----------------
use strict;
require "a.pl";
print $a;
---------------------

C:\>perl b.pl
hoge
_____________________________________________________________________________

--a.pl----------------
our $aa = "hoge";
---------------------

--b.pl----------------
use strict;
require "a.pl";
print $aa;
---------------------

C:\>perl b.pl
Global symbol "$aa" requires explicit package name at b.pl line 3.
Execution of b.pl aborted due to compilation errors.

542 名前:デフォルトの名無しさん [2008/09/03(水) 11:02:59 ]
perl -wで動かすと、
Use of implicit split to @_ is deprecated
というものが表示されるのですが、これはどういう意味でしょうか?
-wをつけなければ表示されません

543 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:14:13 ]
>>542
splitをスカラーコンテキストで使うとばらした内容を@_に入れるという
仕様なんだが、サブルーチンの引数渡しに使われる@_を壊すので
よろしくないということになっている。

perldiag(1)の説明によればコンパイラに負担がかかるらしい。

Use of implicit split to @_ is deprecated
(D deprecated) It makes a lot of work for the compiler when you
clobber a subroutine's argument list, so it's better if you assign
the results of a split() explicitly to an array (or list).

古いプログラムはしょうがないが新しく書くプログラムでは避けた
方がいいと思われ。

544 名前:542 mailto:sage [2008/09/03(水) 13:01:45 ]
ありがとうございます

my $tab = split( /\t/, $_);
こう書いているのですが、どのように修正すればいいのでしょうか?




545 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:07:07 ]
>>544
$_ には何が入っていて、$tab には何を入れたいの?
もしかして @tab と書くべきところだったってオチか?

546 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:33:32 ]
ダミーの変数を用意して:

my $tab = my @dummy = split( /\t/, $_ );

が楽だし確実だな。

でも実はタブを数えたかったのなら、タブによって分割された
項目数を数えるより直接タブを数える

my $tab2 = tr/\t//;

の方が効率的なのでおぼえておくといい。

ただしsplitは(第3引数に負の数を与えなければ)末尾の空フィールドは
捨てるので、この動作を利用してなんかしている場合はtrで数える手は
使えない。

547 名前:542 mailto:sage [2008/09/03(水) 14:07:31 ]
>>545
ありがとうございます。
$_には、
foo\tbar\tbaz

\t
のような値が入っています。
$tabには配列の数を入れたかったです。(1行目なら32行目なら0

>>546
ありがとうざいます。
頂いたとおりに修正することで、-wをつけても何も表示されなくなりました。

548 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:58:36 ]
Perlを始めてみたのですが、 
UNIXだとファイルの最初に[ #! /usr/local/bin/perl ]などとフルパスを書くと
コマンドだけで実行できるようですが、Active PerlをWindowsで使ってる場合は、
こういうやり方は無理なのでしょうか? 

今は、ファイルを保存したディレクトリ内で、[ perl <ファイル名.pl> ]を打ち込んで実行しています。 


549 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:54:33 ]
>>548
ちゃんとインストーラでインストールした?
解凍してコピーしただけじゃOSの設定はされないよ。
ちゃんとインストールすれば、ほげ.pl をマウスでクリックするだけで動いてくれるよ。

#! /usr/local/bin/perl
が必要なのは、UNIXというOS固有の問題だから Windows には関係ない。
# で始まってるのでタダのコメント文として無視される。

550 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:56:48 ]
ActivePerlなら、インストール時に(デフォルト設定でインストしてれば)*.plの拡張子に関連付けられてるハズだから、
.plの拡張子を持つファイルなら、コマンドプロンプトから、C:\> 〜〜.plでも実行できる。
(頭の#!〜〜はまず気にしなくてよし。#!/usr/bin/speedy とか書いてる時はエラー出るけど・・)

つうか、拡張子が関連付けられてたら、エクスプローラーからダブルクリックでも実行できる。
けど、前にもココだったか、Webprog板の方だったかにいたけど、
「コマンドプロンプトが一瞬で消えてしまい、出力が読めません。」とか言わないでね。

551 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:20:47 ]
自分は「Perlをはじめよう」ってソフトを使ってる。
便利。

552 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:22:38 ]
sleep 100;

553 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:26:34 ]
質問。
>>525との組み合わせなのですが、
教科書や解説ページを見ると、よく
open FH, ">filename.txt";
---------------
$FH = "filename.txt";
open FH;
------------------
open(FH,"<data.dat"); # 入力モードでオープン
--------------------
$line = <FH>; # 1行読み込み
----------------------
open(FH, $datafile);

@list = <FH>;
-------------------
foreach $data_line( @list ) {
print $data_line;
}
---------------
open(IN, $datafile);

while ( $line = <IN >) {
  print $line;
}
--------------
↑このような例がでてくるのですが、いずれもファイルハンドルとして
INとかFHとか大文字がでてくるのですが、>>525だと
そのような文字が見当たりません。
できれば我々初心者が見慣れた例で書き直した
サンプルをいただきたいのですが。

554 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:43:21 ]
そういう古いのは使っちゃだめ。覚え直せ

open my $fh, ">", "filename.txt";
------------------
open my $fh, "<", "data.dat";
--------------------
$line = <$fh>;
----------------------
open my $fh, "<", $datafile;
my @list = <$fh>;
-------------------
foreach my $data_line (@list) {
print $data_line;
}
---------------
opem my $in, "<", $datafile;
while (my $line = <$in>) {
print $line;
}



555 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:59:55 ]
>>549-550
ありがとうございました。
拡張子つけないでファイル名だけでできるかなと思ったわけです。 

>>551
それインストールしてみました。イイ情報をありがとうございました。 


556 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:05:56 ]
>>553
君の大嫌いなグローバルな変数(ファイルハンドル)を使っていいのかい?

557 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:44:37 ]
>>554,556

まじで?
また古い本を読んでしまったのかな、、、

558 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:45:30 ]
つまりファイルハンドルも実は変数の一つにすぎないと?

それで、プライベートなファイルハンドルと、
グローバルなファイルハンドルが存在すると??

559 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:59:17 ]
<IN>の実体は型グロブ*IN

560 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:31:44 ]
ja.wikibooks.org/wiki/Perl/変数、データ構造

561 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:54:24 ]
>556
たぶん別人。もしくは壮大な釣り

562 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 22:42:54 ]
>>541
> 下でエラーが出るのは何故ですか?

perldoc strict
の "strict vars" の項を読んでみてください。

# そして、上の例でなぜエラーが出ないかについては:
# perldoc -f sort

563 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:04:43 ]
>>562
サンクス

パッケージ名を明記しなくちゃいけないんですね。
でも、$aと$bは、自動的にパッケージ名をつけてくれると。

564 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:10:57 ]
ファイルハンドルを変数に格納するやり方は
「間接ファイルハンドル」
という名前がついていることはつきとめました。

マッキンゼーに2,000万払って調べてもらいました。

で、古いやり方はやめて
間接ファイルハンドルを使え、と
書いてあるWEBページはどこにあるのでしょうか?



565 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:48:34 ]
>564
ここのスレだってウェブサイトの1つってことでいいよね?


566 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:01:01 ]
スレがやけに加速してると思ったらほとんど同一人物ぽいな。
低レベルなレスでスレ汚すなよ。中学生だろ、おまえ。

ま、おれもヒトのこと以遠が。。。でも俺よりは年下だな。

ひとつだけ教えといてやろう。
パッケージ変数はサブルーチンでアクセスしろって、PBPに書いてあった。
Class::Data::Inheritableとか使ってもいいだろう。
だから、もうこの関連で書き込みすんなよ。

567 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:02:32 ]
あ、ちなみに俺、中学生じゃないです。その上だから。

568 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:04:39 ]
>>565
いまボストンコンサルティングに1、500万払って
調べてももらってますが、

「古いファイルハンドルの指定の仕方(FILEとか)でなくて、
新しいやり方、間接ファイルハンドルを使え」


と明確に書いてあるWEBページは、
なかなか見つかんないですよ。

たぶんメリットがないんじゃないですか?

569 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:06:19 ]
>>566-567

高校生でperlできるんだーすごいねー
偏差値68以上の学校?

570 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:09:48 ]
>>568
頭が悪いのにも限度があると思うんだ。


571 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:13:39 ]
>>569
年なんか関係ないだろ。黙って勉強しとけよ、青二才。

上では余計なこと書いた。今は反省している。

572 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:16:28 ]
>>571
進学校?数学得意?プログラミングをはじめたのは何才から?

573 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 06:56:17 ]
pc11.2ch.net/test/read.cgi/php/1218855685/981

PHPの連中は本当にキモイなぁ

574 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:46:42 ]
perlの連中もきめえよ



575 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:51:19 ]
五十歩ひゃっほー

576 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:18:13 ]
五十歩ヒャッハァーあの村の井戸を奪えー!

この場合は my $well か?

577 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:22:57 ]
この流れワロタ

578 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 16:00:43 ]
汚物は消毒だーっ!

579 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 16:55:06 ]
任意の数の配列 @minshu 全てをチェックし、もし obutu であれば値を kasizumi にするソースコードを書け。
ただし @minshu の中に値 kenshiro があった場合は直ちに処理を中止するものとする。

580 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:07:21 ]
自分で書け

581 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:29:48 ]
>579
keshizumi じゃないのか?

582 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:30:41 ]
どこの宿題だよ

583 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:32:56 ]
断る

584 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:52:46 ]
ワンライナー自重



585 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:56:49 ]
ActivePerl 5.10 で、Gmail に Mail::IMAPClient で接続、
メールの添付ファイルを取ってくるスクリプトを書いています。

ログインしてメールの本文などを取得することはできたのですが、
MIME::Parser で parse した時点で、破損したファイル(最後までデータが出ていない)が
出力されてしまいます(output_to_core(1)を消して試してみました)。

この場合、原因として考えられるのは何でしょうか? ここで詰まってしまってます……。



586 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:37:19 ]
どんなスクリプト書いたの?

587 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:49:08 ]
>>586
すいません、最初から書けばよかった。ちょっとはしょってますが、こんな感じです。
use strict;
use MIME::Parser;
use Mail::IMAPClient;
use IO::Socket::SSL;
my $parser = new MIME::Parser;
$parser->output_to_core(1);
my $socket = IO::Socket::SSL->new( PeerAddr => 'imap.gmail.com', PeerPort => 993 ) or die "socket(): $@";
my $client = Mail::IMAPClient->new( Socket => $socket, User => 'hogehogehoogehoge@gmail.com' ) or die "new(): $@";
if ( $client->IsAuthenticated() ){
$client->select('INBOX');
my @uid = $client->unseen;

foreach my $id (@uid) {
my $message = $client->message_string($id) or warn "Timeout!";
my $entity = $parser->parse_data($message);
my $header = $entity->head;
if ( $entity->is_multipart ){
my $parts_count = $entity->parts;
for (my $i = 1; $i < $parts_count; $i++) {
my $part_entity = $entity->parts($i);
my $filename = $part_entity->head->recommended_filename;
my $filebody = $part_entity->bodyhandle->as_string;
open(FILE, ">$filename");
print FILE $filebody;
close(FILE);
}
}
}
}

588 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:11:33 ]
もしかして、他ファイルに定義された変数を
別ファイルから読みたいときは、
「Perlのオブジェクト指向」
を使えばいいんじゃないかな??

あってる?ちがう?

589 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:59:34 ]
>588
誰にレスしてるんだ?

590 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:07:34 ]
オブジェクト指向を使えば、
他ファイルにかかれているmy化された
変数も読めるんじゃないか?
と質問をしてるわけです。

591 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:16:38 ]
今日の発見。

use feature qw( :5.10 );
say 2 ** 50;

これを実行すると
1.12589990684262e+015
とでてくるが、

use bigint;
use feature qw( :5.10 );
say 2 ** 50;

とすると
1125899906842624
と出てくる。

いくつの桁まで表示できるか、
今からちょっと実験してみる。

592 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:17:32 ]
>591
質問は?

593 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:20:03 ]
そういえば、ちょっと前のCGIゲームで、
数値の表記が、3桁づつ、、(カンマ)で
区切られて表示されないのがあって、
これを、3桁づつカンマで区切って表示するように
改造したい、と思ったんだが、これって難しいの?


1234567円→1、234、567円

594 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:24:31 ]
printfって知ってるかい?




595 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:27:18 ]
use bigint;
system q|cls|;
use Win32::Sound;
use feature qw( :5.10 );

say 2 ** 55555;
Win32::Sound::Play("file.wav");


↑これすごいよ。
2の55555乗を計算して
画面に出力するんだけど、
DOS窓が全部数字で埋め尽くされてしまって
もはや何桁あるかなんで数え切れないよ。

CPUが計算するのに5秒もかかるし。(ウチのパソコンでは)

596 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:35:28 ]
>>593
1 while s/^([-+]?\d+)(\d\d\d)/$1,$2/;


597 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:54:46 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use bigint;
use feature qw( :5.10 );
use Time::HiRes 'sleep';
system q|cls|;
$|=1;
#----------------------------------
use Win32::Sound;
use feature qw( :5.10 );
say "2を1000回、掛けてみますですよ...";
my $a=2;
say "結果が出ましたですよ...\n".&aaa."ですよ...";

say "あと、結果の出力を画面の真ん中に出すやり方をおしえてくだしあ";
sub aaa{
for (my $b=1;$b<=499;$b=$b+1){
$a=$a*2;
say "2を500回、掛けてみますですよ...";

say "今、第".$b."回目の計算中ですよ...";
say $a;
system q|cls|;
}
return $a
}
Win32::Sound::Play("file.wav");

598 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:02:07 ]
ファイルアップロードしようとして
同じものがあったらエラーって処理をしたいのですが

ttp://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html

ここの改良版の方に

opendir(DIR , $logfiles);
@filelist = readdir(DIR)
closedir(DIR)

foreach (@filelist){
next if $file =~ /^\.{1,2}$/;
if(compare( $fh , $_){
error処理;
}
}
みたいな感じでやっているのですが
上手くいかんのです
たすけてくだしあ


599 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:17:18 ]
-fとかでいいだろ

600 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:19:54 ]
名前を変えてるのでcompareで比較がしたいのです
助けて下しア

601 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:21:56 ]
compareって何だよ

602 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:22:18 ]
>>598
webprog板池よ

603 名前:改良版ですよ1 mailto:sage [2008/09/04(木) 23:42:40 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use bigint;
use feature qw( :5.10 );
system q|cls|;
use Win32::Sound;
my $a=2,$c,$d,$f;
print "2を何乗させたいのか、数字を入力してくだしあ(例:500)>";
$f=<STDIN>;
chomp $f;
my $e=$f;$d=$e-1;
$c=&aaa;&bbb;
Win32::Sound::Play("file.wav");
sub aaa{
for (my $b=1;$b<=$d;$b=$b+1){
say "2の".$e."乗を計算してみますですよ...";
say "今、2の".$b."乗目の計算中ですよ...";
say $a; $a=$a*2;
system q|cls|;
}
return $a
}
sub bbb{
say "結果が出ましたですよ...\n";
say "2の"."$e"."乗は ".$c." ですよ...";
say "あと、結果の出力を画面の真ん中に出すやり方をおしえてくだしあ\n";
}

604 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:47:43 ]
これなんじゃないの?

use File::Compare;
d.hatena.ne.jp/minesouta/20070807/p1



605 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:49:39 ]
自分でプログラム組めるようになると
すっごい楽しいね!

606 名前:585 mailto:sage [2008/09/05(金) 00:02:52 ]
分からない! 誰か助けてください……。

607 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 00:03:52 ]
>>598
最近、知ったんだけど、下記で、"."や".."を含まない、ファイル一覧が得られる。

@filelist = <$logfiles/*.*>;

608 名前:607 mailto:sage [2008/09/05(金) 00:06:48 ]
そしたら、>>598の処理がこんなに短くなったり。。。

foreach (<$logfiles/*.*>){
if(compare( $fh , $_){
error処理;
}
}

609 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 00:21:48 ]
>606
WebProg池、と言おうと思ったが、問題はそこじゃないっぽいしなあ。


>598>607
状況次第だが、毎回ファイルの中身を全チェックだと効率悪すぎないか?

バイナリから何らかのハッシュを生成しておき(同一バイナリなら同一のハッシュ)、
そのハッシュを保存しておいて比較した方がいいと思う。

稀に別バイナリが同一ハッシュを返すこともあるが、
その時は諦めるか、バイナリを直接比較すればいい。

610 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:22:26 ]
>>585
現象は添付ファイルの種類を問わず発生しますか?
複数のファイルを用意し、それぞれを添付したメールを用意して試してみましょう。
添付ファイルのファイル名に日本語が含まれているか否かで変化があるか確認してください。

611 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:26:40 ]
>>607
本当に? 間違いない? 信じて大丈夫?

いや、誰も信じないからいいんだけどさ。

612 名前:585 mailto:sage [2008/09/05(金) 01:32:48 ]
>>610
添付ファイルの種類を問わず発生しているように見えます。試しているファイルはすべて英語名です。
binmode FILE することで、JPG は開くことができるようにはなりました。

PDF = ファイルが壊れている、と出て開けない。
JPG = 画像の下の方がブロックノイズ(最後までデータができていないっぽい)
HTM = ファイルの最後の方で途切れてしまう。
TXT = ファイル末尾に謎の文字化け。(=ェ攵モ]モスクラmエ輜オラ ←こんなのが。なんだこりゃ。)

message_to_file で書き出してみたファイルを見る限りでは、途中でデータの転送が止まっているようなこともなく、
正常に処理できているように見えます。parse_data して、print する途中でどこか変なところがあるのでしょうか。

613 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:05:43 ]
xorってよくわからないな。

614 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:14:30 ]
ヘルプに誤字発見。これってどこに通報すればいいの?

Parentheses missing around "my" list at 1.pl line 27 (#1)
(W parenthesis) You said something like

my $foo, $bar = @_;

when you meant

my ($foo, $bar) = @_;

Remember that "my", "our", "local" and "state" bind tighter than comma.



615 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:42:13 ]
stateって結構便利だと思うんだけど、
これってバリバリつかっていいの?

gotoみたいに、「絶対に使うな!」とかって怒られない?

616 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 07:46:59 ]
perlのゲーム作りたいなー
誰か一緒に作らない?

617 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 07:54:21 ]
>615
ちゃんとメリットとデメリットを理解して、それが適切だと思えば
別に何を使って良いんでねーの?

stateを使うならオブジェクト指向にしてもいいかなあと思ってみたが、
これは単に自分が無知なだけか。


>616
ゲ製板池

618 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 08:21:12 ]
www.geocities.jp/ky_webid/perl5/index.html
このページすごいわかりやすいね

619 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 10:55:16 ]
>>609
Webprog 板に行ってきますヽ(´Д`;)ノ

620 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:06:49 ]
>>618
宣伝厨うざい、マルチウザイ

>print "$str"; # ***123***\n を出力
こんな事書くアホなページの宣伝すんな
「参考書籍」でPBPやらEffectiveやら勧めてるが
読んでないのバレバレじゃねえか

621 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:17:37 ]
そこまで過剰に反応する意味がわからない。

622 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:34:15 ]
>>621
> そこまで過剰に反応する意味がわからない。

ウソが広まるのを放置しておくと何年もすべての人が被害を被り続けるからでしょう

623 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 13:45:58 ]
まぁ実際、とほほとKENTで広まりまくってるけどな

624 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 15:19:06 ]
だからこそ過剰に反応するんだろうな



625 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:09:32 ]
これだから原理主義者は困る

626 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:13:05 ]
オライリーの「プログラミングPerl」
って、読んだけど、よくわからないね、難しくて。

これって中級者以上向けだよね。

627 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:18:27 ]
>626
ラクダの前にリャマがいるだろ

628 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:29:40 ]
「はじめてのPerl」ね。
うん、そっちから読んだ方がいいみたいだね。

629 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:30:31 ]
Perlでソースコード書いて、
それをCのコードに変換するのってできるの?

630 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:42:34 ]
Cで書けばいいんじゃね?

631 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:50:01 ]
>>629
つB::C

でもperlらしいperlプログラムはたいていCにしても速くなんないから
やめとけ。

632 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:15:47 ]
「続・はじめてのPerl」読んでみたけど、わからんね。
理解できるページが3ページくらいしかない。

633 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:16:52 ]
>>631
速度を速くしたいんでなくて、
あの難しいCのプログラムを自分の手で
生成できるというのがしびれるんです。

昔C勉強したけど結局理解できなかったし。

そんで、B::Cで検索しても情報がでてこないんで、
使い方を解説してあるページを教えてもらえますか?

634 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:26:11 ]
CもPerlも難易度なんて変わらんと思うけどな。
むしろPerlの方が覚えること多い印象だが。



635 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:30:20 ]
>>633
ttp://search.cpan.org/~nwclark/perl-5.8.8/ext/B/B/C.pm

636 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:48:28 ]
>>635
よんだけどわからないよどうしよう
日本語で詳しく説明書があるサイトをおしえてください

637 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:54:13 ]
Can't locate B/C.pm in @INC
(@INC contains: C:/Perl/site/lib C:/Perl/lib .)
at 6.pl line 1.

BEGIN failed--compilation aborted at 6.pl line 1.

とでてくるのですが、ひょっとして
自分のパソコンにはB::Cが入っていない?

これってPPMで入れるの?

638 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 20:55:27 ]
>>636
それを読み解く気合がないなら、その類のモジュールは楽しめない。

639 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:00:52 ]
>>637
そこから手取り足取り教えにゃわからん奴がちょっかい出すブツじゃないよ。

640 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:05:05 ]
いやまじでボクのパソコンにはB::Cが入ってないような気がします。
これはどうやったら確定できますか?

それでPPMみたんですけど、そこにもB::Cが登録されてないんです。

641 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:15:19 ]
しんごけ

642 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:15:40 ]
5.10だと、perlccやらB::Cやらはごっそり標準配布から無くなってるが
もしかして5.10? perldelta参照してみそ

…つーか深追いすんな、しても無意味だ。
ちょっとした想定外のモジュールをuseしてるだけで、B::Cは通らない
んだから(実用的じゃ全くない)。

643 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:16:35 ]
>>640

釣りだといってくれ

644 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:32:53 ]
いつもの独り言の人はもしかしなくても 5.10 だよ。



645 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:36:27 ]
ああ、いつもの人か。レスすんじゃなかった orz...


646 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:14:45 ]
trends.google.com/trends?q=CPAN&ctab=427256520&geo=all&geor=all&date=all

CPANやべええ
どっかの株価1円企業みたいだ

647 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:27:30 ]
Perlってスレッドプログラミングとかってできないの?

Aというスレッドと
Bというスレッドがあって、
AとBを同時に走らせるみたいな。

648 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:30:35 ]
>>646
今時わかってる連中が CPAN に用がある時は Google なんぞ通さずに CPAN Search をひっぱたくからな。

649 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:37:33 ]
>>646
日本一位なのか

650 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:47:10 ]
>>647
>>223

651 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:06:09 ]
>648
あ、CPAN自体に辿り付くのにgoogle使う……

652 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:30:52 ]
ブックマークから自分のアカウントを開く

653 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:33:42 ]
Firefox の smart keyword に登録してる。

654 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:36:26 ]
search.cpan.org と毎回入力してる。ブックマークしろよと打つたびに思う。



655 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:30:16 ]
アロー演算子を使う局面や場面は、
どういうときと、どういうときと、どういうときがあるの?

自分が知ってるのは、
「リファレンス経由で配列要素にアクセスする」
っていう場合だけど、そのほかにも、
オブジェクト指向のときもアロー演算子を使うの?

656 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:36:40 ]
●配列に限らない
●Perlにおいてオブジェクト指向はリファレンスを利用

なので、>655の質問は少しだけ着目点がズレてる。


657 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:53:06 ]
www.rwds.net/kuroita/program/Perl_oo.html#package

パッケージの説明として、これはわかりやすい。

658 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:55:41 ]
package main;

use Stone;
my $obj = Stone->new('石灰岩','100');



-----------------------
↑たとえばこれ。
これってオブジェクト指向だからアロー演算子を
使ってるという理解でいいよね?

659 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:01:38 ]
それでhelpのタイポを見つけたら
どこに通報すればいいの?

660 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:11:19 ]
print "a";
die;
------------------
↑このコードだと、
Died at 6.pl line 3.
a
という出力になるのに、

-------------------
print "a\n";
die;
-------------------
↑このコードだと
a
Died at 6.pl line 3.
という出力になる。つまりひっくりかえってるんだが、
なんで?

661 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:18:48 ]
気分がいいのでレスしちゃう。

>658 それはそうとして>656は無視かい?
>659 ココロの110番に
>660 flush


662 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:19:55 ]
C言語とPerlは近い部分があると聞いたのですけど、ほんとでしょうか。
それを聞いてPerlも勉強してみたいと思ったので。 

printf が print だったり、微妙に違うようですが。 
難しいのかな。


663 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:22:52 ]
perlは超カンタンです。
なにしろ俺サマでさえ、一ヶ月もあれば
基本は理解できます。

664 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:23:51 ]
サブルーチン呼び出すときに、
aaa;
だとウオーニングが出るんだが、
aaa();
だとウオーニングがでない。つまり、
サブルーチンを呼び出すときは必ず
aaa();と、パーレンをつけなければいけない、というルールなの?



665 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:25:03 ]
>>662
C言語をマスターしているのなら、普通の頭脳の持ち主なら、1週間で完全に
習得できます。

666 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:25:38 ]
自己解決した。
サブルーチンの定義が、
ソースコードの最初のほうに書いてあれば
()をつけなくてもできるということか。

だったら、サブルーチンの定義は
ソースコードの後ろでなくて、
最初のほうに書いたほうがいいんでないの?

667 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:29:43 ]
>662
printfもある。

>666
お好きなように。
俺はCで言うところのプロトタイプ宣言だけしてるけど。

668 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:42:31 ]
unlinkって自分は消せないのね。

669 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:45:37 ]
日本語のファイル名ってunlinkで削除できないの?

「あ.txt」とか。

670 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:54:58 ]
SND_ASYNCのフラグの書き方と指定の仕方がわからない。

homepage3.nifty.com/hippo2000/perltips/sound.htm#item_SND_ASYNC

671 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:55:45 ]
Win32::Sound::Play(SOUND, [FLAGS])

この例を見て、

Win32::Sound::Play("file.wav",[SND_ASYNC]);

と書いたが、なんか違うようだ。

672 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:23:23 ]
perl2exe
おもしろ

673 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:43:36 ]
>671
なんでリストにしてんの?

674 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:56:11 ]
>>673
書き方間違ってる?
書き方のサンプルがないから
正直、よくわからんかった。



675 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:57:28 ]
use feature qw( :5.10 );
system q|cls|;

sub abc{

state $a=10;
say $a;
$a--;
if ($a>=5) {
abc();
}
}

abc;


------------------------------
サブルーチンの再帰呼び出しで、
サブルーチン内部の定義部分で、
自分自身を呼び出すときには、
()パーレンの記述は必須なんだね。
これを省略しようと少し考えたけど
無理っぽい。

676 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:59:11 ]
&アンパサンドをつけてサブルーチンを呼び出すのは
古いやり方なので極力さけましょう、とか書いてあるので
&をはずして呼び出そうとするんだけど、そしたら今度は
()パーレンの記述が必須になってしまう。()パーレンのほうが
100倍メンドイと思うんだけど。

、、と思うなら、ソースコードの最初のほうに
サブルーチンの定義を書けばいいじゃん、と思ったけど
通常の関数ならそれでいいけど、再帰の場合はやっぱり無理なのね。

677 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:01:10 ]
stateとmyって実質同じだよね。
どっちも変数をプライベート化して、
どっちも歴史狩る変数っていう。

ただ、stateの方は一回だけ実行されるという
違いがあるけど。

それで、すべてのmyをstateに変更しようかなと
おもうんだけど 、stateにすると何か問題ある?

678 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:01:58 ]
ちなみに歴史狩る変数っていうのは、
過去の歴史あるソースコードを無効にする
って意味です。

679 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:10:44 ]
open( FD, "| C:\\WINNT\/NOTEPAD.exe");

↑これでメモ帳を開くのと、
system関数でメモ帳を開くのと、
何か違いはありますか?

見た目は同じように見えるんですが。

680 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:31:45 ]
>674
一般的に、[ ] は省略可能な要素を意味する記号。

681 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:35:24 ]
>>667 効果が全く違うぞw

682 名前:681 mailto:sage [2008/09/06(土) 22:36:20 ]
>>681はアンカーミス。>>677への突っ込み。

683 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:42:21 ]
>675
サブルーチンの宣言と定義を切り離せばいける。面倒だけど。

use feature qw/:5.10/;

sub abc; # 宣言だけして…
sub abc { # こっちで定義
  state $x = 10;
  say $x--;
  if ($x >= 5) {
    abc;
  }
}

abc;


684 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:52:15 ]
>>683
あー
内容が書いてなくても
宣言だけ先にしてあれば
()パーレン無しでもいけるんだー



685 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:53:43 ]
>683
Cとかに慣れるとそんなに面倒でもないけどねー。
さくっとコメントでサブルーチンの説明するときとか、長くなるんで先頭に並べちゃってる。


>676
省略はPerlの美学なので、
出来る限りタイプを少なくするという思想は正しい。

だけど、わざと面倒な書き方をしておいて、
かつ、そこから外れた書き方をしたらエラーが出るようにしておく、という思想もある。
もしミスった時に、こっちの方が分かりやすいからだ。

この2つはどっちも正しい。
どっちを採用するかは自分で決めるしかない。
仕事でやっているならば、諸乳母で指定される場合があるのでそれに従おう。

686 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:55:54 ]
諸乳母ってなんだ、職場。

687 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 04:25:30 ]
質問です。
先日MacPortsで自動アップデートを実行してから下記のエラーがperl実行時に出てくるようになりました(その前までは出なかったのに…)

Use of uninitialized value in concatenation (.) or string at /opt/local/lib/perl5/5.8.8/darwin-2level/Scalar/Util.pm line 30, <> line 6.

CPANの自動アップデートも行ったのですが、同じエラーが出続けてしまいます。
プログラム事態は特に問題なく実行できているのですが、これを解決するにはどうしたら良いのでしょうか。
よろしくお願いいたします。

MacOSX 10.5.4
MacPorts 1.600
Perl 5.8.8

688 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:22:27 ]
>>687
no warnings;

689 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:24:49 ]
no warnings野郎がキチガイだから無視しないとだめ。

で、回答だが、変数を初期化しないのが理由でウオーニングが出ているのだから、
$aとかの変数をすべて、my $aとかで初期化すれば解決する。
それはUtil.pmの30行目と
本体の6行目にある。

690 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:25:56 ]
ところでみんなこのシリーズみてる?
perl tutorial
jp.youtube.com/profile_videos?user=bermnz&p=v

691 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:39:15 ]
>>688
Scalar::Utilの30行目の警告という事は分かってるんです。消し方も。
ただ気持ち悪いじゃないですか。

CPANで最新のソースを調べても特に修正は無いし、
実際のソースを見てもどうしてそうなるのか分からないんですよね。

search.cpan.org/src/GBARR/Scalar-List-Utils-1.19/lib/Scalar/Util.pm

--------------------------------------------
if (grep { /^(dualvar|set_prototype)$/ } @_ ) {
require Carp;
Carp::croak("$1 is only avaliable with the XS version"); #エラーにある30行目はここ
}
--------------------------------------------

$1ってのに値が入ってないとかそういう意味だと思うのですが、
値が入らないのであれば、この29~30行目は実行されないはずではないのでしょうか…。
初心者なりに色々考えてるのですが全く分からない…。

692 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:45:48 ]
>>689
no worningsはやっぱりダメですよね!
どの本見ても書いてあったので、必ず入れてます。

本体の6行目というのは、Util.pmを直接の
本体という意味でしょうか?(どいつが本体かわかん無い…)
Util.pmを直接自分の書いたスクリプトは実行していなく、
自分の書いたスクリプトの6行目は
use Encode;
なので、なんも問題が無いと思うのですが。

すみません、ご教授下さい。

693 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:05:38 ]
ここで空気を読まずに別の質問

Perlもサイドエフェクトってあるの?

694 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 08:10:35 ]
>>691
grepを一旦、@aで受けるとかどう?

if (my @a = grep { /^(dualvar|set_prototype)$/ } @_ ) {
require Carp;
Carp::croak("@a is only avaliable with the XS version"); #エラーにある30行目はここ
}



695 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:51:40 ]
>>691
こんな感じの事が起きている。
$_ = q/abcd/;
{
m/^(abcd)$/;
print "a:$1\n";
}
print "b:$1\n";

しかし、grep BLOCK LIST の代わりに grep EXPR,LIST を使っても同じ結果になるので要注意。
理由は未確認。(内部的に BLOCK になっているのだろう)

このエラーが放置されている理由は、おそらくこのエラーが報告されていないから。
なにしろ、これはXSバージョンが使えない場合かつユーザーが(デフォルトで輸出されない)特定の
処理を要求した場合のみに発生するエラーだから。
今までエラーが出なかかったのは、単にXSバージョンが使われていたからだろう。

>>687 にあるようにプログラムの動作に問題が無いならば、dualvarまたは(/かつ)set_prototype
を必要無いのに要求していたという事なので、単にこれらを要求する事を止めればよい。


696 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:33:07 ]
>>695
$数字はダイナミックスコープだからブロックを抜けたら元に戻るというのは
その通りだが、今回の例は抜けてないので違うんじゃない?

697 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:38:34 ]
コマンドラインで引数を与える時に、間違った変数名で入力した場合に
Usageを出したいのですが、どうすればいいでしょうか?

698 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:40:28 ]
正規表現で判定するか、CPANからモジュール引っこ抜いてきて判定する
後はprintでusage出せばおk

699 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:43:47 ]
その正規表現の方法がわからないのです。

C:xxx.pl -aaa=1を間違って
C:xxx.pl -aa=1と入力なのですが・・・・

中で変数を宣言してなくて、外でしているのですが、変数名を見ることができるのですか?

700 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:46:07 ]
何を言っているのか意味不明

701 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:51:00 ]
C:xxx.pl -aaa=1を間違って
C:xxx.pl -aa=1入力した場合エラーをだしたい

-aaa=1 が正しく
-aa=1 が間違い

プラグラム中には

our $aaa は宣言してますが
our $aa  は宣言していません

なのですが

説明下手ですいません

702 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:13:28 ]
ああ、そうか。
引数で -aaa って言ったら、普通は a が3つって解釈すると思う。

んで、素直に if 文じゃダメ?

703 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:14:21 ]
>>694-696
XSや、エラーを出す原因となっているスクリプト部分や、
dualvar、set_prototypeなど何だか分からない言葉が
大量に出てきたので、勉強して出直してきますw

自分の書いたプログラム以外の物を編集するのは
気が引けるので、環境を整える方向で考えてみます。

ありがとうございました。

704 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:17:05 ]
>>701
必要な変数に値が与えられたかどうかを判別するので対処出来るのでは?
与えられた引数全てを見れるような方法が欲しいってこと?



705 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:54:19 ]
>>697
> コマンドラインで引数を与える時に、間違った変数名で入力した場合に
> Usageを出したいのですが、どうすればいいでしょうか?

?を使えばいい。

706 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:12:25 ]
引数のオプション名を変数名に紐付けるのではなく、
ハッシュキーに紐付けることで少し楽になる。
あとは Hash::Util を使ってロックした上でエラートラップするなり、
keys %hash リストの各要素と順次 eq するなり。

707 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:23:51 ]
>>699
なんでそんな入り組んだややこしい遠回りで手の込んだことをしたいの?

ふつうにGetopt::Longで処理するのではだめなのか?

708 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:27:42 ]
宣言されている変数に値を代入したいという意味なら、こうするのはどうだろうか?

# 宣言時にとりあえず空文字をいれておく
our $aaa = "";
our $bbb = "";

for (@ARGV) {
defined ${$1} and ${$1} = $2 if( /-(.+)=(.+)/ )
}

709 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:18:10 ]
>>696
今回は grep BLOCK LIST なので、マッチ演算が行われた(目に見える)ブロックから抜けている罠。

695をブロックで書いたのは $数字 のスコープから抜けている点がブロックと同じだからなんだけど、
組み込みのgrep関数のソース(pp.c 内の pp_grepstart)を見たら中でENTER を行っていた(==grepの
中にブロックに入る/抜ける時と類似の処理が含まれていた)ので、ブロックでも構わなくね?

そうでなくても組み込み関数のオーバーライドがありうるので、関数はブロック(サブルーチン)のよう
に扱う方が無難だと思うのだが、Scalar::Util の作者はそう考えなかったみたい。

710 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:50:06 ]
>>709
grepのあとがブロックになってるのを見落としていた。スマン。
で、これどうみてもScalar::Utilのバグじゃね?


711 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:17:01 ]
itpro.nikkeibp.co.jp/article/NEWS/20080905/314238/
この人て有名なの?

712 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:31:43 ]
【コミュニティーサイト作成有志募集!】

現在コミュニティーサイトGaccoで有志を募集しています。
詳しい概要等は
www36.atwiki.jp/vipvipschool/
こちらをご覧下さい。

・プログラミングができる方
(現在技術陣は6名です)
・ウェブデザイン・画像編集能力がある方
(現在デザイン陣は2名です)
・宣伝能力のある方
(人員募集やサイト完成後の宣伝等。動画編集ができると○。)

を募集しています。
気軽にIRCに参加、またはsuteあっと2ch.bona.jpまでメールを下さい。

スレッド:ttp://ex14.vip2ch.com/test/read.cgi/news4gep/1219068297/l50

713 名前:デフォルトの名無しさん [2008/09/08(月) 05:24:01 ]
perlを始めて日の浅い初心者です。
練習として、google検索をしてその件数を出すというプログラムを書いているのですが、
出力と手動で検索した時の件数に誤差が生じます。
ソース挙げておきますので、良ければご指摘下さい。
よろしくお願いします。
use Web::Scraper;
use URI;
use utf8;
use Encode;

my $scraper = scraper { process '/html/body/div[2]/p/b[2]', 'kensuu' => 'TEXT';};
my $uri = new URI('www.google.com/search');
$uri->query_form( hl => 'ja' , q => 'コミュニケーション');
my $res = $scraper->scrape($uri);
print $res->{kensuu};

出力
33,500,000
手動で検索
33,900,000
となってしまいます…。

714 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:38:29 ]
use feature qw( :5.10 );
system q|cls|;
for (1..120) {
state $a="a";
print $a," ";
$a++;
}
say"";


#----------------------
↑なにこれ
楽しい

from
jp.youtube.com/watch?v=v7riTEp9v2s&feature=related



715 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:46:48 ]
use feature qw( :5.10 );
system q|cls|;
open FH,">","1.txt";

for (1..120000) {
state $a="a";
print FH $a," ";
$a++;
}

say "done.Please check out 1.txt";

#---------------------------------
たのしー
これって出力結果を要素ひとつづつ
配列に入れたりもできるのかな?

716 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:58:40 ]
use feature qw( :5.10 );
system q|cls|;
open FH,">","4.txt";

for (1..12000000) {
state $a="a";
print FH $a," ";
$a++;
}
#--------------------------

↑これで1千2百万回まわしたら、
70MBのテキストファイルになって、
エディタで開いたら表示がぶっ壊れた

kazato.run.buttobi.net/cgi-bin/material/src/vm002_0268.png

717 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:12:48 ]
>>713
$uri->query_form( hl => 'ja' , q => 'SEX');

この検索ワードだったら
手動とスクリプトで、
ぴったり件数一致しました。

718 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:15:49 ]
何件か試してみたけど、
日本語のキーワードだとずれる、
アルファベットのみだと、ぴったり一致する、
という特性があるみたいですね。

719 名前:デフォルトの名無しさん [2008/09/08(月) 06:18:33 ]
俺も何件か試したが、なんでズレるんだ?


720 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:31:19 ]
>>719
英語のみのキーワードだとずれないでしょ?

721 名前:デフォルトの名無しさん [2008/09/08(月) 06:50:05 ]
ずれないけど検索するんなら、713もコミュニケーションしてるし、日本語だろうからあんまり意味ないんじゃね?


722 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:55:56 ]
日本語で検索しなければ良い。


723 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 11:27:12 ]
シェルも使える人にお聞きしたいのですが、Perlとシェルって共通してる部分ありますか? 
シェルも勉強したいと思ってきたので。。。 


724 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:12:12 ]
my $q = CGI->new();
これを

&Init($q);
みたいにしてその中で
$q->param('filename')
みたいな処理を行いたくて

CGIオブジェクトをいろんな引数に渡したいのですが
どうやってやればいいのですか



725 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:17:37 ]
sub Init { my $q = shift; }

726 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:22:19 ]
おお、そんなことが ありがとうございます
どこら辺の単語で出てきますか



727 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:23:18 ]
>>723
記述的には、C程似て無いとは思う
でも、言語なんて 表示、条件判定、ループ、サブルーチン作成。
こんだけ分かれば、大抵のものは組めるけどね

728 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:26:58 ]
>>723
どちらもソフトウェアという点が共通してるよ。

729 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:48:54 ]
> ・シェルスクリプトのことをシェルってゆーな

なんとなく某所のテンプレから借りて来た。

730 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:50:39 ]
>>713-722
多分だけど、googleに限らず大手の検索エンジンなんか数百台〜数千(数万?)台のサーバーで
構築されてるんだろうから、毎回必ず同じ結果が返って来るとは限らないんじゃない?
(Yahooなんかは、同一環境でもCookeiが違えば、件数どころか上位十件が全然違うこととかもあるw)

たしかgoogleは、ブラウザの HTTP_ACCEPT_LANGUAGE あたりで使用言語の優先順位を判定して
各言語のサーバへリダイレクトしてるとか聞いたことある。
(例えば、一般的な日本語ブラウザでgoogle.comにアクセスしても、co.jpの方へ飛ばされる。とか)

>>726
「perl サブルーチン 引数」とか「perl shift」とか。

731 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:19:56 ]
PerlとPHPはまったく別物なのでしょうか?関連性とかあるのかな、と。 
その辺のことよく知りません。


732 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:35:03 ]
>>731
ないから諦めてください

733 名前:713 [2008/09/08(月) 15:19:52 ]
>>717-722
皆様ありがとうございます。
>>730
そうなんですか…。
じゃあ日本語を検索した際、プログラムで手動と同じ検索結果を出そうとするのは事実上困難って事ですよね…。
わかりました。
ありがとうございます。

734 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 15:25:32 ]
どういう通信するか観察してきちんと真似てやればなんとかなると思うけどね。



735 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 16:19:48 ]
>726
どこらへんも何も、普通に引数を渡してるだけだぜ?

736 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:59:04 ]
配列から指定の要素番号を抜き出して、
削除するってできるの?

popの要素番号指定版。

$number = pop @array[5];

みたいな。@arrayの要素番号5が抜き出されて
$numberに入り、なおかつ
@array[5]は消え去る。

737 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:25:25 ]
>>735
つsplice

738 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:34:02 ]
>>737
>>736

739 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:44:23 ]
>>39お願いします

740 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:01:37 ]
>>738
頭から1行ずつ読めばそのうち任意の行に到達するよ。


741 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:05:42 ]
ところで>>713はなにをやっているの?
CGIでもないようだし、
にも関わらずWEBのデータ-を取ってきて
なんか遊べるようだが、これって
なんで名前なの?
どういう本にのってるの?

742 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:18:37 ]
>>741
perl スクレイピング
でぐぐれ

743 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:27:08 ]
へーこんな用語があったんだ。
初めて知ったわ。

俺の書いてきたPerlスクリプトは9割がスクレイピングだー

744 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:30:41 ]
オライリーからも本出てるよ。
俺の初めて書いたperlはそれの第一章とかだった気がするw



745 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:00:44 ]
#------------------1

my @a=(1..10);
map {$_ = $_ *2} @a;
print "@a\n";

#--------------------1
#--------------------------
#-----------------------2
my @a=(1..10);
map {$_ = $_ *2} (@a);
print "@a\n";
#------------------2

↑これ、1も2もどっちも
実行できるんだけど、mapの配列の()パーレンは
必要ないってこと?

746 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:36:15 ]
●1
map {print $_,"\n" } 0..10;
これだとちゃんと1〜10が表示されるのに

●2
map {print $_,\n } 0..10;
これだとなぜかアドレスが出てしまう。
なんでだろう?

747 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 03:09:08 ]
my @a=qw(aaaaa bbb ccc ddd eee fff abf haty juy ade il erat tyu dfg gu );

my @b=grep {$_=~'a'} @a;
print "@b\n";

#---------------------------------------
grepのときに、スマートマッチ〜〜使えないのか。

my @a=qw(aaaaa bbb ccc ddd eee fff abf haty juy ade il erat tyu dfg gu );

my @b=grep {$_~~'a'} @a;
print "@b\n";
#--------------------------------
↑これだとエラーが出る。=〜にしないとだめらしい。

748 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 03:53:32 ]
my %hash;

$hash{name}='john';
$hash{age}='25';
$hash{city}='london';

print "@{[%hash]}\n";

↑なんでこれでハッシュの中味が出力されるの?

749 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:03:47 ]
何故〜なの?という質問のときは、
「自分は○○されると想ったのに」と付け加えるとアドバイスしやすい。

750 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:24:40 ]
@{[%hash]}

これの記法がまったく意味がわからん

751 名前: ◆TWARamEjuA mailto:sage [2008/09/09(火) 06:59:06 BE:980633-2BP(7089)]
(grep 1, each %hash)

かな?

752 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:38:24 ]
何年ここにいて、そんな頓珍漢な解答をする? > クソコテ
実行結果すら合わねえじゃねえか


753 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:39:16 ]
jp.youtube.com/watch?v=PIyzRW7L6eY&feature=related
これの最後のやつがちょっと意味わかんないかも。

mapの lcの組み合わせたやつ。

754 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:44:28 ]
$words="a title of a webpage";
$words = join ' ', map {ucfirst lc} split / /,$words;

print "$words\n";


↑これね。



755 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:47:38 ]
>>754
1. スペースで split => 単語毎になる。
2. lc $_ で全部小文字($_ の表記省略)
3. 2. の結果を ucfirst で一文字目だけ大文字化。
4. スペースでくっつける

756 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:00:27 ]
>>736
my $index = 2 ; # 抜きたいindex
my @dat = qw( 1 2 3 4 5 6 ) ;
push @dat, ( splice @dat, $index )[1.. $#dat - $index] ;
print @dat ;

定番

757 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:03:04 ]
>>750
%hash をリストと見做して [] にて無名配列へのリファレンスに突っ込む。
@{} にてそのリファレンスをデリファレンス。

758 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:04:38 ]
>>756
$numberが…
二行に分ければ済む事だけど

759 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:27:14 ]
jp.youtube.com/watch?v=xBTsQ6e7gXY&feature=related
これって何やってるの?

760 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:56:00 ]
>>740
了解しました。
一気にその行に行く方法はないんですね。

761 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:24:25 ]
>760
配列にでも突っ込めば?

762 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:42:21 ]
>>760
あらかじめ各行の先頭位置を別に記録してあればseek一発だが、そういう
準備がされてなければ頭から読むしかないね。なにもないときは頭から
改行を頼りに行数を数えるしか何行目か知る方法はないのです。

763 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:04:15 ]
>>761
行数が多い場合、コストが高そうな気がして。。。

>>762
やはりそうですか。
どもです。

764 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:22:23 ]
yyyymmddの日付を比較したいのですが
どうすれば一番簡単ですか



765 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:48:42 ]
比較だけなら、そのまま比較すれば意図した通りの結果になるんじゃない?

766 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:38:26 ]
ディレクトリの中にファイルがあったら
ディレクトリを空にする、という処理をしたいのですが

if(-e "$path/"){
削除処理
}
みたいなものだと、ディレクトリそのものが認識されて
ファイルを認識してくれません

どうすりゃええんでしょうか


767 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:40:18 ]
>>766
ディレクトリを読んでファイルがあるかどうか調べるといいよ。

768 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:57:02 ]
opendirあたりでヤルしかないですか
遠回りだと思ってたけどそれが一番なのかな


769 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:02:59 ]
グロブ使えよ。
中作業だろ。

770 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:05:57 ]
File::Slurpのread_dirが便利

771 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:17:50 ]
これじゃダメ?

if(<$path/*.*>){
削除処理
}

772 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:45:39 ]
>>769
グロブの使い方がわからないであります

>>770
多分はいってないです

>>771
ためしてみます

773 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:45:46 ]
5.10が動くレンタルサーバーってどこがある?

774 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 02:24:36 ]
事前に膨大な乱数表作っておいて、
substrだけで抜き出して会話するってできる?



775 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 05:35:12 ]
>774
どういうこと?

776 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 05:42:43 ]
my $a="g'oiaherugbapowirhaysrgpairhja]ierhgtauw[eifbgaeirhuecf[awierbawirt]aebm";
等の100万語ぐらいの膨大な量の乱数表みたいな
語句のリストをあらかじめ作っておいて、
「hello」って表示したい場合は
「5」番目と「7番目」と「12番目」を抜き出して
表示する」みたいな。

たまたま、うまくつながってるところを見つけると、
ポイントアップです。

777 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 05:43:46 ]
index と substrを組み合わせたゲームね。

778 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 06:04:15 ]
(1)
use feature qw( :5.10 );
my $t;
$t=localtime;
say $t;

-------------------------------
(2)
use feature qw( :5.10 );
my $t;
$t=localtime(time);
say $t;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
(1)と(2)で、実行結果が変わらないのだが、なんで?
どっちでもいいの?
じゃあ、timeの立場は?

779 名前: ◆TWARamEjuA mailto:sage [2008/09/10(水) 06:58:15 BE:654023-2BP(7089)]
>>752
わはは!
描いて、全然ちゃうわ!と気が付いて投稿窓を閉じたつもりが送信されてたョ(呆)

780 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 07:03:36 ]
Perlの勉強するときに、実は
ものすごく脳力というか
エネルギー使うんじゃね?

漏れは30分か1時間もやると
ぐったりして集中力がなくなる。

読んでも頭に入らなくなる。

781 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 07:16:34 ]
>778
捨てハンでもトリッブでもいいから、なんか分かりやすい名前つけたらどうだ?
たぶん皆喜ぶぞ。NG指定するのに。

782 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 09:10:05 ]
じゃあアンケートとって
スレ住民の51%以上が賛成してたら
そうするよ。

783 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 10:28:58 ]
住人は>>781の一人だから賛成100%が可決。 俺は通りすがり。


784 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:27:20 ]
トリッブはねえよ



785 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 16:28:39 ]
>>782
50.4%が賛成だとアウトなのかが気になる

786 名前:デフォルトの名無しさん [2008/09/10(水) 19:11:24 ]
Perlで作ったツールをUSBメモリに入れて持ち運びたいんですが、
Perlの動作環境込みで持ち運ぶのは無理でしょうか?
テキストファイルの処理がメインでLinuxとActivePerlでの動作は確認しています。
しかしActivePerlがインストールされているWindowsマシンは少なく、
客先ではActivePerlのインストールも許されていない ので困っています。


787 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:19:03 ]
そのUSBに入れときゃいいやん

788 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 21:04:57 ]
>>786
「Perlで書いたツールを持ち歩きたいけれど、フルセットの実行環境は要らない」
PAR - Perl Archive Toolkit があなたのわがままを叶えてくれます。

789 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 21:13:34 ]
PAR の話は「perl.exe だけで足りるかもしれない」と伝えてからでいいんじゃないのか。

790 名前:788 mailto:sage [2008/09/10(水) 21:37:22 ]
>>789
ああ、もっともだね。先走りました。

791 名前:sage [2008/09/10(水) 22:17:56 ]
教えて下さい
windowsでperlを書いてるんですが
$dirName = "C:\\Documents and Settings\\Administrator\\My Documents\\新しいフォルダ";
@res = `"dir \"$dirName\""`;
を実行すると

ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

となってしまします。どこがいけないでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:29:18 ]
(1) >>2をやっていない??
(2) ディレクトリ名にスペースがあるとエラーになる??

793 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:30:21 ]
>>2じゃなくて>>4だった。


(3)Perlでは日本語のフォルダ名を扱えない??

794 名前:sage mailto:sage [2008/09/10(水) 22:42:52 ]
>>792
説明が不足して申し訳ないです。。。
日本語のフォルダが大丈夫なのは確認済みです。
ディレクトリ名にスペースがあると上手くいかないんです。。。
>>4をやっても駄目でした。



795 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:58:31 ]
>>794
$dirName = '"C:\Documents and Settings\Administrator\My Documents\巨乳女子校生・公園で立ちバック"';
@res = `dir $dirName`;

スペースが入るときは "こう 囲んで 渡す" ってとこまでたどり着いてるのに惜しいな。
'これ' と "これ" の使い分けに慣れるといいよ。

796 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:24:02 ]
>>792,793
答えようとするのは良いけれど、
確信がないなら検証してからにしてくれ。
質問者が混乱するから。

797 名前:sage mailto:sage [2008/09/10(水) 23:56:44 ]
ご支援ありがとうございます。

>>795
教えてもらった方法で上手く出来ました。
ありがとうございます。

追加で申し訳ないのですが
>>791のコードでディレクトリ名を引数で渡したい場合はどうしたらよいでしょう?

やりたい事のイメージ:
%>perl test.pl "C:\Documents and Settings\Administrator\My Documents\貧乳女子高生・あばらで洗濯"

test.plの内容
$dirName = $ARGV[0];
@res = `dir "$dirName"`;

ちょっとまだ''と""の違いを正確に理解できていない様です。。。
'' => 文字をそのまま代入
"" => 変数を展開して代入
という認識なのですが他にも違いがあるのでしょうか?

798 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 00:43:41 ]
>>797
'"ああああああ いいいいい うううう"'
これでいけるんじゃない?知らんけどw

799 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 00:50:29 ]
>>797
$dirName = '"' . $ARGV[0] . '"'; # 消えても懲りずにくっつける
@res = `dir $dirName`;

たぶん期待の動作になると思うんですよね。
>perl test.pl "C:\Documents and Settings\Administrator\My Documents\着衣のふくらみ・貧乳編"

perldoc perlintro
perldoc perlop
辺りに書かれてますが '' と "" では \ がエスケープ文字なのか、文字 \ なのかというのも変わってきます。

800 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:20:03 ]
ところでバッククォートってsystemとおんなじだっけ??

801 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 02:38:32 ]
>>800
うーん、マニュアル読んだら分かることだしねえ。
どうしても誰かに聞きたきゃ、くだすれ方面だろうね。
くだすれでも引かれるレベルの質問ではあるけど。

802 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 04:43:45 ]
systemにリストで渡した方が引数を勝手に解釈されなくて済む

803 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 04:45:32 ]
RMってどういう意味?
ReMake?

804 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 04:49:05 ]
remember



805 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:01:59 ]
RozenMaiden

806 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:47:59 ]
perlで関数、サブルーチンに渡す引数ってどちらから評価されますか?

807 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:48:26 ]
こないだのScraperの問題、情報調べてきてやったんだけど。↓

ただ、どうしても日本語の検索キーワードが
文字化けしてしまう。いろいろ調べると、Google
Search History の RSS は UserAgent がブラウザ
ぽくないと charaset=utf-8 じゃなく、charset=ISO
-8859-1 を返してきやがる。

808 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:49:14 ]
nanntoka (A, B, C);

↑この場合、Aから実行なのか、Cから実行なのか、って意味?

809 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:50:11 ]
サブルーチンに渡す引数は、左からだな。
関数は知らない。

810 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:55:33 ]
>>808
そうですそうです

>>809
thx、ちなみにそのサブルーチンでは(ryってのはどっかに規定されてる物なの?

811 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:56:25 ]
おー なんだよー
こんな良いページがあるじゃんかよー
ちゃんと教えてくれよー
www.tkrb.jp/modules/summary1/index.php?id=7

812 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 06:38:21 ]
今発見したが、これはいったいなんなんだー
choco.lv3.net/test/read.cgi/program/1210740268/

813 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 11:04:17 ]
>>810
特に決まっていない

814 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:14:04 ]
簡易HTTPサーバを書くのが便利そうなモジュールを探してみたら、

POE::Component::Server::HTTP
POE::Component::Server::HTTPServer
POE::Component::Server::SimpleHTTP

があるようなのですが、どれを使うのが良いんでしょうか?



815 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 20:55:36 ]
用途による

816 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 00:26:49 ]
my $q = CGI->new(); # CGIオブジェクト
my $fh = $q->upload('filename'); # ファイルハンドル兼ファイル名
my $temp_path = $q->tmpFileName($fh); # アップロードされた #ファイルのフルパス
fileparse_set_fstype('MSDOS'); # WinIE用パス文字設定
my $filename = basename($fh); # アップロードされたファイルの # ファイル名
my $upload_path = "$upload_dir/$filename"; # 保存先フルパス
move ($temp_path, $upload_path) # File::Copy の moveメソッドで
or die $!; # 移動
close($fh); # おまじない

これを改造して、バカでかいファイルでもタイムアウトしないようにしたいのですが
ttp://www.bioinfo.jp/tips.html#background1
これをどこに組み込めばできますか

817 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 01:24:44 ]
下記のバージョンで、CPANからモジュールが
入れられるようになりました。感動した。
・XAMPP(1.6.2)
・Perl Add-on(5.8.8-2.2.4)
・Active Perl(5.8.8.817)


って書いてあるけど、もしかして、
PPMのほかに、CPANから直接入れる方法もあるの?
Activeperl。

818 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 05:43:51 ]
もしかして、5.10が動くレンタルサーバーってないの?
アメリカで10$のとこ、一個見つけたけど。

819 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 06:47:03 ]
jp.youtube.com/watch?v=fPwHSyCrZB8&feature=related

forループの条件部って
こうやって書いてもよかったんだ!

820 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 07:26:47 ]
うぜえ、消えろカス

821 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 07:42:01 ]
>>820
おまえがな

822 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 08:05:08 ]
do
{
do
{
do
{
do
{
print "hello\n";
}
}
}
}

やっぱ男だったら
doのネストだよな!

823 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 08:21:08 ]
{
{
{
{
print "hello\n";
}
}
}
}


よく考えたら、doがなくても
動くじゃないか!

824 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 08:26:20 ]
for $_(1..10){
print $_*2,"\n";
}

↑これだと動くんだけど、

for $_(1..10){
print "$_*2"."\n";
}

↑これだと動かない。
なんで???



825 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 08:57:51 ]
・さっきから鳥肌立ちまくり(の俺センスある)
・朝4時に何見てんだ俺……(でもそんな俺かっこいい)
・泣けた、疲れてるのかな……(でも疲れてる俺かっこいい)
・徹夜の上酔ってる俺が来ましたよ(こんな頑張ってる俺かっこいい)
・小3で全クリできたわ(さすが俺)
・89年生まれだけど知ってますw(俺って博識だから)
・ここからの展開が神(俺見たことあるし見所も知ってるんだぜ)
・これを笑えない香具師はセンスない(俺は笑えてるからセンスある)
・これ○○だと思うの俺だけ?(ちょっとずれてる俺かっこいいor「俺もそう思うよ」待ち)
・この時○○は××でした(そんなトリビアも知ってる俺すげー、敬語だし)
・は?表出ろやカス(返事なかった、俺の勝ち)
・まだこのシリーズやってたんだ、しょうがねえから見てやるか(俺が見てやってるんだからありがたく思えよ)
・神曲ktkr ←これより○○の方が神だろ(マイナー曲を挙げる俺って通だなー)
・shita cyan 禁断の海馬に手を加えて 驕れる無能な創造神にでも 成った心算なの(わざわざ歌詞職人やる俺えらいなー)

826 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 10:17:16 ]
sub abc(@%@%){
my $a=shift;
my $b=shift;
my $c =$a+$b;
print "$c\n";
}

abc(3,4);

↑これでエラーでないとか、
プロトライプの意味ないじゃん!

827 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:27:32 ]
>818
ヒントだけ。「板違い」

828 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:29:41 ]
サブルーチンの引数について勉強するといいと思うよ

829 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:31:31 ]
初心者なのですが質問させていただきます。 

push(@array,$item); 

これを[splice]を使って書くと、
splice(@array,@array,0,$item);

このようになるようですが、開始位置に書いてある[@array]は、「配列の要素数」と考えて
よろしいのでしょうか。それとも要素数じゃないのでしょうか。
「要素数」は添え字の値より1多い数なので、それを開始位置に書いてあるのがよくわからなくて
混乱しました。



830 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:40:12 ]
>>829
> 「要素数」は添え字の値より1多い数なので、それを開始位置に書いてあるのがよくわからなくて
> 混乱しました。


添え字の値より1多い数が開始位置じゃなかったら、なにが開始位置になるんだょ。


831 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:44:17 ]
OFFSET番目の要素の前に入るから要素数でいいんでない?

わかりにくいから例を書いておく。

@array=(a b c)のとき(要素数は3)、

splice(@array, 0, 0, "x")=(x,a,b,c)
splice(@array, 1, 0, "x")=(a,x,b,c)
splice(@array, 2, 0, "x")=(a,b,x,c)
splice(@array, 3, 0, "x")=(a,b,c,x)

832 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 13:06:08 ]
>>829
splice の二番目の引数は「読み飛ばす要素数」ではなく「開始対象となる要素の添え字」なので、
開始位置の @array は「要素数」ではなくて「最大の添え字よりも1つだけ大きい数」の意味。
昔は splice(@array,$#array+1,0,$item) で載っていた。

今は splice(@array,@array,0,$item) だけど、これは scalar @array がたまたま $#array+1 と等しい
場合に限ってうまく動く。
もちろん、何も特別なことをしなければ scalar @array と $#array+1 は等しいので、通常はうまく動く。

833 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 13:09:16 ]
>>826
perldoc perlsub

834 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 13:09:23 ]
>>830-831
理解できました。ありがとうございました。
>>831さんの例で言うと、添え字が[ 3 ]の要素が無いので、
なぜ開始位置の添え字の数値として指定できるのか…と混乱したのです。




835 名前:829 mailto:sage [2008/09/12(金) 13:14:08 ]
>>832 
詳しい説明ありがとうございました。
[$#array + 1]と同じ意味なのですね。非常によくわかりました。




836 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 14:08:22 ]
>>826
バックスラッシュを入れないと

837 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 14:21:41 ]
>>835
[]をつけるな。他の意味になる。

838 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:55:20 ]
threads::shared でしつもん。

perldoc.jp/docs/modules/threads-0.99/threads/shared.pod
に cond_signal の説明で、
「もしどのスレッドもその変数をcond_waitしていない場合、
シグナルは破棄される。常にシグナルの前にロックされるので、
他のスレッドがcond_wait()に入る前にシグナルを発するのを
回避することが(注意深くやれば)出来る。」
とあるのですが、この回避するための注意深いやり方ってどうすればいいのでしょう?


839 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:50:38 ]
最近気が付いた。
せっかく5.10を使って勉強しても
5.10が動く無料のレンタルサーバーが無い。

だから最初から5.8で勉強しないとだめ。
でもactivePerlのバージョンはたぶん
5.10でいいとおもう。5.10の機能を
使わなければいいだけだから。

840 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 04:44:39 ]
よく入門書とかで、「レファレンス、レファレンス」とかって
書いてあるのは、「ハード レファレンス」のことでいいの?

841 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 06:25:47 ]
このスレで良いか分からないのですけどお願いします。

CentOS5を導入したところなのですが、cpanコマンドを最初に立ち上げたとき、
画面にBundle::CPANを導入しろとか書いてありまして、その通りに
cpan> install Bundle::CPAN
cpan> reload cpan
とやったところ、

Missing right curly or square bracket at (eval 319) line 3441, at end of line
syntax error at (eval 319) line 3441, at EOF

といったエラーが出てしまいます。OSの再インストールもしてみたのですが再現します。
この状態で他のモジュールのインストールも出来ているようなのですが、何だか不安です。
このエラーの原因についてご存知のかたはいらっしゃいますでしょうか?
CPAN.pmのバージョンは1.9205です。


842 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:50:11 ]
なにこれ
こんなやり方知らなかったんだけど。

Perl Tutorial 76 - Formats: Low-Level Formatting - Formline
jp.youtube.com/watch?v=voHCfl4lYmE&NR=1

843 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 10:40:17 ]
do do do で die die die $!

844 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 11:23:18 ]
Anonymous FTPはなんで匿名FTPなのに、
なんでAnonymous Arrayは無名アレイなの?



845 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 11:51:34 ]
>>844

anonymous の意味には日本語で言うところの
匿名(本当は名前を持っているけど隠してる)ってのと
無名(そもそも名前がついてない)の両方がある。

それを考えないで匿名しか使ってないやつも多いけどね


846 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:50:56 ]
>>841
Linux板で質問したほうがいいと思われ

847 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:38:52 ]
土曜の夜だからって
書き込みがないのは
許さんぞ!!

848 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 08:44:05 ]
stateがいたく気に入ったのですが、
5.10が動くレンタルサーバーが無い以上、
使うのをあきらめざるをえません。
本当に断腸の思いです。

849 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 08:51:43 ]
レンタルサーバで動かすためのもんじゃないしなぁ・・・
5.8とかにすれば?

850 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 08:54:42 ]
my $r;

my $r=['a','b','c',];
print "@$r\n";


オレ様の初の無名アレイのサンプル。

$rに格納された、無名アレイのアドレスを、
@を先頭につけることによって、
「デ・リファレンス」することによって
配列の中味を表示している、

これであってますよね。

851 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 08:55:29 ]
>>849
まじで?
なんで?

852 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 09:34:52 ]
my $r=['a','b','c',];
print "$$r[1]\n";

無名配列の
デリファレンスの
配列番号指定の
表示法。

['a','b','c',]
という無名配列の先頭アドレスを
$rに格納し、$$rとアタマに$をつけることによって
デリファレンンスして配列の中味を取り出して、
[1]と添え字をつけることで指定の番号の要素を
取り出して表示している。

853 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 09:53:41 ]
なんで有名アレイは()パーレンで囲むのに、
無名アレイは[]スクエアブラケットで囲むのか?

なんで、有名ハッシュは()パーレンで囲むのに、
無名ハッシュは{}カーリーブラケットで囲むのか?

854 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:06:16 ]
my $r;
$r={
'a' => 'b',
};
print "$$r{'c'}\n";

無名ハッシュの例。
{'a' => 'b',};
の無名ハッシュのアドレスを$rに格納。
$$rと先頭に$をつけて{’c’}とキーを指定して
バリューのbを出力している。



855 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:07:28 ]
ねーねーもしかして
5.9.5
のほうが5.10よりも進んでいるの?

(安定性はきにしないとして)

856 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:09:26 ]
>>853
認識が根本的に間違ってる。
() <= 無名アレイもしくは無名ハッシュ(状況によっては単なるリスト)
[] <= 無名アレイへの「リファレンス」
{} <= 無名ハッシュへの「リファレンス」
@arr = ( 1,2,3 ) ; する事によって初めて有名アレイ(んな言いかたするっけ?)と言える。
あくまでも@arrが有名アレイであって、(1,2,3) は単なるリストだ。
[ 1,2,3 ] は、() を省略してる。 [ (1,2,3 ) ]
{ 1,2,3,4 } は、略

文章の流れから、[] を無名アレイと言ったりする人もいるだけの事

857 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:16:04 ]
>>856
事故レス
>() <= 無名アレイもしくは無名ハッシュ(状況によっては単なるリスト)
状況によっては => 厳密には

858 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:34:59 ]
ふーん
デタラメ書くと親切にしてもらえるんだな

859 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:02:51 ]
なぁ、、、
もしかして、ハッシュって、フラグの管理に便利に
使えるんじゃないのか...?

ダンジョンに入った→1

とか。

860 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:13:24 ]
もしかしても何も無いだろ。
ハードコーディングでもするつもりなのか?

861 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 16:02:21 ]
>>859
なんでもいいからモジュールのコード嫁

862 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:42:11 ]
バカでかいファイルのアップロード処理で
ttp://www.bioinfo.jp/tips.html#background1
ここに描いてるやりかたを使いたいのですが
よくわかりません

何か簡単な例でおしえてくだしあ

863 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:00:32 ]
>>862
コメント入れてもたったの10行やん。
これ以上簡単な例?

864 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:04:33 ]
use HTML::TreeBuilder::XPath;

my $html = '<html><head><title>foo & bar</title></head><body></body></html>';

my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse($html)->eof;
print $tree->findvalue('//title');

このコードを実行すると、
foo & bar
と表示されるんだけど、
foo & bar
って結果を返すようにできない?




865 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:10:09 ]
存在を忘れそうになるけど実体参照地雷はよく働いてるな

866 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:13:20 ]
LWP::UserAgentとHTTP::Requestで簡単なhttpクライアントを作っています。
$ua = LWP::UserAgent->new;
$req = HTTP::Request->new(GET => 'ja.wikipedia.org/wiki/Perl');
$req->push_header('User-Agent' => 'Mozilla/4.0');
$ua->request($req);
を実行すると、パケットキャプチャの結果
GET /wiki/Perl HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: ja.wikipedia.org
User-Agent: Mozilla/4.0
という設定していない"TE"を含むリクエストを投げつけています。
この"TE"を含まないリクエストを投げたいときにはどのようにするのが簡単で自然でしょうか?
(パケットキャプチャをする都合上、圧縮はして欲しくないです)

ソースを読んだところ、LWP::Protocol::httpにてSendTE => 1という値を設定していて、
巡り巡ってNET::HTTP::Methodsでその値を参照して有効(1)ならば
push(@h2, "TE: deflate,gzip;q=0.3");
push(@connection, "TE");
をするという処理をしていました。
ttp://questionbox.jp.msn.com/qa1758666.html?StatusCheck=ON
には
>LWP::Protocol::httpモジュールのソースファイル40行目付近を改造(SendTE => 1を0)し
とありますが、それだけはしたくないです・・・

867 名前:864 mailto:sage [2008/09/14(日) 22:51:46 ]
あー、地雷踏んだ… もう1回。

use HTML::TreeBuilder::XPath;

my $html = '<html><head><title>foo &amp; bar</title></head><body></body></html>';

my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse($html)->eof;
print $tree->findvalue('//title');

このコードを実行すると、
foo & bar
と表示されるんだけど、
foo &amp; bar
って結果を返すようにできない?

868 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:11:16 ]
&をエスケープする...?

869 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:14:25 ]
結果文字列を実体参照に変換すりゃいいんじゃね?


870 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:18:36 ]
それしかないかなぁ。実態参照の種類たくさんあるから、できればやりたくないんだよなぁ。

871 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:31:53 ]
そんなモジュールがCPANにあったりして。

872 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:40:39 ]
わざわざ探さなくても HTML::Entities が入ってたりして。

873 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 01:01:13 ]
>>866
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, ぽにょ => ぽにょ);

でオーバーライドできるって、宇宙からのテレパシーが言ってた

874 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 02:17:39 ]
>>873
わーvarsってこんな風に使えるんですね!
瑠璃子ちゃん、電波、届いたよ!ありがとう!



875 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 07:58:28 ]
>874
どう見てもバッドエンドフラグじゃねーか

876 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:27:05 ]
>>873に便乗なのですが、LWP::Protocol::httpを見ると

sub _extra_sock_opts # to be overridden by subclass
{
return @EXTRA_SOCK_OPTS;
}

my $sock = $self->socket_class->new(PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp',
Timeout => $timeout,
KeepAlive => !!$conn_cache,
SendTE => 1,
★$self->_extra_sock_opts($host, $port),
);

という処理になっていますが、例えば
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, SendTE => 0);
としていた場合、★のところってどのように解釈されるのでしょうか?
特に$host, $portの解釈がよくわかりませんorz

877 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 10:07:17 ]
>>876
# LWP::Protocol::http のソースは見ずに。
== 例 ==
use Data::Dumper ;
my @arr= qw( hoge foo ) ;
my %hash = ( hoge => 1, @arr, ) ;
print Dumper \%hash ;
== 例終り ==

これと同じで、@EXTRA_SOCK_OPTS ; で設定した key, value(SendTE => 0)
にて、デフォの挙動の key, value(SendTE => 1)が上書きされる。
>★$self->_extra_sock_opts($host, $port),
がどう解釈もくそも、まんま LWP::Protocol::http の内部サブルーチン呼んでんじゃん。
# $host,$port がどうにも謎なんだが



878 名前:876 mailto:sage [2008/09/15(月) 10:16:13 ]
>>877
サブルーチン呼んでいるというのは分るのですが、自分の知識だと
># $host,$port がどうにも謎なんだが
が解決しないのです

879 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 10:20:27 ]
再定義するとき必要になる情報列挙しといたんだろ。

880 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 10:44:16 ]
>>878
「どうにも謎」と書いたが、それは「作者の意図が分らん」って意味であって
perl の挙動としては $host,$port 完全無視である事は明白。


881 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 11:56:08 ]
おしえてくだしあ

wc -l ファイル名

でファイルの行数を取得したくて
$count = system("wc -l ファイル名");

みたいにしてるのですが、0が入ります
コマンドで取得した行数を変数にぶち込むのはどういうやり方でやるんですか

882 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 12:19:45 ]
open使え

883 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 12:24:11 ]
>>880
# to be overridden by subclass
これが作者の意図だろ。
サブクラスで使うかもしれない情報を渡しているだけ。

884 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 12:25:01 ]
>>881
systemのマニュアルエントリに書いてあるお



885 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 00:28:39 ]
>>881
`wc -l ファイル名`

886 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 03:58:16 ]
my $ref_array = [10, 20, 30];

print "@$ref_array[1]\n";   ←1
print "$ref_array->[1]\n";  ←2

1と2で、どっち使うの?

887 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 05:19:04 ]
my $a = "a";

print "$main::a";

これで何も表示されないのですが、
この時のmy $aは何パッケージに
なっているのでしょうか?

888 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 06:13:33 ]
古い処理 → シンボリック レファレンス
新しい処理 → ハード レファレンス

古いやり方 → &をつけたサブルーチン呼び出し
新しいやり方 → ()をつけたサブルーチン呼び出し

古いやり方 → パッケージ
新しいやり方 → モジュール


、、、まだある?

889 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 06:44:35 ]
$v="aaa";
$r="v";
print "$r\n";
print "$$r\n";

これが シンボリック レファレンス か。

キモイな。

890 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 07:09:33 ]
アロー演算子は
デリファレンスの時と
オブジェクト指向のときと、
二つの場合で使われるの?

891 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 08:13:10 ]
モニタのインチ数を指定すると、画面の縦横サイズを
出力するスクリプトを書きたいのですが、どうしたらいいでしょうか?

my $in = 19; # 指定されたモニタのインチ数
my $rt = 2.54; # 一インチは2.54センチメートル
my $a; # これを求めたい
my $x = 4; # 横の比率
my $y = 3; # 縦の比率

# 三平方の定理
# $in**2 = (($x*$a)**2)+(($y*$a)**2)
# $in = ((($x*$a)**2)+(($y*$a)**2))**(1/2)

892 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 08:15:49 ]
>>891の続き

$in から $a の値を導き出すことが出来たら、
縦横サイズをセンチメートルで出力するのは簡単なのですが、
式の整理が上手くいかず躓いています。

もし宜しければご教授お願いいたします。

893 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 08:22:57 ]
>>892の続き

自己解決することが出来ました。
4:3モニタの場合は、インチ数である対角線の比率が5、
16:9モニタの場合は、18.36になるようです。

894 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 08:54:26 ]
多次元配列とか使わないでも
MySQLとかで解決したほうが速いよね?



895 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 09:43:18 ]
kabocha.org/jelfe/07/28.html

このページわかりやすいね。

896 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 10:09:05 ]
regex::ってなに?
正規表現をかんたんにするためのモジュール?

897 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 10:29:14 ]
Perl Tutorial 93 - Arrays of Arrays
jp.youtube.com/watch?v=oAW7E3pmBCM

これちょっとごちゃごちゃしてて
よくわからんなー

898 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 11:14:56 ]
つか、perlで$aと$bは普通の変数として使うな。

899 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 12:24:20 ]
>>887
myで宣言された変数はレキシカル変数といい、パッケージ変数とは別物。
レキシカル変数は、パッケージに属するのではなく、レキシカルスコープに属する。

900 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:25:09 ]
>>899
でもメインパッケージの中に属しているわけだから
$main::aで表示できるはず、、、、
ってなにか変なこと言ってます?

901 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:25:58 ]
もしかしてこないだやってた議論と
本質的に同じ?

902 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:35:53 ]
タダの自演

903 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:48:35 ]
>>900
$main::aとすると、mainに属するパッケージ変数を参照することになります。
my $a は、レキシカル変数であり、パッケージ変数ではないです。

パッケージ変数を作りたければ、
our $a;
と、宣言しましょう。

904 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:59:20 ]
ふーん
デタラメ書くと親切にしてもらえるんだな




905 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:09:55 ]
sortでハマるんですね。わかります。

906 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:26:56 ]
独り言書かなきゃ死ぬ人と教えなきゃ死ぬ人で需給が成り立ってるから
sort でハマっても解決される仕組みになってるはず。

いろいろループしてますよね。>>541>>562-563

907 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:50:20 ]
教えなきゃ死ぬ人はあまりにも少なく、あまりにも短命。

908 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:17:56 ]
「初心者がPerlを頑張るblog」みたいなのを開設したら
結構な面白いサイトになりそうなのが惜しまれる

909 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:48:04 ]
こいつはだめだろ。全然成長していない。

リア厨かと思ってたけど、昼間も書き込んでるんだな。

910 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 22:31:08 ]
その話題も既出

911 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:13:58 ]
ファイルの一番外側に見えない { } があると思うと良いんじゃないかな。
{
 my $a = "a";
}


912 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 02:42:47 ]
じゃあどこの会社のブログで
開設したらいいか調べてよ

アクセス解析ないとやだけど。
できればアパッチの生ログに近い感じで
見れるとこ。勝手に統計的にまとめて表示
するのはだめ。

それとアホがきたときにはきちんと
アク禁できること。

これが条件。perlお得意のムーバブルタイプで
対応できる?

913 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 07:42:44 ]
kabocha.org/jelfe/07/21.html

クロージャーの説明読んだが、さっぱりわけが
わからんな。

もしかして、最新言語だったら、
オブジェクト指向でやるようなことなのか?

914 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 08:30:44 ]
>912
何時何分何秒、地球が何回まわったときなのか答えろよ!
って反論する小学生を思い出した



915 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:04:08 ]
(1)
型グロブと、グロブって違うものだよね?

(2)
グロブって普通に使うものなの?

916 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:45:52 ]
perlの予約語一覧ってどこにあるの?
getkeyが予約語かどうか、知りたいんだが。

917 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:55:11 ]
ぐぐったらわかった。
予約語じゃないってさ。

なんか、perlのマニュアルに載ってるらしい。
mapの使用例として。

918 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:19:23 ]
スペースキーを押したら
メッセージを出す、ってできないの?

919 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:35:25 ]
今、レファレンスの勉強をしているんだが、

$a=1;

こうした時に、$aには何が
入っているのか?
1がはいっているのか、あるいは
1のアドレスが入っているのか。
あるいは、1のアドレスを指し示した物が
入っているのか。

920 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:41:16 ]
1だろ。

あと$a,$bはsortが使うので以下略

921 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:43:50 ]
>>920
だってレファレンスの解説サイト見たら
「違う」って書いてあったもん

922 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:46:42 ]
$a = \1;

923 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:50:37 ]
y///



↑なにこれ。
入門書にのってないんだけど。

924 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:13:09 ]
レファレンスなの?
リファレンスなの?



925 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:58:22 ]
バファレンス

926 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 16:57:33 ]
>>923
>sed の信仰者のために y が tr の同義語として提供されています。

だそうです。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<239KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef