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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001Mr. MoonlightNGNG
"The duct tape of the Internet"こと、
Perlについての質問箱です
"There's more than one way to do it"ということで
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
0002Mr. MoonlightNGNG
o Perl参考図書

プログラミングPerl VOLUME1 (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4873110963

プログラミングPerl VOLUME2 (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4873110971

通称「らくだ本」。Larry Wallによるバイブル的書籍。
日本語版は2002年9月に新版が出版され、それまで一冊だったものが上下二冊にわかれた。


Perlクックブック (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4873110378

「Perlの鉄人が贈るレシピ集」実用的な問題の解法が示されている虎の巻。


初めてのPerl (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4900900818

多言語の経験のある方が手っ取り早くPerlを勉強したいときにはこれが最適。

0003Mr. MoonlightNGNG
o 質問する前に

perldoc というコマンドがあります。 perldoc perldocで説明が出ます。
perlに付属のドキュメントをこれでチェック。


Usenetで似たような質問がされていないか調べてみよう。
fj.comp.langや
http://groups.google.co.jp/groups?q=fj.lang.perl&ie=UTF-8&oe=UTF-8&hl=ja
comp.lang.perl.*等
http://groups.google.com/groups?q=comp.lang.perl&ie=UTF-8&oe=UTF-8&hl=en


ぐぐってみよう
http://www.google.co.jp/search?num=20&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=perlfaq


本屋に行く暇はないが今すぐオライリーの本を読みたい時、
Oreilly Safari Bookshelf
http://safari.oreilly.com/



o Perl近況

5.8.0が出て、Unicodeの取り扱いがちゃんとできるようになりました。
0004Mr. MoonlightNGNG
前スレ
http://pc3.2ch.net/test/read.cgi/tech/1033688230/l50
0005デフォルトの名無しさんNGNG
>>1さん、ぉっヵι〜
今回のテンプレートはなかなか格好いいかも:-)
0006デフォルトの名無しさんNGNG
my $str;

$str<<__EOM__;
あいうえお
かきくけこ
さしすせそ
__EOM__

print $str;
(このソースはエラーが出ます)

こんな感じで、複数行を変数に直接代入する方法ってありませんでしたか?
あったような気がするんですが、思い出せないので…
0007デフォルトの名無しさんNGNG
自己解決しました。

$html = <<__EOM__;

でOKでした。
0008 ◆F52DmOxJlc NGNG
>>6
実は
$str = "あいうえお
かきくけこ
さしすせそ"
printf("%s\n", $str);
なんてことも可能。
00096NGNG
>>8
本当だ、それだけで代入できました。
エラー出ないのが不思議ですね。
0010デフォルトの名無しさんNGNG
>>9
>エラー出ない
他の言語では普通アウトだから奇異かもしれないね。
ヒアドキュメント演算子はぶっちゃけ「“〜”」を
指定文字列でオーバーライドするものだと思えばいい。
なので逆にオーバーライド“しない”>>8の例も可能な仕様かと。

余談だがこんなのもアリ。読み難いコードになるだけだが…。

print <<EOF; print <<EOF; print <<EOF; # 改行前なら何個でも定義可
abc
EOF
def
EOF
ghi
EOF

__END__
0011デフォルトの名無しさんNGNG
>>10
print <<EOF,<<EOF,<<EOF
abc
EOF
def
EOF
ghi
EOF

これでも行けるよ
0012デフォルトの名無しさんNGNG
とりあえずageとこうぜ
001310NGNG
けれど見る間に埋もれていく…。大晦日なのに…。

>>11
もちろん、カンマ区切りのが一般解。
この場合はセミコロンで区切ったマルチステートメントでも効果が生きるって
意味も持たせたかったので冗長化して見たんですよぅ。出来心ですぅ(;;
(カンマ演算子区切りだと1つの式になるけど、マルチなら複数の独立した式だし)
0014デフォルトの名無しさんNGNG
がんがれー
ageeeeeeee!!!!
0015 NGNG
二次元配列で、一次元目のインデックスが同一の要素の個数は、どうやって取得したらいいのでしょうか。
0016 ◆F52DmOxJlc NGNG
>>15
たとえば $#{$array[$n]} とか scalar(@{$array[$n]}) とか。
0017デフォルトの名無しさんNGNG
変数の文字列の中に入っている\nを、解釈させつつ実行する方法ってありますか?
例えば

$string = "国語辞典\n英和辞典";
print "$string";

とすると、出力は「国語辞典\n英和辞典」となってしまうわけですが、
\nで改行させるにはどうすればいいんでしょうか?
001817NGNG
「解釈させつつ実行」→「解釈させつつ出力」でした。
0019 ◆F52DmOxJlc NGNG
>>17
それおかしい。
0020デフォルトの名無しさんNGNG
>>17
> $string = "国語辞典\n英和辞典";
この時点で改行が入ってるはずだが。
002117NGNG
私も改行されるものと期待して組んだのですが・・。
実際の状況はちょっと違っていて、\nを含んだ文章が書かれているファイルから、
各行を配列に読み込んで改行文字取り除いて、別のファイルに出力した結果が「国語辞典\n英和辞典」なんです。
もうちょっと考えてみます。
0022デフォルトの名無しさんNGNG
$string = '国語辞典\n英和辞典';
print eval qq("$string");


002317NGNG
あありがとうございます。最初ので混乱させてしまってすいませんでした。
0024デフォルトの名無しさんNGNG
>>22
元文字列中にダブルクウォートがあるとヤバイ事態になる気がするんですが…?
元文字列がSJIS/JIS7でなければ、

$str =~ s/\\n/\n/g;

で、充分に通常の用途では事足りると思う。
evalを使うなら「"」と、変換に無関係な「\」は要エスケープだと思う。

ただしSJISの場合はnの前の\が、漢字コードの2バイト目でない事を確認する必要あり。
(\\nはリテラルな\nである、といったエスケープ定義も必要になったりすると面倒だが)
002522NGNG
>>24
おっしゃる通りっす。迂闊

$string = '国語辞典\n英和辞典';
print eval qq( qq($string) );

とか悪あがきしてみるテスツ
0026デフォルトの名無しさんNGNG
質問します。教えてください。
1.XHTML遵守の、ネストしたリストタグを簡単に作れるモジュールに心当たりがあったら教えてください。
2.CVSを使うための、あるいは、簡易CVSとして使えるモジュールに心当たりががあったら教えてください。
3.POE::Component::IRCの日本語訳が存在するか否かを教えてください。
0027デフォルトの名無しさんNGNG
>>26
ごめん、どれも心当たりない
0028デフォルトの名無しさんNGNG
>>26 俺も欲しい
0029デフォルトの名無しさんNGNG
モジュールって、モジュールを使う *.pl と同じフォルダにおいても使えるよね?

あと、HOGE::FUGAってモジュールで、ファイル名がFUGA.pmでCPANにあったりするけど
そのままのファイル名でuseするだけで使えるの?
requireしてから?

さっぱりだよ
0030デフォルトの名無しさんNGNG
@INCに .加える
0031デフォルトの名無しさんNGNG
NetServer::GenericとNet::Serverってどういう関係ですか?
サーバーアプリを作りたいので適用なモジュールを探しています。
0032デフォルトの名無しさんNGNG
PerlCE(PerlIDE)のインストールについての質問です。
WEBサイトの「PerlCEInstall-PerlCEのPocketPC2002へのインストール例。」
を参照しながら、PerlCEをCEマシンにインストールしてみました。
手順の一番最後のPerlIDEの設定のところで、PerlIDEを起動しようとすると
「PerlIDE(またはいずれかの構成ファイル)が見つかりません。
 パスとファイル名が正しく、必要なライブラリが使用可能であることを
 確認してください。」
とメッセージが出てしまい、それから先に進めません。
CEマシンはシグマリオン�Uです。
考えられる原因と対応を教えていただけると助かります。
(手順については、注意深く何度もやり直してみましたが、結果は同じでした。)
尚、celib.dll,Perl for WinCE,PerlIDEはmips-hpc-wce211用を解凍利用しました。
また、perl56.dll,cediallogs.dll,msvcrt.dllもwindowsディレクトリにコピー済です。
cereg.exeを利用しましたが、バッチファイルでのパスの設定にも、ミスは無く、
原因が分かりません。ひょっとして、シグマリオン�Uは、windowsce3.0ですが、2.11は
動かないということでしょうか?
Perl for WinCEはクリックすると動きますので、
それも違うような気がするのですが。よろしくお願いします。
0033デフォルトの名無しさんNGNG
#>>29
#ファイルの配置。
#ModuleTest.pl
#HOGE
#HOGE/FUGA.pm

#in ModuleTest.pl
use lib qw(.); #カレントディレクトリをモジュール検索パスに追加。
use HOGE::FUGA; #requireしてimportするのと同じ。これで使えるYO!
0034デフォルトの名無しさんNGNG
>>32
PerlICE(IDE)便利そうですね?
WinCE以外、つまりWin2kでも動作するIDE環境ありませんか?
コマンドプロンプトとエディターの往復にうんざりしていたところです。
0035デフォルトの名無しさんNGNG
>>34
Win2KならMeadow+Cygwinを使うとPerlのIDEになるよー。
0036デフォルトの名無しさんNGNG
>29
CPANに登録済みなら、CPAN.pm(perl -MCPAN -e shell) でインストールする。
(ActivePerlなら ppm)

独自のライブラリの場合は@INCの指すところに格納するか、
use FindBin;
use lib $FindBin::Bi
0037デフォルトの名無しさんNGNG
>36
スマソ。訂正&追加。

呼び出すperlソース(?)と同じ場所に置くなら、

use FindBin;
use lib $FindBin::Bin

(perl クックブックより)
0038デフォルトの名無しさんNGNG
>>33>>36>>37サンクスコ。

鯖を変えたけど、モジュールのインスコを禁止されているわけなんだ。
そのモジュール自身も他のを読んでいるし、
徹底的にガムバッテみるよ。
0039デフォルトの名無しさんNGNG
とあるPerlプログラムから外部のPerlプログラムファイルを呼んでいます。
外部プログラムはCGIモジュールを使ってパラメーターを受け取っています。
外部プログラムは、コマンドラインからは
perl /home/.../gaibu_hoge.pl parameter=3\&second=abc
のようにやって、パラメーターを受け取ることに成功しています。
しかし、親プログラムから
$cmd = 'perl /home/.../gaibu_hoge.pl parameter=3\&second=abc |';
open(IN, $cmd);
while (<IN>) {
...
}
close(IN);
とやった場合、動作はしているのですが、
なぜかパラメーターが渡せていません。\を取っても同じでした。
原因すらわからないような状態ですが、
このような状況を解決する方法を知っている方はおられますでしょうか。
0040デフォルトの名無しさんNGNG
>>39
パスとパラメータを ? でつなげば良いと思う。
$cmd = 'perl /home/.../gaibu_hoge.pl?parameter=3\&second=abc |';
0041デフォルトの名無しさんNGNG
>>40
それだと、? で繋げた分全てをPerlプログラムのパスだと認識するようで、
コマンドライン上でも親プログラムからの呼び出しでも、
動作すらしなくなりました。
ごめんなさい。
0042デフォルトの名無しさんNGNG
>>41
わからん、hoge.pl をサブルーチン化して require してはだめですか?
004339 & 41NGNG
こちらも色々粘ってみましたが、駄目でした。

>>42
ありがとうございます。ヒントになりました。
一応、わかりやすさを重視して、
hoge.pl の中身をモジュール化して、
hoge.pl と親プログラムの両方から呼び出すことにします。
お手数お掛けしました。
ありがとうございました。
0044デフォルトの名無しさんNGNG
>>39
呼出側の親プログラムがApache等から起動されたCGI環境下で
動いている場合はその子プログラムもCGI環境内、ってことになる。
この場合、CGI.pmは環境変数などをチェックした結果
“コマンドラインからの起動ではない”と判断するかも。

>>40 がアウトになる理由は、open関数内で
起動されるシェルで'?'が処理されるから。
004539NGNG
>>44
おお! 解説ありがとうございます!
今はちょっと忙しいのですが、暇があれば
CGI.pm を hack してみて、中身を確認してみようと思います。
0046デフォルトの名無しさんNGNG
3箱目乙です。

「表」のように2バイト目に「5C」のコードが使われている文字を
shift-jisで扱うと、文字化けしたりエラーになったりするので、
それを防ぐために

$str=~s/表/表\/;

のように文字の後ろに「\」を付けたいのですがこれもエラーになります。
どのようにすればいいでしょうか?
0047デフォルトの名無しさんNGNG
条件演算子で質問です。

$a = 1; $b = 2; $c = 3;
$a ? ($b = 3) : ($c = 2);
print $a,$b,$c;

これだと133と表示されますが、

$a = 1; $b = 2; $c = 3;
$a ? $b = 3 : $c = 2;
print $a,$b,$c;

これだと123と表示されてしまいます。

これって演算子の優先順位の問題なのでしょうか。
よくわからないので識者の方の解説をお願いします。
0048デフォルトの名無しさんNGNG
>>46
$str=~s/表/表\\/;
004946NGNG
>>48
$str=~s/表/表\/;
だとエラーになりますね。

$str=~s/表\/表\\\/g;
でOKでした。自己解決ですいません。
0050デフォルトの名無しさんNGNG
なぜ '/'にコダワルのだろう……
0051デフォルトの名無しさんNGNG
>>47
?:は3項演算子。
$b = 3は式。式全体は無視され、先頭に立ってる$b(項)が評価される。
($b = 3)は式を()で括っているから項、よって中の式が評価される。
0052デフォルトの名無しさんNGNG
現在XMLDBのXindiceをPerlで操作(検索・挿入・更新・削除)する方法を模索しています。
いろいろ探っては見たのですがなかなか解決には至っていません。
どなたか有効な情報をお持ちの方はいらっしゃいませんか?
本当に困っているのでアドバイスをいただけると大変ありがたいです。
よろしくお願いします!!
0053デフォルトの名無しさんNGNG
夜露死苦
0054デフォルトの名無しさんNGNG
PerlでWindowsの印刷関連機能を使いたいのですが可能でしょうか?

0055デフォルトの名無しさんNGNG
>>51
ちょっと誤解を招く表現だな。>…式全体は無視され…

$a = 1; $b = 2; $c = 5;
$a ? $b = $B = 3 : $c = 4; print $a,$b,$B,$c; # 1435
$a = 0; $b = 2; $c = 5;
$a ? $b = $B = 3 : $c = 4; print $a,$b,$B,$c; # 024

条件演算子 ?: は2番目と3番目のオペランドが有効な左辺値
且つ同じコンテキストなら、それ自身が左辺値に成り得る。
つまり上の例だと ($a ? $b = $B = 3 : $c) = 4; で、$a の
真偽によって $b か $c に 4 が代入される。
0056デフォルトの名無しさんNGNG
$^H
ってなんなの?
特別な変数?
0057デフォルトの名無しさんNGNG
myとlocalの違いをおしえて
0058デフォルトの名無しさんNGNG
Perlとperlの違いをおしえて
0059デフォルトの名無しさんNGNG
早くおしえて!!
0060デフォルトの名無しさんNGNG
>>57
ダイナミックスコープ(local)とレキシカルスコープ(my)
localは同名のグローバル変数を一時的に退避し、
局所変数として別途変数を作成する。そこから呼ばれた
ルーチンにおいてもそのlocal指定された変数は有効。
myはC,C++,Javaなどの関数内ローカル変数と同じ。
そこから呼ばれたルーチンには、その変数は見えない。

Perlのメインルーチンがmainというパッケージに収まって
いることを考えると全ての変数はデフォルトでlocal変数と
見ることができる。

ただしこれらは変数名シンボルに対するスコープであって、
メモリ上のオブジェクトはそれとは別に参照カウントに
よって維持管理されている。だからC,C++ではご法度と
されている、ローカル変数のポインタ(Perlではリファレンス)
を関数の戻り値に使うようなことは、Perlでは何も問題がない。
0061デフォルトの名無しさんNGNG
要はあれです。C,C++のようなスタックを使ったレキシカルスコープの
実現は、JavaやPerlにはないということです。C#/.netにはあるとも
聞くけどどうなんだろう。
0062デフォルトの名無しさんNGNG
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0063デフォルトの名無しさんNGNG
>>56
strict.pm 読め。

>>58
「Perl」は言語としての Perl を指す。
「perl」は Perl インタプリタのバイナリを指す。
…というのが何かに載っていた気が。
0064デフォルトの名無しさんNGNG
レキシカル変数と言えば

{
 my $foo;
 sub sub_a { $foo使う }
 sub sub_b { $foo使う }
}

みたいにして、複数の関数にまたがるスタティック変数(C的表現)が使えるね
特定の関数からのみ参照可能なグローバル変数(嘘臭い)と言った方が直感的かな
0065デフォルトの名無しさんNGNG
>64
C言語のauto変数もそうなんだけど、「ブロックの先頭で宣言」なのに
なぜかあんまりやらないんだよなー。キモチワルイからかな。

いるところだけブロックで囲ったほうが見通しはいいしリソースも節約できて最適化も
期待できていいような気がするんだけど。

 「関数の先頭」って思い込んでいる香具師が多いのよね〜。
0066デフォルトの名無しさんNGNG
サブルーチン外で定義されたmy変数は、そのファイルに
結び付けられた固有の変数になります。まさにレキシカル。
(ファイル全体が無名ブロックで囲まれてるのと同義)

#main.pl
my $a = 123; require "sub.pl";
__END__

#sub.pl
print '$a は', ( defined $a ) ? '定義済' : '未定義'; 1;
__END__

逆に、同一ファイル中でこういう定義はできない。

package FOO; my $a;
package BAR; my $a; # ここで2重宣言警告発生
__END__

>>64の例は、実は上記に沿った動作なので
次のように書くと意味が違ってくるよ。

sub main{
 my $foo;
 sub sub_a { $foo使う }
 sub sub_b { $foo使う }
}
my $foo;

sub_a、sub_b で使われる$fooは、sub main 内の
my $foo ではなくて、mainの外で my宣言された $foo だったり。
0067デフォルトの名無しさんNGNG
>>51 >>55
サンクスです。またまた勉強になりました。

0068デフォルトの名無しさんNGNG
>>66
下の例は分かるけど、実際そんな使い方するの?
普通、サブルーチン内で定義したサブルーチンを、そのサブルーチン外から呼ぶことはしないものだと思ってたし。
(main で定義された sub_a, sub_b をmain外から呼ばない)
# サブルーチンの動的生成とかは除いて

もし、そうするなら グローバル変数(use vars) をlocal 宣言すると思うんだけど。
純粋な疑問、意味分かんないや。
# もしかして、単にダメな例?
0069デフォルトの名無しさんNGNG
>>68
サブルーチン内ローカルサブルーチン定義が必要な場合、
Perlでは無名サブルーチン定義にしないとだめです。
>>64の下の例では、sub_a、sub_b は思い切りグローバルなんだわ(^^;

つまり“一般常識として”内部関数に直接触らない自主規制は可能だが、
インタプリンタ実行レベルでは規制されていない。

完全にローカルなサブルーチンを作成使用するには、こうするしかない。

sub hoge{
my $foo;
 my $sub_a = sub { $foo; };
 my $sub_b = sub { $foo; };
 &$sub_a();
 &$sub_b();
}

#このサブルーチンリファレンスを定義ブロック外に
#漏らすと、$foo はクロージャ変数(不揮発領域)になる。

0070デフォルトの名無しさんNGNG
ペルージャ
0071デフォルトの名無しさんNGNG
>>69
了解っす。
main() の中から sub_a() を呼べば、ちゃんと sub main{}なレキシカルスコープの$foo が渡されるけど、
($fooがそう評価されない例で)わざわざ外から呼ぶのは何故?
と疑問に思ったんです(^^;

> つまり“一般常識として”内部関数に直接触らない自主規制は可能だが、
> インタプリンタ実行レベルでは規制されていない。
Perlのこういうところが好き :)
「立ち入り禁止の札」ってヤツですね。
0072IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0073デフォルトの名無しさんNGNG
 
0074デフォルトの名無しさんNGNG
も
こ
そ
も
お
人
世
ど
こ
お
断
0075デフォルトの名無しさんNGNG
  ! | l l ヾ(:::::   ヽ〉ヽ)ヽ `l  ミ ー  .、 |
    | {レヽ〈:::~``'' ´  ソ |! l }   ミ. ミ    ト
    レヽ,;:::''''`':;|;il~,. -‐'  ル )ノl / ミ ノr^,ヾ !
     ゝ l;ュ=≡{., (;;,(ニ===、-.l! li /ソ ;;)|./
      `!;ェ‐・オ ""'''< `・ーz'ー'~ |/ フ;;i |!  <重くなるのはなあ・・・
        |:'""`')'  ^ヽ;` ̄,. -‐'^  i|;;;;ノ/\ー-、-.,_
        !;:.. .:;i|   ;,  ~、´    ,/ |,..ノ;  \ ゝ ヽ``)、.,_
       ``ヽ(__,,,,...)  \_,,..-'   |;;;     |〉   トli ヽ
         |::::::::J..,,_ ^ヽ,  : 1, ;!;:     /l、    ) |
         ヽ::r,―--一' . , il/:::  ::  / !    ;  /
         .//'i`ー-'´; ' ;. ',/;;;:::::  .:::::∧  }    ヽイ
      /  /  L.;_';_._,`.ノ
0076デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0077デフォルトの名無しさんNGNG
記念かきこ
0078デフォルトの名無しさんNGNG
Net-Server(Net::Server - Extensible, general Perl server engine)
の使いかた教えてください。

0079デフォルトの名無しさんNGNG
>>78
%perldoc Net::Server

----
# インチキECHOサーバ、文字列を大文字にして返す
package NetServerTest;
use Net::Server;
@ISA = qw(Net::Server);
$port = 10000;
NetServerTest->run(port=>$port);
exit;

sub process_request {
 while(<STDIN>){ print uc $_; }
}
1;
----

Net::Server を継承して、適当なメソッドをオーバーライドすれば良いみたい
0080デフォルトの名無しさんNGNG
運営側の監視も必要になるのね。
こりゃ大変だわ。
0081デフォルトの名無しさんNGNG
名誉毀損の書きこみがあったと認識し、または認識しえたとき。
てか、日本語も読めないのに良く掲示板利用してるな。
0082デフォルトの名無しさんNGNG
名誉毀損の書きこみがあったと認識し、または認識しえたとき。
てか、日本語も読めないのに良く掲示板利用してるな。
0083デフォルトの名無しさんNGNG
名誉毀損の書きこみがあったと認識し、または認識しえたとき。
てか、日本語も読めないのに良く掲示板利用してるな。
0084デフォルトの名無しさんNGNG
【速報】小学生狙う、悪質な書き込み【キター!】
http://live2.2ch.net/test/read.cgi/news/1042129229/

昨日のニュー速の書き込みがニュースに
0085デフォルトの名無しさんNGNG
ひろゆきの放任主義もどうかしてる。
0086デフォルトの名無しさんNGNG
俺らも人のこと言えないが年末年始に2ちゃんねるって恥ずかしくない?>アンチの皆さん
0087デフォルトの名無しさんNGNG
ゲロ出そうになった。
0088デフォルトの名無しさんNGNG
記録されようがなんだろうがマンコとかき続けるぞ!!
0089デフォルトの名無しさんNGNG
某スレでも見てきたのかもしれませんが、今更レスするあなたがとても滑稽でなりません。
0090デフォルトの名無しさんNGNG

国境を越えた各国警察の合同捜査により
逮捕
0091デフォルトの名無しさんNGNG
複数行の文章をクリップボードにコピーするスクリプトを書いてるんですが、実行後にペーストしてみると改行が変になります。

use Win32::Clipboard;

@lines = ("aaa", "bbb", "ccc");
foreach (@lines){
$clip .= "$_\n";
}

Win32::Clipboard::Empty();
Win32::Clipboard::Set($clip);

print Win32::Clipboard::Get();

コマンドプロンプトで$clipを出力してみると期待通りなんですが・・。
どうすればいいんでしょうか?
0092デフォルトの名無しさんNGNG
変になるってどう変になるのよ(;´Д`)
Windows環境なんだったら、改行コードが違うんでねぇの? \r\n にしてみたら?
0093デフォルトの名無しさんNGNG
改行の部分は「・」みたいな文字が表示されます・・。
\r\nにしたら解決しました。ワーイ
ありがとうございます。
0094デフォルトの名無しさんNGNG
ひろゆき君。
メルマガまってるよ。
0095デフォルトの名無しさんNGNG
>>689
ワラタ
0096デフォルトの名無しさんNGNG
そーいえば。
スクリプトをBATファイルに埋め込んで(perldoc.bat見たいにね)
実行させたとき、エディタの改行設定をLFにしてたもんだから
cmd.exe/command.comがトチ狂ったことがあった。
0097デフォルトの名無しさんNGNG
2ちゃんねるのオランダ引越しまだぁ〜
0098デフォルトの名無しさんNGNG
IP取得でも匿名は匿名なんじゃないかと思っているけど違う?
通常なら他人に知られないんじゃないの?
0099デフォルトの名無しさんNGNG
>>98
もし鯖管理者以外に知られるとしたらプライバシー漏洩だけどね。
逆に、Apacheのアクセスログすら取ってなかったいままでのほうが、
運営管理責任とわれかねないヘタレっぷりなんだけど?(^_^;
#仮に内部ハッキングされてもサパーリ気付かなかったはず<証拠がないから

だから検察に証拠提出能力がないって責められたんと違う?
0100デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0101デフォルトの名無しさんNGNG
set NULLnul>l &>gt>..gthosting-x.commandnull>>gt.gtgt get oldres.-num get few
make IP >renew.
0102デフォルトの名無しさんNGNG
その通りっす。それに加えて民団や層化はある意味法治されてねーからな。
0103デフォルトの名無しさんNGNG
名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
>   >荒らしとか犯罪のためなの?
>   そす。

ヲチ板のいくつかのスレなどには、名誉毀損などで確実に刑法に抵触する行為、
つまり犯罪行為が溢れているが、まだ放置するのか?
事件化した場合、削除権者も、幇助に問われる可能性もあるが?
なぜ、あそこにトマトを導入しないのか?
0104デフォルトの名無しさんNGNG
自由と無秩序のはき違え・・・か。

ただ、差別の非差別による差別やタブーに付いて、一般人が気軽に話せる
場所がなくなるのは勿体無い気もするなぁ。

0105デフォルトの名無しさんNGNG
アルファベットを順番に変数名にしたいのですが…
$code = x41;
と、してASCIIと対応させてアルファベットを取得するのでしょうか?
全然上手くいきません(;´д`)
0106デフォルトの名無しさんNGNG
>>105

$code = ord( 'A' ); # 0x41が入る
$code = chr( 0x41 ); # 文字'A'が入る

この二つの関数を覚えれば恐らく目的に適うでしょう。
けど大量に捌くのならpack/unpackを使うのが能率的。

@uchar = unpack( "C*", 'ABCD' ); # Cのunsigned char配列の代用
$string = pack( "C*", @uchar ); # 上記の逆動作

他にはハッシュ/リストを使うテーブル引きの手も。

@ord{"\0".."\xFF"} = (0..0xFF); print $ord{"A"}, "\n";
@chr[0..0xFF] = ("\0".."\xFF"); print $chr[0x41], "\n";
0107105NGNG
>>106
ありがとうございます。解決しました。
0108デフォルトの名無しさんNGNG
106続き;

もし「連続するアルファベット名の変数名」を一括初期化
したいとかそーいうお望みだとアレなので、

{
no strict;
my @name = "A".."Z"; #変数名
my @code = 0x41..0x5A; #初期値(数値)
for my $n ( @name ) {
eval sprintf( "$%s=%s;", $n, shift @code );
}
print $A;

普通やらないケド。
0109デフォルトの名無しさんNGNG
>>108
eval sprintf( "$%s=%s;", $n, shift @code );
変数の値での変数名は・・・
${$n} = shift @code;
とするのが一般的かな。・・・蛇足でごめん。。
0110デフォルトの名無しさんNGNG
他人を中傷して楽しんでるって…
ゴミだね、あんた。
人間の。
0111デフォルトの名無しさんNGNG
当然含まれるかと思われ。
0112デフォルトの名無しさんNGNG
$line = "abcabc2";
$line =~ s/abcabc([0-9])/ffffff$1/;     ・・・・・�@
するとffffff2 が結果として出ますが
この文字列置換の部分を
$src = abcabc([0-9]);
$dest = ffffff\$1;
$line =~ s/$src/$dest/;
のように変数として動的に扱いたいのですがヤッパリ無理でしょうか?
変数生成時には$1が評価されないので文字列として$destに格納して
�@と等価の処理をしたいのですが(´・ω・`)
0113デフォルトの名無しさんNGNG
>>112
$line = 'abcabc2';
$src = 'abcabc';
$dest = 'ffffff';
$line =~ s/$src([0-9])/$dest$1/o;
print $line;

>ffffff2

・・・??
0114デフォルトの名無しさんNGNG
>>113
レスどうもです。
$line =~ s/$src([0-9])/$dest$1/o;
のように書いてしまうと ([0-9]) $1の部分は固定になりますよね?
ここも動的にしたいのです。
0115デフォルトの名無しさんNGNG
>>114
なるほど。。
eval(sprintf("\$line =~ s/%s/%s/o",$src, $dest));
0116デフォルトの名無しさんNGNG
>>115
あ、oオプションは無くても可だス
0117デフォルトの名無しさんNGNG
eval "\$line =~ s/$src/$dest/";
蛇足にも1つ。。
0118デフォルトの名無しさんNGNG
>>114-117
まさに、コレです、期待通りの処理を行うことが出来ました
ありがとうございました。
0119デフォルトの名無しさんNGNG
以前に、この世に匿名なんてものはありません
0120デフォルトの名無しさんNGNG
なんでこんな殺伐としてるんでつか?
0121デフォルトの名無しさんNGNG
age
0122デフォルトの名無しさんNGNG
バガンっっ!!!!!ズサッ ガッ ギュィィ ゴッググモッッ雨雨
グモッチュチュイチュイチュイーーーーーーーーーーーーーーーーーーーんチュイチュイチュイチュイ――ン
罵ッゴんばっこんばっ婆ッゴんばぎゅブギュ罵ぎゅぎゅきゅ ぼごんぼごんぼごんぼごん
跋扈ン跋扈ン跋扈ンバッカンバッカン馬鹿馬鹿婆きゅうううーー
ギュ気ギュ気ギュ気いい疑義一ギいいっ ギュぎゅうぎゅううう ぶじゅぶじゅぶじゅ
  ききっーーぃ きい ゴットン
となって、ミンチ轢肉になって成仏してしまったそうです。

尚、貨物はフルパワー・全快で走行していた長い編成だったので、凄まじい勢い
で轢断・繊断(物性物理学の運動エネルギー・車輪とレールの轢断機により)され
15歳の中3は、肉片と化したそうです。
 お気の毒ですが、この肉片は荼毘に附して、灰にし、土に帰します。あしからず
ご了承くだされい。
0123デフォルトの名無しさんNGNG
ああ
0124デフォルトの名無しさんNGNG
多重配列で、ある要素内に含まれる要素の個数を取得するにはどうすればいいんですか?
具体的には次のような感じです。
----------------
@array = (
[x,x,x,x...],
[x,x,x,x...], ←この行に含まれる要素の個数を取得したい
[x,x,x,x...]);
---------------------
print @array[1];とかやると、要素の数ではなくて参照が表示されるんで、
もうひとひねり必要なのかと...
おねがいします
0125デフォルトの名無しさんNGNG
>>124
print scalar(@{$array[1]});
こうかな?
0126デフォルトの名無しさんNGNG
ニュー速発富山県警行きのキラー
0127デフォルトの名無しさんNGNG
21 は凄い男だな。感動した。
0128デフォルトの名無しさんNGNG
すみません。ここにいる皆様、神に質問したいのですが
Perlをexeにコンパイルする方法ってどうやるのでしょうか
知り合いにお願いされたのですが、わからなくて・・・
0129デフォルトの名無しさんNGNG
>>128
perl2exeというプログラムで出来たような・・・
0130デフォルトの名無しさんNGNG
>>128
実行ファイル化するには、

perlcc -o hello -o hello.pl

詳細は perldoc perlcc で。
0131124NGNG
>>125
うまく表示できました。ありがとうございます。

自分なりに解説書やインターネットで調べてはいたのですが、
どうも多重配列って評判が良くない&説明が少ないようでした。
(「要するにハッシュ使え」というオチが多い)
はっきりした理由は解りませんが....。またよろしくです。


0132デフォルトの名無しさんNGNG
>>128
Perl2exe
PerlApp(PDK)
Perlcc
0133デフォルトの名無しさんNGNG
PerlccはWin32でコンパイル成功しませんでした。
VC++でも駄目だった。
また、どの方法も実行速度は速くならないようです。
0134デフォルトの名無しさんNGNG
そりゃ Perl 自体元々 C で書かれてるんだし。
計算がメインのプログラムなら早くなるかもね。
0135デフォルトの名無しさんNGNG
fusianasan
0136デフォルトの名無しさんNGNG
そんなに法律に頼りたいならインターネットアクセス自体を免許制にすれば?
0137デフォルトの名無しさんNGNG
倉庫番 ★=BG ★=夜勤 ★なのね。。
0138デフォルトの名無しさんNGNG
use Socket と use IO::Socketの違いを教えてください
0139デフォルトの名無しさんNGNG
>>138
同じだと強弁してみようとすれば、おのずと違いはわかります。
0140デフォルトの名無しさんNGNG
>>131
>自分なりに解説書やインターネットで調べてはいたのですが、
>どうも多重配列って評判が良くない&説明が少ないようでした。

思考せよ! 思考せよ!!
0141デフォルトの名無しさんNGNG
win2000のコマンドプロンプト上でperl実行中に
音を出すのにはどうすればいいんでしょうか?
いわゆる単純なBEEP音程度でも鳴らせられればと
思ったのですがそれらしき機能が見つけられずに悩んでます。
0142デフォルトの名無しさんNGNG
print "\x07";
0143デフォルトの名無しさんNGNG
Win32::Sound
0144デフォルトの名無しさんNGNG
>>142
お答えありがとうございます。

・・・・・・・・ちょっと、自分の知識の無さが情けなくなってきました・・・・・・・・
一から勉強しなおします。
0145山崎渉NGNG
(^^)
0146(^^)NGNG
print "\t\b\b";
0147デフォルトの名無しさんNGNG
Windowsでプリンターを扱うモジュールってありませんか?
Win32::Printerとかないかなぁ。
0148デフォルトの名無しさんNGNG
すみません、質問です。
activeperl 5.8.0 Build804 を使ってます。
動かしたいプログラム中に
use HTTP::Lite;
という表現があり、これが原因で動かないみたいです。
Can't locate HTTP::Lite.pm in @INC 〜
というエラーが出ます。
これってモジュール利用してるってことですよね?
そこで
ttp://search.cpan.org/author/RHOOPER/HTTP-Lite-2.1.1/
↑ここいって、モジュール拾ってきたんですが
これをどうすればいいのかわかりません。

ひょっとして全然見当違いな事してますか?
よろしければ教えてください。
0149デフォルトの名無しさんNGNG
>>148
勘違いはしてないけど、上部の[DOWNLOAD]のtarファイルなら、readme も
ついているはずだし、そっちをダウンロードしたほうがいいとおもうよ
0150デフォルトの名無しさんNGNG
>>147
wxPerl経由だとWin32ネイティブで印刷出来るらしいよ。
ActivePerlのWin32モジュールに印刷関係見当たらないですね?
ぼくも知りたいので、見つけたら教えてね。
0151148NGNG
>>149
はい、そっちの[DOWNLOAD]から落としてきました。
でも中にはreadmeなくて…。
0152デフォルトの名無しさんNGNG
>>148
今 手元に無いんでファイル名忘れたんだが
ActivePerlには、専用のパッケージマネージャが付いてるはず
ActivePerlインストールしたディレクトリ探してみれ
(apm だか ppm だか、そんな名前だったような気が)
それ起動して
>install HTTP::Lite
ってやりゃ、自動的に入れてくれるよ(多分

もしかしたら
perl -MCPAN -e 'install HTTP::Lite'
も使えるかもしれない
0153デフォルトの名無しさんNGNG
>>148
ppm2 install HHTP-Lite
詳しくはactiveperl 5.8.0 Build804 をインストールした
ディレクトリのhtml/index.htmlを開き、ActivePerl FAQの
Using PPMを読め。
英語がわからんなどと泣き言はいうなよ。
0154デフォルトの名無しさんNGNG
>>153 おッっと、チョンボ
s/HHTP/HTTP/
0155デフォルトの名無しさんNGNG
チョンボ ふるっ
0156麻雀大好きNGNG
いつも使ってるが、何か?
0157デフォルトの名無しさんNGNG
↑いつもちょんぼしてる奴
0158デフォルトの名無しさんNGNG
そういえば、麻雀プログラムのスレってあったっけ?
ネットワーク対戦プログラムならコードが小さく収まるし
他にも応用がきくと思うんだが。
0159148NGNG
>>152,153
助言ありがとうございました。
ppmコマンドプロンプトで
ppm> install Lite.pm
って打ってたので出来ませんでした。正しくは
ppm> install HTTP-Lite
ヘルプ読んだら一発…。お恥ずかしい限りです。
0160デフォルトの名無しさんNGNG
MCrypt-0.92を使っていますが、mcrypt_ecb関数で
暗号を復号時にうまく変換ができません。
どうも変数に入っているバイナリデータ(\0を含む)の
受け渡しがうまくいってないようなのです。
サブルーチンへバイナリデータを受け渡すいい方法って
ないでしょうか?

# それともどうしようもないのかねぇ・・・
0161デフォルトの名無しさんNGNG
$name = system( hostname )
画面に表示される方を変数に入れたいのですが・・・
0162デフォルトの名無しさんNGNG
しばらくぶりにこのスレ覗いたけど、まだ荒らし常駐してんのか。
0163デフォルトの名無しさんNGNG
>>160
ここでボヤクより、駄目な場合をテストスクリプトにして
MCryptの作者に直接メールした方が早いんではないかい?
0164デフォルトの名無しさんNGNG
>>161
$name = qx( hostname );
0165160NGNG
>>163
うーむ。やはりそうですね。
メールしてみまッス
0166デフォルトの名無しさんNGNG
画面から入力した文字でログのgrepをかけるスクリプトを書きたいと考えています。
変数でgrepするスクリプトを書いてみましたがうまくいきません。
どうすればいいでしょうか?
0167デフォルトの名無しさんNGNG
>>166
どう書いてどう動かないのか。

やる気はございますでしょうか?
0168166NGNG
166です 初心者ですみません

>>167さま
@logにログを入れた後
$a=<>;
@output = grep /$a/,@log;
と言うような感じで@outputに出力しようと考えていました
0169デフォルトの名無しさんNGNG
>>168
別段問題ない気がするんだけどな。……あー。
chomp $a;っていれたらいいんでないかしらん。
0170デフォルトの名無しさんNGNG
>>167
それイイ!! 禿しくワラタ。

>>168
>>169のとおりですが、パターンの中が変数じゃないと困るけど、1回代入したら変更なし、という
時は、後ろに /pattern/o とつけてやると少し速くなりますYO。
0171山崎渉NGNG
(^^)
0172デフォルトの名無しさんNGNG
LWP::UserAgentで requestしたあとで
print $res->content;
とやると、何故か改行一つが改行二つになってしまいます。
なんで?
0173デフォルトの名無しさんNGNG
>>172
OSの名前くらい書け。
MS-WindowsならLF->CRLFになるからCRLF->CRCRLFになる。
0174デフォルトの名無しさんNGNG
コマンドラインオプションを認識するようなコードを書きたいんだけど
for ( @ARGV ){
if( $_ =~ m/-test/ ){
print "TEST MODE\n";
}
}
これよりもスマートに行けるかな?
0175デフォルトの名無しさんNGNG
>>174
use Getopt::Long;
0176デフォルトの名無しさんNGNG
LWP を使ったユーザエージェントに wget -k とおなじことをやらせるには
どうしたらいいですか?
読みにいったページ内のアンカータグとイメージタグのURLを
絶対パスに変換して保存させたいんです。
(URLを抽出するなら変換するメソッドもURL::URIあたりに
用意されてるみたいなんですが。)
0177デフォルトの名無しさんNGNG
>>176
$r->base
0178デフォルトの名無しさんNGNG
>>176
HTTP::Response#base
0179デフォルトの名無しさんNGNG
Win32環境でイベント(ファイルシステムからディレクトリとファイルを削除した際)を常時監視するスクリプト作りたいのですが
どのモジュール使えばいいのでしょうか?
0180デフォルトの名無しさんNGNG
>>179
Win32::EventLog
ファイルを監視出来るのかは知らない。
Win32モジュールはWindowsでしか動作しない。
0181デフォルトの名無しさんNGNG
ActivePerl(Build633)のインストーラが、%Path%中で指定している環境変数を
勝手に展開しちゃう件はガイシュツでつか?
かなり糞な不具合だと思うんだけど。
0182デフォルトの名無しさんNGNG
↑意味不明
0183デフォルトの名無しさんNGNG
>>182
分かり難くてスマソ。環境変数「Path」が、元々は、

「%SystemRoot%\system32;%SystemRoot%;・・・」

と環境変数を使って値が設定されているのに、ActivePerlのインストーラが
Perlのパスを追加するときに、既存の値の中の環境変数を展開しちゃって、

「X:\Perl\bin\;C:\WINNT\system32;C:\WINNT;・・・」

と設定しちゃう。

build62xの頃のインストーラは問題無かったハズだけど、何故にあとから
こんなバグ組み込んじゃったんだろ。
0184デフォルトの名無しさんNGNG
馬具とはいえんだろ。仕様の変更か、お宅がOSを変更したかだな。
インストールの中では、環境変数とかPathの設定をさせないようにして
後で自分の趣味に合わせて勝手に設定したらどうよ。
俺はいつもそうしてる。
0185デフォルトの名無しさんNGNG
>>184
>馬具とはいえんだろ。仕様の変更か、お宅がOSを変更したかだな。
OS変更してません。Win2000で再現可能です。
もし仕様変更としても、こんなアホな仕様にする必要性が理解できません。
つーか単純に、環境変数展開の考慮漏れでしょ。

>インストールの中では、環境変数とかPathの設定をさせないようにして
>後で自分の趣味に合わせて勝手に設定したらどうよ。
そりゃーこの現象に気が付いていれば、インストール後に直してやるなり対応は
可能だけど、気が付かない人はまずいでしょ。
ちなみに>>184は、これまでにこの現象、知ってましたか?
0186デフォルトの名無しさんNGNG
>>185
環境変数の
%SystemRoot%\system32〜
が
?:\windows\system32〜
に置き換わるって言っているのか?

同じくBuild633でwinXP環境だけど全然置き換わっていないぞ。。
0187Mr. Moonlight≠184NGNG
今試しにインストールしてみたけど確かにそうなるね。なんかキモいなコレ。
でもま、バグなんだろうけど%SystemRoot%なんて
実際のトコ変わることなどなさそうだし、
あまり神経質に気にしなくてもよさそうな気がするよ。
0188デフォルトの名無しさんNGNG
>>186
XPでつか。こんど検証してみます。
>>187
>でもま、バグなんだろうけど%SystemRoot%なんて
>実際のトコ変わることなどなさそうだし、
>あまり神経質に気にしなくてもよさそうな気がするよ。
まあね。
でも%SystemRoot%以外の環境変数も展開されるし、気をつけないとまずいかなと。
客先の既存環境に導入するようなケースもあり得るだろうし。
0189デフォルトの名無しさんNGNG
>>186
WinXP Proクリーンインストールしてサービスパック等は入れない状態で
試してみたけど、Win2000と同様に展開された値になりました。
0190デフォルトの名無しさんNGNG
>>189
?
ActivePerlをインストしてあるXP2台と殆どなにも入れていないXPで
環境パスはなにも変わっていないよ
0191184NGNG
>>185
納得するかも?って書いたんだけど甘かったな。まっ、本家にブー垂れたら?
と逝っても、もう、633はサポートしないだろうけど。
http://bugs.activestate.com/ActivePerl/query.cgi
0192デフォルトの名無しさんNGNG
形勢不利と見るや知ったような事を言う>>184がいるスレはここでつか?
0193恵理@言問橋NGNG
お祭りだ、ワーイワーイ。
0194デフォルトの名無しさんNGNG
ここは英語が分からない馬鹿がブー垂れるスレですか?








氏寝予、おめー
0195デフォルトの名無しさんNGNG
>>194
どっか書いてあるの?
0196デフォルトの名無しさんNGNG
ageちゃったスマソ。
0197デフォルトの名無しさんNGNG
Perl6はいつになったらできるんだコラ!あぁ?
0198デフォルトの名無しさんNGNG
use と require の違いをおしえて
0199デフォルトの名無しさんNGNG
use vars qw($VERSION);
$VERSION = 1.00;

ってどういうこうかがあるんですか?
0200デフォルトの名無しさんNGNG
>>198
require は実行時に検査される。
useはコンパイル時に検査される。

--
print "hoge";
require Hoge::Fuga;
--
だと、 "hoge" が出力された後に エラー(Hoge/Fuga.pm がねぇよ)を吐くけど
use にした場合は、実行する前にHoge::Fugaがチェックされて、
無い場合は実行されない(hogeも出ない)
更に use は import() を自動的に呼ぶ

嘘臭い説明するとこんな感じ。
更にインチキな説明をすると
「Perlモジュールとして作られ物(.pm) はuse そうじゃないなら require」

>>199
そのスクリプト(モジュール)のバージョン設定だよ
0201デフォルトの名無しさんNGNG
対象の「/hogehoge」ディレクトリの全ての「*.txt」ファイルに
ある処理をあてるにはどういう流れですれば良いでしょう?
今までは "perl -i.bak script /hogehoge/*.txt" とかやって
いたんですが、流石にちゃんとした検索がしたくなったので・・・
0202デフォルトの名無しさんNGNG
>>201
UNIX なら find を組み合わせた方が UNIX 的で美しいですが。
いかがでしょう?
find /hogehoge -name "*.txt" -exec cmd.pl {} \;
0203デフォルトの名無しさんNGNG
acitiveperl dev kit をアンインストしたらデバッガが起動しなくなりました

C:\>perl -d -e '0'
Unable to connect to remote host: 127.0.0.1:2000
Compilation failed in require.
main::BEGIN() called at C:/Perl/lib/perl5db.pl line 0
eval {...} called at C:/Perl/lib/perl5db.pl line 0
BEGIN failed--compilation aborted.

たすけてやってください
0204デフォルトの名無しさんNGNG
>>201
glob() 多少手が込んだ事やるなら File::Find
0205デフォルトの名無しさんNGNG
perl5.8のデバッガ ポインタが実行行を示してくれないんですが。
激しく使えません。
0206デフォルトの名無しさんNGNG
>>205
あ、ActivePerlのです。
0207デフォルトの名無しさんNGNG
>201
opendir(DIR,".");
@d=readdir(DIR);
closedir(DIR);
for(@d){print("$_\n")if($_=~/\.txt$/);}
これで如何?
0208デフォルトの名無しさんNGNG
今、多人数参加型のオンラインゲームを作ろうと思っています。

ステータスなどの管理を「ユーザー名.dat」などのように、
ユーザー個別のファイルで行いたく、新規登録時にファイルを作成させたいのですが
とほほなどを見ても、それらしきコマンドが見あたらず、困っています。

mkdirはディレクトリだし・・・
こういうときはどうすれば良いのでしょう?
0209デフォルトの名無しさんNGNG
知識が足りないということに気付いて、
ネット上の資料だけで安くあげるのではなく、きちんとした参考書を買う。
0210デフォルトの名無しさんNGNG
open(OUT,">ユーザー名.dat");
のように'>'のようにリダイレクトを使う
リダイレクトは他にも'>>','<','+<'等あるので調べてみそ
0211デフォルトの名無しさんNGNG
>209
趣味でやるには高すぎるっす(;´Д⊂

>210
それで出来たんですね!
存在しないファイルはエラーになるって思いこんでました。(つД⊂)
有難う御座いました!
0212デフォルトの名無しさんNGNG
うーむ。趣味に金をかけずに何に金をかけるんだろうか。
0213デフォルトの名無しさんNGNG
つか、その程度のレベルでオンラインゲーム作ろうと思うのが偉いな
がんがってくれ

皮肉じゃなくて高い目標を持つのはいい事だよ
0214デフォルトの名無しさんNGNG
つか、その程度のレベルでオンラインゲーム作ろうと思うのが偉いな
がんがってくれ

皮肉だよ高過ぎる目標は挫折の元だよ
0215デフォルトの名無しさんNGNG
PGPのフィリップ・ジマーマンって、
最初はプログラミングのことは全くわからないタダのオサーンで、
いろんな人にプログラミングのこと聞きまくって勉強してPGP作ったらしいね。

目標が高いのはいいんだけど、ほんとうに真剣に打ち込める目標でナイトね。
0216山崎渉NGNG
(^^)
0217208NGNG
>212
他の趣味にお金かけますよw

>213
ども! がんがります!

>214
・・・( ´・ω・)

>215
ジマーマン(・∀・)イイ!!
久々に出会った、やってて楽しい作業なので
まだしばらくは大丈夫です!
0218213NGNG
嘘だ馬鹿
皮肉に決まってんだろ
0219208NGNG
   ∧∧
   /⌒ヽ)
  i三 ∪
 〜三 |
  (/~∪
  三三
 三三
三三
0220214NGNG
嘘だよ。皮肉じゃないよ。
高い目標を持つのはとても良いことだよ。
ただ一気に目標に向かうのはダメで、
その目標に達するために何が必要か細分化する必要がある。
まずは、その細分化された問題を解決する小さなプログラムを作ってみてはいかが?
それができてからだんだん大きくしていけば良いよ。
がんばれ!
0221デフォルトの名無しさんNGNG
default.txt(何万行もあるものです)の内容を一行ずつ読み込み
a.txt、b.txt、c.txt、d.txt、e.txt
の内容と照らし合わせ。default.txtの内容に合致する
*.txtにカウントを1ずつ増やす、というのを高速に行う
にはどうしたらよいでしょうか?
forkで子プロセスを生んで並列に処理すればいいのでしょうか。。
とは言ってみたものの、へっぽこなのでわかりません。。
どうかご教示下さい。お願いしますっ
0222デフォルトの名無しさんNGNG
a-e.txt の内容で defalut.txt に grep かければ。
0223208NGNG
      ∧ ∧
     ヽ( ´∀`)ノ >220 今はただ足下を固めるばかり♪
    へノ   /        構想の一割にもキテナイ♪
      ε ノ          がんがるよ!
       >
0224デフォルトの名無しさんNGNG
>>223
玉袋が冷えすぎると魔王が蘇えるから気をつけてね。
それがあの人の遺言だから。あまり無下に扱って欲しくない。
たましい。その。
0225デフォルトの名無しさんNGNG
open(IN, a) とかのINってなに?
0226デフォルトの名無しさんNGNG
>>225
ファイルハンドル。

INって名前の(ファイル専用の)変数に、"a" が入ってると思えばいいよ
open(IN,'a.txt')
$data = <IN>;
close(IN);

'a.txt'の別名と考えると分かりやすいかもしれない
てかドキュメント嫁
0227デフォルトの名無しさんNGNG
超初心者です。
perlでwindowsのアプリケーションとかを動かすように作れますか??
0228デフォルトの名無しさんNGNG
>>227
作れます。
0229227NGNG
良ければ作り方か、
なんか良いHPほ教えていただけませんでしょうか??
0230デフォルトの名無しさんNGNG
>>229
最初からそう言えば?もったいぶってないでさ。

system
0231デフォルトの名無しさんNGNG
パイプ
0232デフォルトの名無しさんNGNG
ある文字列を含まないものにマッチする正規表現

(?:(?!foo).)*




含まないものにマッチするってどういう意味?

マッチさせて含んでいたら、非0を返せばいいんじゃないの?

そういうのとはちがうんか?
0233デフォルトの名無しさんNGNG
あるperlプログラムから、かなり処理に時間のかかる、別のperlプログラムを起動したいのですが、
system関数ではwaitしてしまうし、exec関数では元プログラムが終了してしまいます。
返り値は必要としてないので、一方的に起動させるだけということはできないのでしょうか?
0234デフォルトの名無しさんNGNG
フォークしろ
0235デフォルトの名無しさんNGNG
forkって自分の複製をつくるものじゃないの?
forkしたあとに子プロセス側からsystemを呼べってこと?
0236デフォルトの名無しさんNGNG
パイプの処理で、
a.pl:
open(TEST, "|b.pl");
print open 'test';
close(TEST)

b.pl:
while($line=<STDIN>) {
printf"$line";
}

としても何も表示されません。
パイプのデータの受け渡しが間違ってると思うのですが、
ぐぐっても分かりません。どうすればいいのでしょうか。
環境はwindows2000+ActivePerl最新版です
0237233NGNG
>>234-235
forkで子プロセスからexec or systemしろと言うことですね。
有難うございます。無事できました。
0238デフォルトの名無しさんNGNG
ActivePerl では、fork 使わなくとも(使えなくても)

system( 1, "command ..." );

とやるとバックグラウンドプロセスを立ち上げ可能。
先頭の引数が1なのがミソ。
UNIX で system( "command ... &" ) とやるのとほぼ一緒。

>>236

open(TEST, "|b.pl");
print open 'test'; # <== これは何?
close(TEST)

○ print TEST 'test';
0239デフォルトの名無しさんNGNG
>>232
それだけだったら、あんまり意味無いけど
否定条件で組み合わせると役に立つ
例えば、HTML読み込んで
<a HREF="〜">
の部分だけ取り出したいとき
(普通はまぁ リンク文字列 </a> も取り出すだろうけど)

/<a.*?>/ # ここで言明使っても良いけど

で出来るが、<a NAME="〜"> みたいに、NAMEを含んでいるタグは要らない場合

/<a(:?(!?NAME=".*?").)*?>/

ってやると
<a HREF="〜"> はマッチするが、<a NAME="〜"> はマッチしない。

寝惚け頭でかいてるが、何とか察してくれ
# ついでに↑の正規表現間違ってるような気がするから当てにしないでくれ
0240236NGNG
>>238
すいません、書き込みミスでした。
正しくしても、標準入力から読み込んでも空になります。
b.plは動きはするのですが。
activeperlではうまくパイプが働かないのでしょうかね。
0241デフォルトの名無しさんNGNG
>>239
>それだけだったら、あんまり意味無いけど
めっちゃ意味あるだろ・・・
0242239NGNG
>>241
(?:(?!foo).)*
すまん、正規表現あんまり詳しくないんでこれに驚くほどの意味は有ると思えん
それこそ !~ /foo/ でいいじゃねぇかと思う。

否定言明だけで意味ある例解説キボンヌ
0243デフォルトの名無しさんNGNG
-d スイッチのデバッガでステップ実行中に途中の行を無視して(その行は実行しない)
次の行へ移る、なんてことは無理?
0244デフォルトの名無しさんNGNG
>>242
おいおい、、(?:(?!foo).)* ≠ !~ /foo/ 全然違うYO
0245238NGNG
>>240

>正しくしても、標準入力から読み込んでも空になります。

ああ、そういうこと…。
Cygwin 環境下でちょっと試したが、確かにundefになるね。
最初はバッファフラッシュをやってないからだと思ったのだが

select( (select(TEST), $| = 1)[0] );

それとも少し違うようだし。
cat を対象コマンドにするとちゃんとパイプ内容が渡ってるのが確認できる。
#実際 fly.exe とか sendmail.exe がちゃんと動かせるんだし(^^;

そもそも素でSTDINから読めばコマンドライン入力待ちになるのだから、
パイプ先の b.plで <STDIN>がundefを受け取ってくるのが何故なんだろう。
#らくだ本に関連項目あった気がする。IPC::Open2 の出番かもしれない。

>>243

実行前にコメントアウトしとくのはだめなの?
ブレークポイントで任意の位置で中断することはできるけど、
リスタートはその位置か、ファイル先頭からしかできなかった記憶。
0246238NGNG
あー。これで逝けたYO!

open(TEST, "| perl b.pl"); # <== ちゃんとコマンド名で叩く
select( (select(TEST), $| = 1)[0] );
print TEST "test\n";
close(TEST);

きちんと perl.exe 経由で起動すればパイプ繋がるわ。
#! 行に頼るとダメっぽい…。
0247デフォルトの名無しさんNGNG
239はアフォだな・・・ってことは232もアフォなのね
0248243NGNG
>>245
なるほどコメントアウトするしかないですか。
わりと長めのトレースの途中でコメントアウトしなきゃいけない行に
気付いたときになんとか出来ないだろうかって思ったもので。
ありがとうございます。地道にやってみます。
0249デフォルトの名無しさんNGNG
はじめて質問します。
数値を出力する時に3桁毎に「,」をつけたくてC言語だと
setlocale(LC_ALL, "");
printf("%'d\n",123456789);
とすることで、「123,456,789」の出力結果が得られますが
perlだと
use POSIX "locale_h";
setlocale(LC_ALL, "");
printf "%'10d\n", 123456789);
としても、「'10d」としか表示されません。

何か方法は無いでしょうか。

0250デフォルトの名無しさんNGNG
>>244
>>247

>239でも>232でもないが

何となく全く同じではないというのは分かるんだが、
こんな時に使うという解説キボンヌ
0251デフォルトの名無しさんNGNG
>>249
どんな方法でも構わないのなら、
正規表現でも出来る。
0252251NGNG
やり方書いてなかった。
例えばこんなの

$_= 1234567890;
() while s/^(\d+)(\d\d\d)/$1,$2/;
print;


> 1,234,567,890
0253デフォルトの名無しさんNGNG
>>252
ピリオドが抜けてまっせ
0254デフォルトの名無しさんNGNG
>>253
しょーもない指摘するくらいなら自分で書け!

my $a = 1234567890.1234;
1 while $a =~ s/^([^\.\D]+)(\d{3})/\1,\2/;
print $a; # > 1,234,567,890.1234
0255デフォルトの名無しさんNGNG
>>254
何興奮してんの?
0256デフォルトの名無しさんNGNG
アフォが4人・・・っと
0257デフォルトの名無しさんNGNG
>>254 指摘されて逆上するのはみっともないな
0258デフォルトの名無しさんNGNG
>>254=252自作自演でつた。

・・・アフォだな。
0259デフォルトの名無しさんNGNG
253=255=256=257=258
0260デフォルトの名無しさんNGNG
必死だなw
0261デフォルトの名無しさんNGNG
まぁ、モチツケー

ところで、なんか面白そうなモジュール無いかい?
便利なのでもいいし、遊び甲斐があるのでも良いし
0262デフォルトの名無しさんNGNG
>>260
図星のときはヘタに言い返さないこと。さらに馬鹿に見えるよ(w
0263デフォルトの名無しさんNGNG
と言うことは図星なのかw
0264 ◆hMJAPH9PWA NGNG
これとか面白そう。遊びにしか使えないだろうけど。
http://search.cpan.org/author/SIMON/rubyisms-1.0/
0265デフォルトの名無しさんNGNG
>>259
それは間違ってる。>>257は俺だ。
0266251NGNG
254も俺じゃないんだが。

何故わざわざ変数名省略したのに戻す必要がある?


まぁいいや。
0267236NGNG
>>246
どうもわざわざ有難うございますた。
無事できました。
0268デフォルトの名無しさんNGNG
>229
ActivePerlのヘルプを見る。GUIしたければperl/Tk。他のWinアプリを制御したければ
Win32::OLE。

「perlの小技」でぐぐってみ。
0269デフォルトの名無しさんNGNG
>>249
すんません
むずかしすぎてわかりません

もうすこしwかりやすくおねがい
0270イヌNGNG
「何かキーが押されたら終了」ということがやりたいのですが、
getc()ではEnterを押さなくてはなりません。
どうすれば、ワンキーで終了できるのか、教えてくれだワン。

0271デフォルトの名無しさんNGNG
サブルーチンで読み込んだデータを配列に格納してメインに
戻しているのですが,値が入っていないようなんです.
サブルーチンの中でprintさせるとちゃんと値が入っているのですが。
どなたかご教授を。

@xx=&DatRead($setdir1,$file);
for $i ( 0 .. $#xx ) {
print "xx=\t [ @{$xx[$i]} ],\n";
}

sub DatRead{
local @xx;

open(list,"$fn")
while($line=<list>){
chomp($line); # 改行記号を削除
($dmy,@x)= split(/\s+/,$line); # 先頭にDMYを入れて読み込む
push @xx,[@x];
undef @x;
}

@xx;
close(list);
} # END OF SUB
0272bloomNGNG
http://www.agemasukudasai.com/bloom/
0273デフォルトの名無しさんNGNG
>>271
close(list);
@xx;
} # END OF SUB
0274249NGNG
>>250
>>251
>>253
ありがとうございます。返事遅れてすみません。
要するに、文字列置換する以外無いということですね。
perlのprintfって、sprintfを呼び出して更にC言語の
sprintf(3)を呼び出しているのかと思っていたのですが
違うようですね。(ソースは難解なので追いきれません)

それではC言語で以下のような場合は、perlだとどうすればいいのですか?
printf("%'015.3f\n", 1234567.89);
001,234,567,890

宜しく御願いします。
0275デフォルトの名無しさんNGNG
Perlでサーバーのロード状況が把握できれば、
すいているときに重い処理を許可するという分岐ができると思いますが、
ロード状況の把握方法の説明がある場所ってどこかありますか。
0276デフォルトの名無しさんNGNG
>>274
print f015_3(-1234567.89);

sub f015_3 {
 $_ = sprintf '%015.3f', shift;
 /^[-+]?\d\d\d\d+/g or return $_;
 for ($i = pos($_) - 3, $j = /^[-+]/; $i > $j; $i -= 3) {
  substr($_, $i, 0) = ',';
 }
 # s/\G([-+]?)0+,/$1/g;
 return $_;
}

# see also http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
0277デフォルトの名無しさんNGNG
>>275
$load = (split(" ",`w`))[適当]

くらいしか思いつかん。
モジュール探せばあるかも
0278271NGNG
>>273
レスが遅れましたが、ありがとうございます。
たった2行置き換えるだけで直るなんて.....。
(でもなんでだろう?)
0279デフォルトの名無しさんNGNG
>>278
<q cite="http://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html">
サブルーチンの戻り値は、
そのサブルーチンで最後に評価された式の値 です。
</q>
0280デフォルトの名無しさんNGNG
>>278
return (@xx);
で明示的に戻り値示せば混乱しなくなると思うよ
0281デフォルトの名無しさんNGNG
>>278
closeとかの関数も「値の評価」がされるんだよ。
0282271NGNG
>>279>>280>>281

重ね重ねありがとうございます。
サブルーチンで配列の受け渡しをすることに成功して
プログラムもすっきり作れるようになりました。
(いままではメインのなかに何個もループを作っていました)
100G以上のデータに処理を駆けて整形する作業をしているのですが
こういう知識は必須ですね。御陰で残業が減りそうです。
0283デフォルトの名無しさんNGNG
>>282
でかいデータなら、配列じゃなくて配列へのリファレンスを渡すが吉
0284デフォルトの名無しさんNGNG
上手く説明できないのですが、
sub _routine {
my $self = {
a = 'value1',
b = 'value2',
c = '',
d = 'value4',
};
return <<_EOF;
key1: $self->{a}
key2: $self->{b}
key3: $self->{c}
key4: $self->{d}
_EOF
}

こんな感じのサブルーチンがあったとします。
key3: $self->{c} の部分は空なので return の中に含ませたくないのです。

key1: value1
key2: value2
key3:
key4: value4

このように表示させるのではなく、

key1: value1
key2: value2
key4: value4

このようにしたいのですが、なにか良い方法はございませんでしょうか。
return の中で if 文とかが使えれば問題ないのですが..
0285デフォルトの名無しさんNGNG
>>284
文字列で返すんじゃなくてハッシュ使え
データがあるヤツだけ、return用のハッシュにコピーすれ
0286デフォルトの名無しさんNGNG
>>284
sub _routine {
 my $self = {
  a => 'value1',
  b => 'value2',
  c => '',
  d => 'value4',
 };
 my $rv = '';
 $rv .= "$_: $self->{$_}\n" for sort grep length $self->{$_}, keys %$self;
 return $rv;
}
print _routine();
0287デフォルトの名無しさんNGNG
< my $rv = '';
< $rv .= "$_: $self->{$_}\n" for sort grep length $self->{$_}, keys %$self;
< return $rv;

> return join '', map "$_: $self->{$_}\n", sort grep length $self->{$_}, keys %$self;
0288デフォルトの名無しさんNGNG
>>285
言葉足らずで申し訳ありません。>>286 氏のコードの通り、
print _routine();
として呼び出したいのです。

>>286
ありがとうございます。とてつもなく勉強になりました。大感謝です。

>>287
> return join '', map "$_: $self->{$_}\n", sort grep length $self->{$_}, keys %$self;
ぁぁ、、これですコレ、私の求めていたものは。
美しすぎて失禁しそうでつ。(嬉泣
0289デフォルトの名無しさんNGNG
Perlのモジュールについてもここでいいのでしょうか?
Win32:APIを使っているのですが、メモリハンドルが返り値としてある
APIをCallで呼び出すと一般保護違反で止まってしまいます。
ドキュメントには特に動くサンプルも、動かない旨も書いていないようです
もし知っている方いらっしゃったら教えてください
0290デフォルトの名無しさんNGNG
289です。
ハンドルの値は、Pにして $xx="\x0" x4;なんていう値を最初にいれておけば
動くようになりました。
でも、メモリハンドルの内容をどうやってPerlに渡したらいいのかわかりま
せん。RelMemoryCopyではないようだし…。

コールバックもこの調子なら動きそうなのですが、こちらももしご存知の方
いましたら教えてください。

0291デフォルトの名無しさんNGNG
回答らしきもの発見…。でもすまん、オレには理解できん。
http://www.perlmonks.org/index.pl?node_id=82429
0292デフォルトの名無しさんNGNG
>>291
ぜんぜんちがウ
0293デフォルトの名無しさんNGNG
>>290

$data=対象の配列;$len=適当な長さ; とした場合、
my $data2=unpack("L",$data);
$MLock = new Win32::API("kernel32","LocalLock", [N],N);
$MUnlk = new Win32::API("kernel32","LocalUnlock",[N],N);
$MFree = new Win32::API("kernel32","LocalFree",[N],N);
$Mcpy = new Win32::API("kernel32","RtlMoveMemory", [P,N,N]);
$dataout= $MLock->Call($data2);
$Mcpy->Call($output,$data2,$len);
$MUnlk->Call($data2);$MFree->Call($data2);
で$outputに入る

コードの方はやってみたことないから、わからない。すまそ。

0294デフォルトの名無しさんNGNG
あるディレクトリの中をグロブしようと思い、

my $files = [<$hoge->{DIRNAME}/*>];

とかしてみたのですが、サックリとエラーになります。
これってなにか良い方法は無いモノでしょうか。

と、これを書いている最中に思い出しましたが
glob() なんてモンがあったようななかったような。。。
0295294NGNG
スレ汚し失礼致しました。
自己解決しましたので、一応ご報告を。

my $files = [glob("$hoge->{DIRNAME}/*")];
0296デフォルトの名無しさんNGNG
$dirname = "c:\Program Files";
opendir($dirname);

みたく、スペースのあるディレクトリを認識したいのですが
$dirname = "\"c:\Program Files\"";
opendir($dirname);

等やてみてもだめぽです、perlではスペースのあるディクトリ名
は使えない罠でしょうか?
0297デフォルトの名無しさんNGNG
>296
シングルクヲートでいけるんじゃない?
0298デフォルトの名無しさんNGNG
>>296
$dirname = "c:\Program Files";
opendir(DIR, $dirname);


readdir(DIR);
......

スペースのせいでだめぽではない罠。
0299デフォルトの名無しさんNGNG
>>296
for ('C:\Program Files', "C:/Program Files/", "C:\\PROGRA~1\\") {
 opendir DIR, $_ or die;
 $num = @files = readdir DIR;
 print "$num\n";
 closedir DIR;
}
print 'successed.';
0300デフォルトの名無しさんNGNG
>>296
"c:\\Program Files";
---^^---
0301298NGNG
>298でもたまたまいけるのは\PがPと解釈されるからで
普通は>300のようにすべき
0302デフォルトの名無しさんNGNG
ここ( ttp://www.area-s.com/ )で配布されている、
NarrationBBSというのがものすごく気に入って自分のサイトに
設置しようと思い、CGIについて理解しようとネットを駆け巡り
5時間が過ぎました。CGIについては全くの初心者ですが、
一通りの設置の流れや、やらなければならないことは理解した
つもりです。で、いまだにCGIをちゃんと使えるようになって
いないのですが、どなたか助けていただけませんでしょうか。

現在の進行状態としては、プロバイダー(地域のCATVでCGI利用可確認済み)確認、
目的のCGIのダウンロード、プロバイダーに指定された内容の「.htaccess.txt」
ファイルの転送、パスの変更後CGIファイルの転送とパーミッションの設定、
ホームページのトップからCGIへのリンクを作成。

と、こんな感じなんですが、リンクをクリックすると、ダウンロードしますか?の
確認メッセージがでてきてしまい、CGIを動作させられません。
0303302NGNG
プロバイダーのCGIに関する説明は極めて少なく、以下のとおりです。
他に何か必要な情報がありましたら指摘お願いします。あと、質問なのですが
以下のプロバからの注意事項に書いてある、転送するときのパーミッションを
644にしろというのは、.htaccess.txtファイルのパーミッションを変更しろと
いうことでいいのでしょうか?.cgiや.datファイルのパーミッションは、配布元の
設置の説明に書いてあったものにしたのですが。

【CGIプログラムの利用にあたって】

CGIファイルの拡張子は「.cgi」として下さい。
まず、弊社がご提供している「public_html」ディレクトリの中に「.htaccess」と
いう名前のテキストファイルを転送する必要があります。
※Windowsをお使いの方の場合、OSの制限により「ピリオド(.)」で始まるファイル名を
付けられないため、仮に適当な名前を付けてファイル転送し、転送先のファイルの名前を
「.htaccess」に変更して下さい。

テキストファイルの内容は以下のように記述して下さい。
# .htaccess
AddHandler cgi-script .cgi

転送するときにパーミッションを「644」にして下さい。
0304デフォルトの名無しさんNGNG
>>302-303
サーバ上のお望みの場所で .htaccess という名前のファイルが
パーミッション 644 で存在していれば OK.

以降は
http://pc2.2ch.net/test/read.cgi/php/1041530204/
に振って。
0305302NGNG
朝早くからありがとうございました。そちらの板で聞いてみます。
0306デフォルトの名無しさんNGNG
>>303
Windows userか?標準添付されているftp.exeでプロバイダの
自分のディレクトリにアクセスしてchmodでファイルの
パーミッションを644に変えればいい。


というのは、ちょっとかったるい。
0307デフォルトの名無しさんNGNG
win user です。ホームページビルダー使ってます。ftpはビルダーに
ついているFTPソフトを使っています。転送形態もちゃんとテキストモードに
なっていることを確認しました。パーミッションの変え方はFTPソフト上で
右クリでファイル指定してかえるだけなので簡単なんです。

・・・で、なんでリンクをはるとDLされるようになってしまうんだろう。
しかも「開く」選択してみたら、cgiファイルの内容が丸見え。どうすれば・・・
0308デフォルトの名無しさんNGNG
スクリプトファイルに実行属性はついていますか?
0309デフォルトの名無しさんNGNG
>>306 >>308
>>304が誘導してるのになんであんたらレスをつける?
0310デフォルトの名無しさんNGNG
心の狭い香具師だな。畳の上で死ねないよ
0311デフォルトの名無しさんNGNG
願い下げだ。
0312デフォルトの名無しさんNGNG
>>309
ML で顕著だが、答えが簡単な質問には回答者がうようよと涌く。
0313302NGNG
すみません、302ですが、誘導先のスレでどなたか回答願えませんでしょうか?
0314デフォルトの名無しさん NGNG
>>313
311 :デフォルトの名無しさん :03/02/03 12:36
願い下げだ。
0315デフォルトの名無しさんNGNG
質問なのですが、abcと3つの項目がありそれぞれの組み合わせ
a-b a-c b-c
と表示させるにはどうすればよいでしょうか?
@abc配列にいれて、
@abc[i]-@abc[i-1]
とループさせるとa-b b-c となってa-cができません
うまく表現できないのですが、どうかお願いします
0316デフォルトの名無しさんNGNG
>>315
こんなんでどうですかね。
@abc = ('a', 'b', 'c');

foreach $i (0 .. ($#abc-1)) {
foreach $j (1 .. $#abc) {
print "$abc[$i]-$abc[$j]\n" unless ($i eq $j);
}
}

>>309-314
邪魔です。こういうスレには質問と回答以外無用に願います。
0317デフォルトの名無しさんNGNG
>>316
4つの時ちゃんと動かないよ

foreach $i (0 .. ($#abc-1)) {
 foreach $j (1 .. $#abc) {
  print "$abc[$i]-$abc[$j]\n" unless ($i >= $j);
 }
}
0318デフォルトの名無しさんNGNG
普通$j = $i+1じゃない?
@abc = qw(a b c d e);
for $i (0 .. $#abc-1) {
for $j ($i+1 .. $#abc) {
print "$abc[$i]-$abc[$j]\n";
}
}
0319デフォルトの名無しさんNGNG
316は
>309-314
邪魔です。こういうスレには質問と回答以外無用に願います。

だけが言いたかったんだろ。コードは付け足し

要するにバッカァ?

my @abc = ('a', 'b', 'c', 'd', 'e');
for my $i (0 .. $#abc-1) {
for my $j ($i+1 .. $#abc) {
print "$abc[$i]-$abc[$j]\n" ;
}
}

0320デフォルトの名無しさんNGNG
一発で答え出るより、2,3ステップでコード改良される方が良いな
見てて面白い
0321デフォルトの名無しさんNGNG
こういう文字列
$str = "1#a2#BC10#0123456789"
を ("a", "BC", "0123456789")
というふうに(長さ0 . '#' . 文字列0 . 長さ1 . # ...)配列にたたきこみたい
のですが、
/^(\d)\1$/ が二つの同じ数値から成る行にマッチすることから類推して

$str =~ s/^(\d+)#(.{\1})//;

としてみたのですが、$2は切り出したい文字列にマッチしてくれません。
今はsubstr()でやっていますが、そうするしかないのでしょうか。
0322デフォルトの名無しさんNGNG
確かに316はDQNだ。数値をeqで比較している。
だが319は318を写してるだけだし、インデントもできないDQN。
DQN同士でどんぐりの背比べ。

おっと、また316に怒られちまうぜ (藁)
0323デフォルトの名無しさんNGNG
インデントって、全角空白のことを言ってるのか…?
0324デフォルトの名無しさんNGNG
>>321
$_ = my $str = '1#a2#BC10#0123456789';
my @str = ();
s/^(.{$1})//, push @str, $1 while s/^(\d+)#//;
print "$str => (@str)";

データ構造が糞だとコードも糞にならざるを得ない好例か。
0325デフォルトの名無しさんNGNG
>>315
a-b と b-a を同一視するなら
my(@item, $item, @pear) = qw(a b c d e);
push @pear, map "${item}-$_", @item while $item = shift @item;
print join "\n", @pear;
0326デフォルトの名無しさんNGNG
>>324
> データ構造が糞だとコードも糞にならざるを得ない

あんた良い事言うな
いつか使わせてもらうよ
0327デフォルトの名無しさんNGNG
>>315
外部モジュールOKならば、(冗長過ぎるけど)こんなふうに
すれば、さらに汎用性が得られるよ。

use Algorithm::Permute; # CPANからDL

my(@abc) = qw(a b c);

my $p = new Algorithm::Permute([@abc]);

my %some_hash;
while (my(@res) = $p->next) {
$some_hash{join('-', @res[0..1])}++;
# a-b/b-aを同じに扱う場合はsortしてしまう
#$some_hash{join('-', sort @res[0..1])}++;
}

print key %some_hash, "\n";

0328327NGNG
>>327
自己レス。
> print key %some_hash, "\n";
「keys」が正解だね。あと、print出力の見た目も悪いな。
0329デフォルトの名無しさんNGNG
perlでhttpGETでファイルをDLしているときに
DL速度を制限するにはどうすればいいんでしょう?

0330315NGNG
お返事遅れましたが、ありがとうございました。
まだperl始めたばかりですが、これを参考に精進いたします。
0331デフォルトの名無しさんNGNG
よつかった、四つ勝った。でも、それでも、良い子は
316=322のアホウの真似はしちゃあ、いけないよ。
0332327NGNG
>>329
実験しておらず、かなり不安なんですが。

まず、TCPクライアントとして実装、TCPウィンドウ・サイズを
小さく設定する。

$win_size = 1024; # or some values
setsockopt(SOCK,SO_SOCKET,SO_RCVBUF,pack("I",$win_size));

そして、SOCKETハンドルの読み込みループ内で、あえて
sleepしてしまう。
(でも、ここでウィンドウ・サイズが動的に変動してくれるかな…)

while(<SOCKET>) {
 sleep(1) if $some_condition;
}

もっときれいな方法あるかな?>ALL
0333322NGNG
>>331
316と一緒にしないでくれ。
その恥ずかしい文章もなんとかしてくれ。
0334デフォルトの名無しさんNGNG
>>321
長さが決まってるならsubstr()よりもunpack()の方が速い(と思う)。
my $str = '1#a2#BC10#0123456789';
my $buf;
my @str = ();

while ($str =~ s/^(\d+)#//){
($buf, $str) = unpack("A$1 A*", $str);
push(@str, $buf);
}
print "@str";

でも>>324の言うとおりデータ構造は悪いと思う・・・
0335327NGNG
>>321
> $str = "1#a2#BC10#0123456789"
10年以上前に設計された基幹システムとの
インターフェース開発を、
今回、321さんが任されてるのかな。
こういうデータ構造を見ると、
そんな気がします…
0336デフォルトの名無しさんNGNG
>>321

大きなファイルを GET するのか、大量のファイルを GET するかにもよるけど、
その方法でOKだと思う。ただ、ウィンドウサイズをいじる必要があるような
場合には、別の方法(QoS API とか dummynet とか)を使う方がいい。ウィンド
ウサイズを直にいじっても、うまく帯域を制御するのは難しいから。

基本的にはこんな感じ。(Time::HiRes はインストールしてあると仮定。)
ウィンドウサイズをいじるのなら、コメント部を外す。

#require 'sys/types.ph';
#require 'sys/socket.ph';
use Time::HiRes usleep;
use IO::Socket;

$s = IO::Socket::INET->new(PeerAddr=>"some.host.com",
  PeerPort=>"80",
  Proto=>"tcp");
die $@ if !defined($s);
$s->print("GET / HTTP/1.0\r\n\r\n");
#$s->sockopt(&SO_RCVBUF,8192);
while ($s->read($line, 8192) > 0) {
 print $line;
 usleep(100*1000);
}
$s->close();
0337336NGNG
すみません、336 の >>321 は >>332 の間違いです。
0338336NGNG
で、今度は質問なんですが、perl-5.8.0 で

 perl -e 'use encoding "iso-2022-jp"; scalar(<>);'

とやるとセグメントエラーもしくはバスエラーが発生する(FreeBSD と Linux
で確認)理由が分かる人居ますか?バックトレースを取ると
Perl_sv_recode_to_utf8() で無限再帰しているらしいんですが。

あと、perl-5.8.0 で入力エンコーディングの自動判別をする方法はありますか?
0339327NGNG
>>336
補足ありがとう。

>>338
> あと、perl-5.8.0 で入力エンコーディングの自動判別をする方法
Encode::Guessモジュールはどうかな?
あくまで「判別」までしかできないようだけど。

use Encode::Guess;
my $enc = guess_encoding($data, qw/euc-jp shiftjis 7bit-jis/);
ref($enc) or die "Can't guess: $enc"; # trap error this way
print $enc->name, "\n";


0340327NGNG
>>338
>>339
自己レスです。
もし、変換まで必要ならば、Encodeモジュールのfrom_to()を
組み合せるといいね。


0341nobodyさんNGNG
>>336
>while ($s->read($line, 8192) > 0) {
これだと相手が細切れに送ってくる場合、抜ける可能性あり。

>>338
>perl -e 'use encoding "iso-2022-jp"; scalar(<>);'
Jcode MLで聞いた方が早い。

0342336NGNG
>>339

ありがとう。それが欲しかったんです。
# perljp, Encode, Encode::JP あたりのドキュメントに書いておいて欲しかった。。

>>341

ええっ。IO::Socket の read は fread() による実装なので

> while ($s->read($line, 8192) > 0) {

これで問題ないと思っていたのですが、抜けが出ますでしょうか。これまでに
上の実装で何GBも転送してきて、特に問題が起きたことは無かったのですが…。
0343デフォルトの名無しさんNGNG
\@って何でしょう?
@はわかるんですけど
0344デフォルトの名無しさんNGNG
>>343
配列へのリファレンス

man perlref あたりを参考に
0345341NGNG
>>342
スマソ、HTTP/1.0なら問題はない。
HTTP/1.1では抜けが起こる。RFC2616
0346336NGNG
>>345

えーと、まだちょっとよく分からないのですが、HTTP/1.1 の Persistent
Connection まわりの話でしょうか? 確かに HTTP/1.1 の場合は

  Connection: close

ヘッダを送らないとまずいと思います。(もっとも、Connection ヘッダを入れ
なくてもサーバのタイムアウト後 fread() が最後の断片を返すので、抜けは
まず発生しないと思いますが。)
0347デフォルトの名無しさんNGNG
>>346
RFC 2616
3.6.1 Chunked Transfer Coding
> All HTTP/1.1 applications MUST be able to receive and decode the
> "chunked" transfer-coding, and MUST ignore chunk-extension extensions
> they do not understand.
0348336NGNG
>>347

ありがとう。「MUST」とは知りませんでした。
0349デフォルトの名無しさんNGNG
BerkeleyDBモジュールをばりばり使っているサンプル
ってなにかありませんか?
0350デフォルトの名無しさんNGNG
HTML::Parserで<title>〜</title>の中のテキストを
取り出すのにスマートなやり方ありませんか?
0351350NGNG
$html=~m{<title>(.*?)</title>}i
みたいに正規表現の方が簡単なんだけど、
今回はHTML::Parserでやる方法が知りたいです。



0352デフォルトの名無しさんNGNG
perl でマルチスレッドなプログラミングは出来ますか?

たとえば、ファイルを読みながら入力を待つような感じのやつを
0353デフォルトの名無しさんNGNG
use HTML::TreeBuilder;
my $tree = HTML::TreeBuilder->new();
$tree->parse_file('a.html');
my $title = ($tree->find_by_tag_name('title'))[0]->as_text;
0354327NGNG
>>350
use HTML::TokeParser;
$p = HTML::TokeParser->new(shift||"index.html");
if ($p->get_tag("title")) {
 my $title = $p->get_trimmed_text;
 print "Title: $title\n";
}
0355327NGNG
>>349
man BerkeleyDB ?
0356デフォルトの名無しさんNGNG
>>355
あまりよく知らないんだったら、黙っている方がマシだと思う。
0357デフォルトの名無しさんNGNG
一つしかマッチするのがないと判っている場合でも
grepを使う時は @temp と配列に格納しないといけないのでしょうか

引っ張り出したデータを続けて処理する時に
if(@temp[0] =
としているのですが、なんとなく不格好な気がして…
0358デフォルトの名無しさんNGNG
>>357
@temp[0] なんて書き方じゃ動かんと思うぞ、ついでに ==じゃないのかね

それは良いとして
$temp = $temp[0]; とか
$temp = (grep 〜〜〜)[0];
ではダメかい?
0359デフォルトの名無しさんNGNG
>358
ありゃ、@temp[ ]ってダメなんですねΣ(゚д゚;)
普通に動いてた(なぜだっ)ので全然気づかなかったです
全部書き直さないと…あちゃぱー

>$temp = (grep 〜〜〜)[0];
これを使わせていただきます(ー人ー)
0360デフォルトの名無しさんNGNG
>>359

@temp[...] は「スライス」という奴で、配列の一部を返します。
基本的に、@temp[0] と $temp[0] は同じ物を表します。
(後者の方が速いけど。)
たとえば、以下のような場合には違いが生じてきます。

@temp[3,4,5] => ($temp[3], $temp[4], $temp[5])
$temp[3,4,5] => $temp[5]
0361359NGNG
スマソ、@と$の単純な書き間違いだと思って突っ込んだんだが
スライスと解釈されて動いちゃうのね

0362デフォルトの名無しさんNGNG
>>361
あれほど魔法的動作が多いperlに関して、ためしもせずに思い込みだけで
難癖つけるほど頭が固くエゴ剥き出しの心を持つ359は、perlはやめたほうが
いいと思う。
0363デフォルトの名無しさんNGNG
>359は>357なのでして…いや、どうでもいいんですが。
もっとどうでもいいことに、=>208だったりもするのです。
0364327NGNG
>>349
>>356
「man BerkeleyDB とすれば、例文たくさん載ってるけど、
これだけでは不足かな?」と言おうとしました。
表現がなってなかったね、ごめんね。
0365321NGNG
>>324 >>334
ありがとうございます、参考になりますた。
>>335
これ、CVSupのcheckoutsファイルの一部なんですよ。
CVSのメタファイルをcheckoutsファイルから掘り出すスクリプトを
組んでいたんです。
0366デフォルトの名無しさんNGNG
webprogのスレに出て短だけど、変数宣言って続けて書く時は()でくくらないと
有効にならないって本と?
0367デフォルトの名無しさんNGNG
Perlに変数宣言はありません。
0368デフォルトの名無しさんNGNG
>>364
あまりよく知らないんだったら、黙っているのが良いと思う。
0369デフォルトの名無しさんNGNG
>>366
my $a,$b
だと$aだけがmyになるから
my ($a,$b)
としろってことかな。
0370デフォルトの名無しさんNGNG
>>366
$a = 1;
&f;
print $a;

sub f() {
  my ($hoge, $a);
  $a = 2;
}

これだと1がでる。
my の後の括弧を外すと2が出る
0371デフォルトの名無しさんNGNG
マルチスレッドできないの?パールって?

ダメジャン。うんこすぎ。
0372デフォルトの名無しさんNGNG
>>371=うんこ
0373デフォルトの名無しさんNGNG
>>371
Thread.pm使えば?
0374デフォルトの名無しさんNGNG
放って置けよ
0375デフォルトの名無しさんNGNG
自分のWebフォルダに無いPerlプログラムを別のところから利用するには
どうしたらいいですか?
色々試してみたんですがやりかたがわかりません。
例えば↓のチャットを自分独自の自動更新チャットを
作るにはどうしたらいいですか?
http://www.tcup6.com/cgi-localbin/chat8.cgi
0376375NGNG
日本語変だったので書き直しです。
例えば↓のチャットを、自分独自の
自動更新チャットに作りかえるにはどうしたらいいですか?
http://www.tcup6.com/cgi-localbin/chat8.cgi

(別のところからログファイルだけ更新できるようなイメージ)
0377デフォルトの名無しさんNGNG
ソースを見付けて来て改造する
0378デフォルトの名無しさんNGNG
cgiとして使用するとしてソースサイズとサーバの
負荷に因果関係はありますでしょうか?
たとえば入出力を同程度とし、20Kのソースと
200Kのソースではかなりの違いがあるのでしょうか?
0379デフォルトの名無しさんNGNG
でかいソースの方がロードに時間はかかるな。若干。
一番サーバに負荷をかけるコードを教えてやろうか?

#!/usr/bin/perl
0 while 1;
0380デフォルトの名無しさんNGNG
すいません、アホな質問かも知れないですが
<img src="〜"> や <body background="〜">のようなHTMLタグの
img や body を大文字に直す正規表現を書きたいのですが、

tr/<[a-z]+?\s/<[A-Z]+?\s/i;

このように書いてみたのですがうまくいきません。
どの辺りが間違っているのか教えて頂けないでしょうか?
0381デフォルトの名無しさんNGNG
1 trが正規表現を受け付けると思っているところ
2 置換文字列にも正規表現を使うと思っているところ
0382デフォルトの名無しさんNGNG
調べもせずに2chで聞けばいいと思っているところ

s/<[A-Z]+/lc($&)/egi;
0383デフォルトの名無しさんNGNG
s/(<\w+)/\U\1/g;
0384デフォルトの名無しさんNGNG
4.タグを大文字に直そうとしているところ
5.目的は知らんがCGI板向けの香りがする事
0385デフォルトの名無しさんNGNG
>>375-383
CGIだけど、なんか質問ある? Part 9
http://pc2.2ch.net/test/read.cgi/php/1041530204/l50

へ行ってくれ。
0386デフォルトの名無しさんNGNG
あらゆる意味で阿保だな
0387デフォルトの名無しさんNGNG
ファイルを拡張子で判断したいとき

$kakuchousi = `zip|bin|jpg|exe`;

$filename ~= /^[a-zA-Z0-9_-]+\.($kakuchousi)$/

とやるしかないのでしょうか?

$kakuchousi変数を配列にしたいのですが。
@kakuchousi = ('zip', 'bin', .... )としたほうが他にもつかえそうだし。

0388デフォルトの名無しさんNGNG
拡張子を切り出してから調べれば?
0389デフォルトの名無しさんNGNG
>>387
なにをしたいのかくらい書けば?
0390デフォルトの名無しさんNGNG
>>387
File::Basename モジュールを使ってみたらどうだい
0391デフォルトの名無しさんNGNG
うpろだでも作るのかな
0392ぼるじょあ ◆ySd1dMH5Gk NGNG
すみません。超初心者なんですが宿題の課題で
read(STDIN, $str,$ENV{"CONTENT_LENGTH"});
という行の意味が知りたいんですが。特にCONTENT_LENGTH
の部分の役割を教えていただけませんでしょうか。
あつかましいのですが宜しくお願いします。
0393ぼるじょあ ◆ySd1dMH5Gk NGNG
と・・CGIについてだったんですが
ぐぐったらありました。すみませんでした。
0394デフォルトの名無しさんNGNG
>>392
CONTENT_LENGTHはデータの長さですよ
0395ぼるじょあ ◆ySd1dMH5Gk NGNG
>>394  
有難うございます。
0396デフォルトの名無しさんNGNG
>>394
HTTP BODYな。
0397デフォルトの名無しさん NGNG
1行が200KB以上の場合、どのように処理すればいいのでしょうか?
while (<IN>)ってやると、データがでかいって文句を言われてしまいます。
0398160NGNG
read(FILEHANDLE,SCALAR,LENGTH,OFFSET) を使うといいんでない?
データがでかいって文句言われることってあるんですね。
$buf = <IN>
とかで、まとめて読んでもいいのでは?
0399398NGNG
↑160というのは、うそです。クッキー君でした。ごめんなさい。
0400デフォルトの名無しさん NGNG
>>398
ありがとうございます。readでできました。
ところで、このreadのLENGTHってどれぐらいまで大きくできるんでしょう?
環境に依存するのかな?
0401デフォルトの名無しさんNGNG
自分で調べてここに報告汁
0402デフォルトの名無しさんNGNG
ええと、Perlからwindowsのパス付きの共有フォルダにアクセスしたいんですが、、、
パス付きでも、実行マシンから既にアクセスしていたり(パスワードを入力済み)
実行マシンと同じID/PASSだったりすると特別めんどくさいことはないんでsuga
open FILE,"\\IPアドレスとかマシン名\xxxxx";
で開けますよね。
ただ、上記の条件をみたなさな、単純にパスワードが付いてるマシンの共有フォルダに
アクセスする場合、スクリプト側では、ID/PASSはもちろんしってるんですが
どうすれば開けるんでしょうか?
0403402NGNG
補足ですが、、、条件がちょっとあります。
まず考えついた方法として
「ネットワークドライブに割り当てる」
って方法がありますよね。
これだと、異なるユーザーでアクセスって設定がありますし。
ただ、これだとアクセス先がHDDとか無視してもドライブレターがA-Zのの26個が限界ですから
却下です。

あと、クライアント側のPCはwindowsです。
Linux系にしてsmbmountでマウントする〜
ってのも却下です。。。

わがままですいませんが、なにかID、パスワードを指定してファイルにアクセスするような
モジュールがあるんじゃないかと夢想してます。。。
ないですかねぇ、、、CPAN探ってみたんですが、みつけられませんでした
0404デフォルトの名無しさんNGNG
>>402
お前、

「ネットワークドライブ上のあるパスを開きたいんですがパスがかかってて開けません。
どうやったらこのパスのパスを入力してそのパスを開けるのでしょうか?」

とか言う文章書けるだろ。
0405402NGNG
>>404
すいませんー。。。
PATHとPASSで区別すればよかったですね。。。
0406デフォルトの名無しさんNGNG
ドライブ名割り当てないで net use \\host\share /persistent:yes しときゃ
いいんでないの?
0407402NGNG
Win32::NetResource
でとりあえず解決しそうです。。。
ありがとう御座いました
0408デフォルトの名無しさんNGNG
>136 :134 :03/02/14 19:54 ID:aS0shCzv
>>>135
>そのヒントから
>Win32::NetResource
>にたどりつきました。。。ありがとうございます。

一言逝って置く、もうくんな
0409デフォルトの名無しさんNGNG
LWPモジュールで以下のようにHTTPをリクエストしているのですが、
MIMEとかのヘッダー情報を知る方法ってあります?

#HTTPリクエスト
$ua=new LWP::UserAgent;
$ua->agent($user_agent);
$ua->timeout($timeout);
$req=new HTTP::Request('GET',$url);
$res=$ua->request($req);

if($res->is_error)
{
print("エラー\n");
exit;
}
0410デフォルトの名無しさんNGNG
HTTPレスポンスのヘッダ(というか全文)なら
$res->as_string

特定のヘッダなら
$res->header("Content-Type")
0411デフォルトの名無しさんNGNG
kimura君、マルチポストはご法度だぜ
0412デフォルトの名無しさんNGNG
rubyから乗り換えようかと真剣に考えてる。
オブジェクト指向というのは、古くからのブログラマには正直つらい

みんなどう?
0413デフォルトの名無しさんNGNG
それと、1つ聞きたいんだが、perlは次々と機能を拡張して来てるみたいだけど、
本当のコアとなる基礎の部分というのはあるんだろうか?

つまり、方言(あるのか?)やらバージョンの違いを越えてどこでも安心してつ
かえる部分という意味である。

例えば、シェルスクリプトなら/bin/shみたいなイメージだ
0414 ◆hMJAPH9PWA NGNG
んん、Rubyからの乗り換え?それは珍しい。逆ならよく聞くけど。
私的にはRubyの「なんでもオブジェクト」ってのは便利だと思う。
でもライブラリの数はPerlが圧倒してるから、
Perlの方がすぐに色々なことができるってのはあるかもね。
0415デフォルトの名無しさんNGNG
>412
Rubyはどうだかしらんが、
Perlの場合「やり方は何通りもある」なので、それに納得できるかどうか。
時々正解が複数あることにガマンできない人がいるんだよねー。
0416 ◆hMJAPH9PWA NGNG
>>413
今広く使われていると思われる1999年リリースのv5.005_03を基本に考えれば
最新版でも問題なく動くはずだよ。

方言は…そうだなぁ、コンパイル時のオプションでスレッドがあったりなかったり、
Unix用の関数はWindowsのPerlでは動かない物も多かったりするので、注意が必要かも。
あと日本語の扱いがオリジナルPerlとJperlでは異なるのがやや問題かなぁ。

でもまぁ演算子の優先順位や数値リテラルの書式がコロコロ変わったりはしないから、
その点Rubyよりは安定してるといえると思う。
0417デフォルトの名無しさんNGNG
コーディングポリシーを決めるコストってあるじゃない。
先にCをやってたからいつもC風に書いてるけど。
0418デフォルトの名無しさんNGNG
>>416
演算子の優先順位なんて変わったっけ?
0419デフォルトの名無しさんNGNG
>>417
perltidyなんてのがあるよ
http://perltidy.sourceforge.net/

0420409NGNG
>>411
はい?kimuraって誰?
0421409NGNG
>>410
$res->header("Content-Type")
でできました。
ありがとうございました。
0422デフォルトの名無しさんNGNG
>>417
俺もC風に書くことを心がけてる。
例えば・・・

print "あいうえお";
ではなく

print("あいうえお");
と書くようにしたり。
0423デフォルトの名無しさんNGNG
>>412
> rubyから乗り換えようかと真剣に考えてる。
> オブジェクト指向というのは、古くからのブログラマには正直つらい

自分も古株のつもりだけど、オブジェクト指向が無いと逆につらい。
Perl で 1000 行を超えるようなスクリプトを書く場合、データ構造
とそのデータへのアクセサの定義にいつも苦労する。(あなたとは逆
で、そろそろ ruby も使うかなと考えていたり。)

>>413

Perl はバージョン 4 から 5 に変わる時に大きな変化があったけど、
その後は大体上位互換な形で開発さている。現在、Unix 上で バージョ
ン 5.005_03, 5.6.1, 5.8.0, Windows 上で 5.6.1 を同時に使ってい
るけれど、特に違いを意識せずに使える。(5.8.0 の Unicode 対応機
能を使うと 5.6.1 等で動かなくなるといったことはあるが、逆はない。)

>>417

どちらかというと、他人のソースを読む時の方が苦労するような。
0424デフォルトの名無しさんNGNG
>>409
>>420
http://www.freeml.com/message/[email protected]/0004184;jsessionid=a2c6c0oz01
0425デフォルトの名無しさんNGNG
>>423
5.6から5.8に移行したときunicodeがらみの処理の変更でひどい目にあったけどなあ。
0426デフォルトの名無しさんNGNG
>>425
例えば?
0427 ◆hMJAPH9PWA NGNG
>>418
Ruby1.7からリテラルに対する単項マイナス演算子の扱いが変わって、
例えば「-2**2」という式は1.6と1.7じゃ結果が違うらしい。
まぁ、些細なことだけどね。
0428デフォルトの名無しさんNGNG
>>427
ああ、最近元に戻った奴だな。
0429 ◆hMJAPH9PWA NGNG
>>427
あれま。そうだったのか(笑

0430423NGNG
>>425

5.6 の Unicode 処理機能を使おうとは思わなかった。
5.8 でもまだちょっとおかしなところがある。
日本語・Unicode 関連は Jcode.pm 中心にまったりとやってます。
0431デフォルトの名無しさんNGNG
>>411
>>424
あーお前が噂のネットストーカーか。
(いろんな意味で)小さいな。
0432デフォルトの名無しさんNGNG
> 431=409=kimura
あっちでもレス付いてるぞ。お礼しなくていいのか?(藁
0433rubyNGNG
rubyからの乗り換えについて、

いろいろとご回答くださり感謝します.
perlは全然さわったことがなかったのですが、
perlの非オブジェクト部分に限定するような感じで
使いはじめてみたいと思います.

ありがとうございました.
0434デフォルトの名無しさんNGNG
kimura必死だな
0435デフォルトの名無しさんNGNG
kimura、まだあっちでレスして呉れた方にお礼しないのか?
(いろんな意味で)小さいな。
0436デフォルトの名無しさんNGNG
すまんが、このスレしか見てない俺には関係無い事だ
kimuraとやらと一緒に余所行っちゃくれんかね?
0437デフォルトの名無しさんNGNG
>>436=kimura
0438デフォルトの名無しさんNGNG
>>437
さっさとうせろ。ゴミ野郎。
0439デフォルトの名無しさんNGNG
初心者です。助けてください
ある文字列に対して
半角の数字(10〜149)が出てきたらそれに対応した全角1文字の外字に変換したいのですが。
・上記以外の数字(1ケタや4ケタ以上)は全角に変換。
・数字以外の記号も全角に変換。
・入ってくる文字列はsjis
こんなの考えました。(動作確認済)
しかし上司に「ハッシュは遅いから他の方法にしろ。外字の文字コードは順番に並んでるんだから…」と言われました…
どうやって良いか全然分かりません。ヒントだけでもお願いします。
0440439NGNG
続きです。

my %henkan = (
'1' => "\x82\x4f",
:
#1から9までは全角文字への変換
'10' => "\xf4\x59",
'11' => "\xf4\x5A",
:
'149' => "\xf4\xE5",
);

my $str = "半角の数字を含んでいるかもしれない文字列";
$string =~ s/(\D|^)(\d{1})(\D|$)/$1$henkan{$2}$3/sg;
$string = Jcode->new($string,'sjis')->tr($from1,$to1)->h2z->sjis;
while ( $string =~ /(\D|^)(\d{3,})(\D|$)/sg ) {
if ( $2 > 149 ){
my $temp = Jcode->new($2,'sjis')->tr($from2,$to2)->h2z->sjis;
$string =~ s/(\D|^)(\d{3,})(\D|$)/$1$temp$3/sg;
}
else {
$string =~ s/(\D|^)(\d{3})(\D|$)/$1$henkan{$2}$3/sg;
}
}
$string =~ s/(\D|^)(\d{2,3})(\D|$)/$1$henkan{$2}$3/sg;
print $string;

※from1は半角記号(数字以外全て)、to1は全角記号(数字以外全て)
※from2は半角数字、to2は全角数字
0441デフォルトの名無しさんNGNG
>>439
正直、引き算と足し算だと思うんですが。
0442439NGNG
>>441
その具体的やり方ってラクダ本見ても良くわからないのですが…

"\xf4\x59"
の文字を
"\xf4\x5A"
にするにはどういう計算をすればよいのですか?

my $a = "\xf4\x59" + "\x01";

ではエラーになりました。。。(ノД‘)
0443デフォルトの名無しさんNGNG
>>439
my @henkan = map { "\x82" . chr } 79..88;
push @henkan, map { "\xf4" . chr } 89..229;
my $i = 0;
my %henkan = map { $i++, $_ } @henkan;

my $str = "半角の数字を含んでいるかもしれない文字列";

# 配列で変換
$str =~ s/(?<!\d)(\d+)(?!\d)/$henkan[$1]/gs;

# ハッシュで変換
$str =~ s/(?<!\d)(\d+)(?!\d)/$henkan{$1}/gs;

どの程度差があるかベンチマークとってみれ。
0444デフォルトの名無しさんNGNG
>>439
へたに関数使うよりハッシュの方が速いことが多い。
0445デフォルトの名無しさんNGNG
>>439

  pack("n", unpack("n", "\xf4\x59")+1) -> "\xf4\x5a"

ちなみに、ハッシュは理論的に言えば非常に速いし、perl のハッシュ実装も
決して遅くない。君の上司が何かを誤解しているか、君と上司の間に誤解があ
るか、どちらかだと思う。
0446デフォルトの名無しさんNGNG
関数コールする時ハッシュるし。
あとは、パターンマッチを使わなくてすむなら
使わない方が早かったりするし。
0447439NGNG
皆さんありがとうございます。
上司は頭は切れるのですが自分の好みに合うコーディングじゃないとダメみたい
なんです。
まあ能力では全然かなわないから従うしか無いんですけど。
できたら明日結果報告します。
0448デフォルトの名無しさんNGNG
>>447
その上司にハッシュを使わずに書いてもらって、ハッシュで書いたのとベンチ
マークして比べてみろよ。
0449ドウデモイイケドNGNG
>>448
恥をかかせることが、>>439の今後の生活にとって正しいのか
どうかは、微妙ですな。頭の切れる上司とやらが、分別のある
大人であることを祈ろう。

役職者には、たまにとんでもないのがいるからね。
0450デフォルトの名無しさんNGNG
まあ、インデックス参照や数値演算のみで処理できるのなら、
それに越したことはないでしょう。
0451445NGNG
>>450

数値計算が一回入ると、ハッシュの方が速くなることが多い。>>439 の例で言えば

 $str =~ s/(?<!\d)(\d\d|1[0-4]\d)(?!\d)/"\xf4" . chr(0x4f + $2)/ge;

とするより、ハッシュを使って

 $str =~ s/(?<!\d)(\d\d|1[0-4]\d)(?!\d)/$convTable{$1}/gs;

とする方が速い。

どのみち Jcode.pm の h2z ではハッシュを使いまくってるし、ここだけハッシュを
回避する理由はない。コードの最適化は、コード全体を見てからしないと…。
0452デフォルトの名無しさんNGNG
perlのハッシュ使いだすと怠惰になるから・・
という教育的配慮じゃなかろうか。
0453 ◆hMJAPH9PWA NGNG
>>452
Perlerは無精であれ、と言われてるのに、いやな教育的配慮だなぁそれ(笑
0454デフォルトの名無しさんNGNG
>>453
同意。ならそもそもPerlを使うな、といいたい。
0455デフォルトの名無しさんNGNG
脳タリンな上司持つと平は大変だな
0456452NGNG
>>453 >>454
同意なんだが、新人にものぐさ度Maxの言語を最初に習得させるというのは
あんまり気がすすまない。
0457439NGNG
皆さんのアイデアを色々使わせて頂いてこんな感じに仕上がりました。
(上司にはまだ見せていませんが'while'を使うのも良くなかったみたいです)

my $string = "半角の数字を含んでいるかもしれない文字列";

#数字以外の半角文字を全角に
$string = Jcode->new($str,'sjis')->tr($from1,$to1)->h2z->sjis;

#外字が'47' => "\xf4\x7E",'48' => "\xf4\x80",
#で"\xf4\x7F"が無いのでまず'47'までを変換
$string =~ s/(?<!\d)([1-3]\d|4[0-7])(?!\d)/"\xf4".chr(0x59 + ( $1 - 10 ))/sge;

#'48'以降を変換
$string =~ s/(?<!\d)(4[89]|[5-9]\d|1[0-4]\d)(?!\d)/"\xf4".chr(0x80 + ( $1 - 48 ))/sge;

#残りの半角数字を全角に
$string =~ s/(\d+)/Jcode->new($1,'sjis')->tr($from2,$to2)->h2z->sjis/sge;
print $string;


'47'までと'48'以降の処理が分かれてしまったのですが何とか1発で済ます方法は無いでしょうか?
あとベンチマークの取り方がイマイチわかりません。

http://www2u.biglobe.ne.jp/~MAS/perl/waza/bench.html
に書いてある方法でやってみたのですがうまく行きません。
アドバイスお願いします。
0458デフォルトの名無しさんNGNG
☆★☆お星さまキラキラ☆★☆
http://jsweb.muvc.net/index.html
0459439NGNG
こんな感じでベンチマークとってみました。

my $t0 = new Benchmark;

#それぞれの処理を書く。

my $t1 = new Benchmark;
my $td = timediff($t1, $t0);
print "the code took:",timestr($td),"\n";


すると最初の方法では
the code took: 0 wallclock secs ( 0.07 usr + 0.01 sys = 0.08 CPU)

書き直した方法では
the code took: 0 wallclock secs ( 0.06 usr + 0.00 sys = 0.06 CPU)

で速くなりました。

これで見せてみよう… 大丈夫かなぁ。。
0460デフォルトの名無しさんNGNG
標準入力から文字列を読んで、標準出力に出力するスクリプトがあって
そのスクリプトを別のスクリプトから起動して、その結果を受け取りたいんですが
とりあえず今は
$str = `cat $input | hoge.pl`;
としています。
ただ、この場合メタ文字が含まれた場合よろしくないので
別の方法にしたいのです。
いったんファイルに書き出して
$str = `hoge.pl < $file`;
は、すでにボツにされた。

何か良い方法はないでしょうか?

hoge.plを呼ばずに素直に同等なスクリプト書けばすむ話だけど
それは駄目らしい・・・
0461デフォルトの名無しさんNGNG
>>460
> $str = `cat $input | hoge.pl`;
すでに$inputというファイルにデータがあるなら
> いったんファイルに書き出して
という必要はないだろう。
$str = `hoge.pl < '$input'`;

あるいは
open(HOGE, "|") || {
open(STDIN, $input) || die;
exec("hoge.pl");
}
0462デフォルトの名無しさんNGNG
>>460

普通は

 open(IN, "cat $input | hoge.pl |")

だけど、メタキャラクタが気になっているということは、ひょっとして
$input はファイル名ではなくデータそのもの?つまり、

 open(IN, "echo $input |hoge.pl |")

と本当はやりたくて、かつ $input 中のメタキャラクタが問題になっている?

ならば、pipe + fork か IPC::Open2 を使うべきだけど、あなたのレベルだと
少し苦しいかも。
0463460NGNG
×$str = `cat $input | hoge.pl`;
○$str = `echo $input | hoge.pl`;
でした。すみません。
肝心なところでミスを・・・

>462
ということで、すみません、それです。
確かに、pipe+forkはやったことがないので苦しいかと思いますが
勉強したいので。。
0464デフォルトの名無しさんNGNG
>>463
とりあえずperldoc openを欲嫁
0465462NGNG
>>460
まあ、以下のような感じになるわけだが、Unix の知識が無いと難しいと思う。
「Unix C プログラミング」とか「Unix ネットワークプログラミング」の頭の
方とか、http://www.wakhok.ac.jp/~maruyama/Syscall/pipe/pipe.html とか
を参考に読めばなんとかなるかな。

my $input = 'hoge.pl への入力';
my @result;

pipe(I1, O1) || die "pipe: $!";
pipe(I2, O2) || die "pipe: $!";
$SIG{'CHLD'} = sub { wait; };
0466462NGNG
my $pid = fork;
if (!defined($pid)) { # fork 失敗
  die "fork: $!";
} elsif ($pid > 0) {  # 親プロセス
  close(I1);
  close(O2);
  print O1 $input;
  close(O1);
  @result = <I2>;
  close(I2);
} else {        # 子プロセス
  close(O1);
  close(I2);
  open(STDIN, "<&I1");
  close(I1);
  open(STDOUT, ">&O2");
  close(O2);
  exec("hoge.pl") || die "exec: hoge.pl: $!";
}

# @result に hoge.pl からの出力が入っている。
0467デフォルトの名無しさんNGNG
複数の人に登録してもらうので登録番号をつけるようにしようと思うのですが、
(当然登録された順に0,1,2,・・・のように)

$lno = $lines[$#lines] +1;

のようにすると0,1,2,・・・のように保存されていきます。
ここまではいいのですが、登録してもらった後に、ランダムで2人を選んで対戦させ、
勝った人を先頭にもってきます。
問題が起こるのは1番最近に(登録番号が1番大きい)が対戦で勝った場合リストの先頭にいってしまうので、
次に登録した人の番号がダブってしまいます。

例)先頭から8,3,2,1,5,4,6,7で登録すると8になってダブル。

ダブらないようにするにはどうしたら良いのでしょうか?
0468デフォルトの名無しさんNGNG
>>467
timeつかえば?
0469デフォルトの名無しさんNGNG
$lno = $#lines +1; にしたらでキターーーーー!!

>>468
返信ありがとな。
0470デフォルトの名無しさんNGNG
>>467
LSDでもやってんのか?
0471デフォルトの名無しさんNGNG
LSDって何?

バトルロイヤルの改造やってます。
0472デフォルトの名無しさんNGNG
Limited Slip Diff
0473460NGNG

>464
ラクダ本は読んでいるんですけど、読み足りてないようです

>465
ありがとうございます。
理解するのに時間がかかりそうなので
よく読んでからまたきます。
0474439NGNG
>>457を見せました。色々文句言われました。"\d"は使わず"[0-9]"を使えとか…(--#;;

それは良いのですが
$string =~ s/(?<![0-9])([1-3][0-9]|4[0-7])(?![0-9])/"\xf4".chr(0x59 + ( $1 - 10 ))/sge;
$string =~ s/(?<![0-9])(4[89]|[5-9][0-9]|1[0-4][0-9])(?![0-9])/"\xf4".chr(0x80 + ( $1 - 48 ))/sge;
「この部分を47までと48以降で分けてサブルーチンにしろ。/gは遅くなるからダメ」と言われました。頭の中は?が飛んでます。


結局数字部分を見つけるのにはマッチングさせないといけないし、その部分を置き換えるのは置換しか無いのではないでしょうか?
どういう方法があるのか見当も付きません。
とりあえずperlクックブックを見て研究中です。
0475デフォルトの名無しさんNGNG
perl6って、いつ出るの?
0476デフォルトの名無しさんNGNG
馬鹿な上司は自分のチンポのでかさを示すために
"\d"は使わず"[0-9]"を使え、とか言うもんさ。
"[0-9]"を使ってたら"\d"を使えと言うだろな。
/gが駄目ならwhileで廻せ。まあ、適当にあしらって
おけばいいんだよ。
潰れないように、ガンバ
0477デフォルトの名無しさんNGNG
> "\d"は使わず"[0-9]"を使えとか

perl 以外でも使える正規表現を優先して使わせようと思っているのかもね。

>「この部分を47までと48以降で分けてサブルーチンにしろ。

$string =~ s/(?<![0-9])([1-3][0-9]|4[0-7])(?![0-9])/&sub1($1)/sge;
$string =~ s/(?<![0-9])(4[89]|[5-9][0-9]|1[0-4][0-9])(?![0-9])/&sub2($1)/sge;

とでもしろってことでしょう。

$string =~ s/(?<![0-9])(1[0-4][0-9]|[1-9][0-9])(?![0-9])/"\xf4" . chr(0x4f + $1 + ($1 >= 0x30))/sge;

の方が速いと思うが。

> /gは遅くなるからダメ」と言われました。頭の中は?が飛んでます。

その上司本当に Perl 知ってるのかな? 複数個所の in-place replace をす
るなら /g が一番速いんだが。他にも while で回す、split+map を使う等い
ろいろ方法はあるけど、特殊な条件下でないと /g より速くなることはない。

なんというか、聞いていて不安だ。
0478439NGNG
>>474の件ですが、
こんな方法を考えました。

$string =~ s/(?<![0-9])([1-9][0-9]|1[0-4][0-9])(?![0-9])/sub($1)/seg;

sub sub{
my $num = shift;
my $ren;
switch: {
if ( $num <= 47 ) {
$ren = "\xf4".chr(0x59 + ( $num - 10 ));
last switch;
}
if ( $num >= 48 ) {
$ren = "\xf4".chr(0x80 + ( $num - 48 ));
last switch;
}
}
return $ren;
}

でも元の方が速い… 全然見当違いなのかなぁ。

>>477さん
ありがとうございます。
>$string =~ s/(?<![0-9])(1[0-4][0-9]|[1-9][0-9])(?![0-9])/"\xf4" . chr(0x4f + $1 + ($1 >= 0x30))/sge;
の"chr(0x4f + $1 + ($1 >= 0x30))"の部分の処理の意味を教えて下さい。そのまま走らせると文字化けしました。

あと、「/gを使うな」というのは僕の勘違いかもしれません。スイマセン。
0479bloomNGNG
http://www.agemasukudasai.com/bloom/
0480デフォルトの名無しさんNGNG
変数$aと$bにバイナリデータが入ってるとして
同じかどうかを調べるには、

if($a==$b){〜}

と

if($a eq $b){〜}

とどちらがいいんでしょうか?
0481デフォルトの名無しさんNGNG
>>480
$a==$b はダメじゃない?
$a="0" $b="00" でも真になるよ。
0482480NGNG
>>481
じゃあ、
if($a eq $b){〜}
でいいのかな?(バイナリデータは文字列扱い?)
0483 NGNG
>>482
あんた頭が悪いな
0484デフォルトの名無しさんNGNG
>>478
やはり素直にハッシュを使うべきだと思うがな。

my %conv;
@conv{ 0..149 } = (
 map("\x82" . chr, 79..88),
 map("\xf4" . chr, 89..126, 128..229),
);

$string = Jcode->new($string, 'sjis')->tr($from1, $to1)->h2z->sjis;
$string =~ s/(?<![0-9])((?:1[0-4]?|[2-9])?[0-9])(?![0-9])/$conv{$1}/g;
$string =~ s/([0-9])/$conv{$1}/g;

これだけで済む事を、やれ条件分岐だサブルーチンだとコード
増やすのは馬鹿げてるし、無駄に重たくなるだけかと。

/g ではなく /e を使うなという事なら分からんでもない。
あとベンチ取る時は CPU time が最低 5 秒以上かかるように
試行回数増やさないと有用な数字が出ないよ。
0485デフォルトの名無しさんNGNG
$a = $lines[$tai];
$b = $lines[$tais];



open(DB,"$logfile");
seek(DB,0,0);@lines = <DB>; close(DB);
foreach $lines (@lines){
($lno, $lname, $lsakusya, $lhomepage, $llif, $lpow, $ldef, $lspe, $ldate, $lip, $licon, $lwin, $lsyu, $ltotal) = split(/<>/,$lines);
$ltotal++;
$lines = "$lno<>$lname<>$lsakusya<>$lhomepage<>$llif<>$lpow<>$ldef<>$lspe<>$ldate<>$lip<>$licon<>$lwin<>$lsyu<>$ltotal<>\n";
}

この時、$ltotal++;と言う処理を$lines[$tai]と$lines[$tais]にだけ行いたいのですが、どうしたら良いのでしょうか?

0486477NGNG
>>439
>chr(0x4f + $1 + ($1 >= 0x30)) の意味

($1 >= 0x30) は $1 が 0x30 以上なら 1、そうでなければ 0 になる。つまり、

 $1 < 0x30 -> chr(0x4f+$1)
 $1 >= 0x30 -> chr(0x50+$1)

という意味。(慣れると三項演算子よりも読みやすくなるけど、あまり濫用し
ない方がいい。)

というか、elsif を覚える方が先決のような気がしてきた…。
0487デフォルトの名無しさんNGNG
>>485
解決しますた
0488439NGNG
>>484さん
ありがとうございます。
そうですよね。私も最初はそう思ったんですが…
でも色々新しいことの勉強もできたんで良かったです。

>>486さん
その方法を少し改造して
#$1が48以上だったら1を足す
$string =~ s/(?<![0-9])([1-9][0-9]|1[0-4][0-9])(?![0-9])/"\xf4" . chr(0x59 + ( $1 - 10 ) + ( $1 >= 48 ))/sge;

これでファイナルアンサーだろうと思って見せたら【( $1 >= 48 )】の部分を見て
「何だこれは?」と言うので説明したら
「これだと“1”が帰ってくるんじゃない!“true”が返ってくるんだよ!」と怒られたので

( $1 >= 48?1:0 )

に直しました。
これが今までベンチマークとった中では最速でした。

これで上司も満足?してくれたと思います。
皆さんありがとうございました。
「オレならこうするね」っていう意見もあれば勉強したいのでお願いします。
0489デフォルトの名無しさんNGNG
>>488
> 「これだと“1”が帰ってくるんじゃない!“true”が返ってくるんだよ!」と怒られたので
(゚Д゚)ハァ?

> これが今までベンチマークとった中では最速でした。
三項演算子使った方が速かったってこと?
0490439NGNG
失礼しますた。
$1 >= 48?1:0
よりも
$1 >= 48
のほうが速かったです。

でもダメって言われたんですよ(涙)
0491デフォルトの名無しさんNGNG
まぁ>>488で、その上司がPerlをまったく分かってないということだけははっ
きりしたわけだ。
0492デフォルトの名無しさんNGNG
      / .:.:. / ̄  \  _,,,,-‐'''"   \, へ、
     / .:.:/ /\.:.:    /            ヽ
     /.:.:.:,‐'" 〈.:.:.:.:\.:.:.: /.:.:___,,,,-‐ __.:.:_,,,,-‐.:.:   `、,,_
   _,,,-''"    |\.:.:.`''/_..-'/,,-‐''"∠..,,,,,,/_,,,,-‐  __ ヽ、
--‐''        |,ィ'⌒゙ヽiイ´ // , " ̄`ヽi! /// .:  ヽ、`ヽ、
      .:.   〈 (~< レ  '´  ' ..,,_('ッ ゙i!/'´ //|.:.:   \
   _,,,-''.:.   .:.:.\ `        ,,、、´゜、、、 __,,,,.../ ::|.:.:|.:.: |
--‐''.:.:.:.:/::  .:.:.:.:./´`T            ,,_(ッ,ノ /.:.: / :/|.: /
.:.:.:.:.:.:/.:.:.:.:.:./:::/            /~⌒ヽ、-/゙//| :/|/ |/   从___人/(____
---‐-、____,、-‐<           /⌒゙ヽ  ヽ>  / |/ |/ __)`-ー-'
;;;;;;;;;;;;;;;;;;;;;;;;;;;ヾ、'、        /‐-、_ 〉 / , '     >
;;;;;;;;;;;;;;;;;,,,,-‐'''"\\__\   `ヽ-、;_/ ,,-''      \ trueって
 ̄ ̄^i;;;;;;;;;;`-;;;;;;;) \ノ::::´`ヽ、   ,, - "ヽ、        )  な に !?
::::::::::::::|;;;;;;;;;;;;;;;∠-‐'''"`-、:.:.:.:.: `''''".:.:.:.:.:.  '、      ∠ 
::::::::::::::::\;;;;;;;;;/::::\|;;;|;;;ヽ、:.:.:.:.:.:.:∧.:.:.:.:.:. ',       〕
\::::::::::::::::|;;;;;/::::::::::::/;;;/;;;;;;;;|.:.:.:.:.:. / |.:.:|\: i     /
:::::\:::::::::::`‐'::::::::::::/;;;/;;;;;;;;;/.:.:.:.:/ //  |: /      ̄ ̄)/W⌒\(~~∨⌒ヽ
0493 ◆hMJAPH9PWA NGNG
確実に数値として有効な値が欲しいときは冗長だが expr ? 1 : 0 とするべきでは。
0494デフォルトの名無しさんNGNG
<で確実に1か0が得られることは仕様なわけだが。
0495 ◆hMJAPH9PWA NGNG
>>494
そうだね。warningsが有効になっていると警告を出す、
という点が気にならなければ、もちろんそれでも構わない。
0496デフォルトの名無しさんNGNG
思わずperlの仕様を調べてしまった > true
0497デフォルトの名無しさんNGNG
Programming Perl 3rd Ed. page 100. Relational Operators (> >= < <=)
These operators return 1 for true and "" for false.
0498デフォルトの名無しさんNGNG
Perl/Tk関連のスレって、どこにありますか?
0499デフォルトの名無しさんNGNG
print "hogehoge\n";

これの出力先を別ターミナルにしたいのですが
どのようにすればよいでしょうか?
0500デフォルトの名無しさんNGNG
Perl内から実行したコマンドの出力を受け、それが改行を含む文字列のリストの場合、
例えば($a = `find ./ -name a`)の様なとき、
このリストを一行ずつ読み込んで変数に代入するにはどうしたらいいですか?
0501デフォルトの名無しさんNGNG
>>500
@a = `find ./ -name a`
0502デフォルトの名無しさんNGNG
>>499
open(TTY, ">/dev/ttyxx")
print TTY "hogehoge\n";

ttyxxの部分は適宜調べる
0503デフォルトの名無しさんNGNG
>>501
2行目を取り出すにはどうすればいいの?
0504503NGNG
っと思ったけど、@は配列だったね。失礼しました。

サンクス>>501
0505499NGNG
>>502
うわ、そんな簡単な事だったんですね…
さっそく試してみます。
混乱してましたが、すっきりしましたありがとう♪
0506デフォルトの名無しさんNGNG
`cat hoge.txt > hoge`
という文が処理されないのですがどうしたらいいですか?
0バイトのhogeが作成されるだけで終わります。
perlが標準出力をトラップしてるのでしょうか?
0507デフォルトの名無しさんNGNG
>>506
何の問題もなくhogeが作成されるが。
何か激しく勘違いしてないか?ディスプレイが溶けるほどソースをよく見ろ。
0508デフォルトの名無しさんNGNG
hoge.txtが空なんだろ
0509デフォルトの名無しさんNGNG
$ENV{PATH}?
0510デフォルトの名無しさんNGNG
よく調べたら、chompし忘れてて、
cat hoge.txt
> hoge
になってた様です。

ありがとうございました。
0511デフォルトの名無しさんNGNG
…バッククォートの中身をchompし忘れって…
それはつまり、クラックし放題ですか?
0512デフォルトの名無しさんNGNG
>>511
-rwx------なのにどうやってクラックするんでしょうか
0513511NGNG
chompするってことは変数をバッククォートで括ってるんでしょ。
てーことは、変数の値によっては妙な権限でコマンドが動作するんでない?
いや、変数が外部から一切操作されないなら問題ないけど。
む、書いてる内に大きなお世話という気がしてきた。
0514 ◆hMJAPH9PWA NGNG
>>511の書き方だと、chompすれば安全であるかのような誤解が生まれないか心配。
0515デフォルトの名無しさんNGNG
正規表現の置換処理内で関数の返値を使いたいんですが可能ですか?

$_ = "Public Const AAA = 32";

m@=\s*([0-9a-fA-F].*)@; $v = hex($1);
s@(=\s*)[0-9a-fA-F].*@\1$v@;
# $_ = Public Const AAA = 20

というようなことを

s@(=\s*)([0-9a-fA-F].*)@\1hex(\2)@;

というような感じにしたいのですが…
0516デフォルトの名無しさんNGNG
eオプション
0517デフォルトの名無しさんNGNG
てか、 >>506 が嘘書いてんじゃん
`cat hoge.txt > hoge`
じゃなくて
`cat $file > hoge`
だったんだろ? 人に聞くときは勝手に脳内展開するなよな
0518デフォルトの名無しさんNGNG
メタ文字  意味
.     任意の一文字
+     直前のパターンを一回以上繰り返す
?     直前のパターンが0回または1回現れる

さてここでなぜ
m/.+?/
が、最短マッチになるのか論理的に説明してください!

0519515NGNG
>>516
ヒントありがとうございます。

早速
s@(=\s*)([0-9a-fA-F].*)@\1hex(\2)@e;

としてみましたが、なんか \1 や \2 が展開される前に
評価されてしまっているようで、\1 や \2 が 1 や 2 の
参照と見なされてエラーが出るようです。

$& だと展開するみたいなんですが。
0520デフォルトの名無しさんNGNG
s/(=\s*)([0-9a-fA-F]+)/$1.hex($2)/e;
0521デフォルトの名無しさんNGNG
>>518
?の意味が違うだろ。お前はCの*も混同してるだろ?
0522515NGNG
>>520
ありがとうございました。
0523デフォルトの名無しさんNGNG
Perlに限ったことではないですが、コンソールプログラムなどで、進捗状況を一行に"#"のグラフで表現する手法がありますよね?
こういうのってどうやれば出来るんですか?

print文で制御コードを吐けばできるんですか?

↓こんなの

############### [50%]
0524デフォルトの名無しさんNGNG
>>521
はぁ?おまえ何いってんだよ
違うんだったら?の意味書いておけよ
0525デフォルトの名無しさんNGNG
>518
量指定子の直後の?は最短マッチを表す、って言う仕様になったから。
0526デフォルトの名無しさんNGNG
>>525
結局仕様ってわけね
anyway レスサンクス
0527デフォルトの名無しさんNGNG
>>523
最初か最後に"\r"を書くだけ。
0528デフォルトの名無しさんNGNG
初歩的な質問で申し訳ないのですが

while(<>) {
split;
print "$_[1]\n";
}

のような場合
splitの結果が@_ に入ると
whileで読まれた$_は上書きされるのでしょうか?

上手く伝えられないのですが…
それとも、$_ と $_[1] は共存?できるのでしょうか?

0529デフォルトの名無しさんNGNG
$_と@_は違うでしょ(@_@)
0530デフォルトの名無しさんNGNG
早速のレスありがとうございます。
では、@_ の内容をみる場合の $_[1] と $_ とは
全く別なんですね?
0531デフォルトの名無しさんNGNG
>>529
同じかも
0532528NGNG
あぅ。どっ…どっちなんでしょう。(汗
0533別だよNGNG
そのくらい試してみろよ
0534528NGNG
>>533
ありがとうございす。
0535528NGNG
>>533

実は、試してはみたんですが
@_ の内容をみるのに $_[1] や @_[1] みたいなのでも
動くので、一体どれが正しいのか…分からなくなってきて
検索で調べても、なかなか答えがないので
質問させて頂きました。
ご容赦を
0536デフォルトの名無しさんNGNG
>>535
Perlの解説本全く見ずにやってるってこと?
0537528NGNG
>>536
普段は技術評論社のPerlの本を見ていますが
現在、手許になくて、解決に困っていました。
0538別だよNGNG
>>535
(゚Д゚)ハァ?

自分でほとんど書いてるじゃん。>>528

$ perl -e 'while(<>) {split;print "\@_: $_[1]\n";print "\$_: $_\n";}'
abc def
@_: def
$_: abc def


0539デフォルトの名無しさんNGNG
>>535

@_[1] はスライス。>>360 を見れ。
0540デフォルトの名無しさんNGNG
prelでプリンタに出力したいのですが、

open ( PR, ">PRN" );
open ( IN, "<print_this_text.txt") ;
while ( <IN> ){ print PR "$_"; }
print PR "\014";
close ( PR );
close ( IN );

とすると「プリンタと通信ができない状態です」とエラーが出てしまいます。
どのようにしたらいいのでしょうか?
0541デフォルトの名無しさんNGNG
>>540

とりあえず type print_this_text.txt > prn でうまくいくことは確認した上で、
perl -v の出力と Windows のバージョンを書け。
0542デフォルトの名無しさんNGNG
ttp://tohoho.wakusei.ne.jp/lng/199807/98070017.htm
0543523NGNG
>>527
できました。ありがとう。
でも"\r"だと、Macで動かした場合、改行してしまわないんですか?
Macで使わないからどうでもいいけど....
0544デフォルトの名無しさんNGNG
ソフトキーボードのようなものを作成しようと思うんですが
ブラウザのアドレス入力欄に文字を表示させるには
どうしたらいいでしょうか?
0545デフォルトの名無しさんNGNG
>>543
OS Xだと大丈夫なんじゃないかなぁ。使ったことないからわからんけど。
0546デフォルトの名無しさんNGNG
んん
0547デフォルトの名無しさんNGNG
>>541
type print_this_text.txt > prn
とすると何も反応しません。
プリンタの設定がおかしいのでしょうか・・・。
プリンタはcanon BJ F610 (BJRSTR)です。
OSはwindowsXP,perlのバージョンは5.005_03です。
0548デフォルトの名無しさんNGNG
>>547
すでに板違い
0549528NGNG
>>539
ありがとうございます。
@_[1] は、配列の1要素だけスライスしたもの…ですね。
言われてみれば、そうですね。(鬱
0550デフォルトの名無しさんNGNG
>>548
そうですね。
すみませんでした。
0551デフォルトの名無しさんNGNG
次のperlスクリプトの間違いを示せ。(制限時間1分)

#!/usr/bin/perl

$datafile = "count.dat";
open DATAFILE, "+<$datafile";
flock(DATAFILE, 2);

seek DATAFILE, 0, 0;
$count = <DATAFILE>;
$count++;

printf("%4d", $count);

seek DATAFILE, 0, 0;
print DATAFILE "$countn";

flock(DATAFILE, 8);
close(DATAFILE);

exit;
0552デフォルトの名無しさんNGNG
flock(DATAFILE, 8); は不要。
close が始末してくれる。
0553デフォルトの名無しさんNGNG
> print DATAFILE "$countn";

"$count"; か "$count\n"; の間違いじゃないか?
0554デフォルトの名無しさんNGNG
厳密に言ったらlockの仕方がおかしいんじゃないか?
openしてからflockまでの間によそのプロセスが開けちゃわない?
0555デフォルトの名無しさんNGNG
質問させてください。
mainパッケージ内で、testというパッケージをuseして呼び出したとしたら、
mainパッケージないで仕込んだ乱数の種は、testパッケージ内でも有効でしょうか?
testパッケージ内でも、乱数の種を仕込む必要があるのでしょうか?

よろしくお願いします。
0556デフォルトの名無しさんNGNG
>555
乱数の種をどうやって保持するのかによる。

testパッケージからは main::hogeでmainパッケージのを参照できる。
逆もしかり。もちろん参照する時点で定義されている必要がある。
0557デフォルトの名無しさんNGNG
いや、要するにsrandしたらそれが有効なのかどうか、ってことだろ?
有効だったはず。
0558デフォルトの名無しさんNGNG
>>554
じゃあ flock してから open しろとでも?
0559デフォルトの名無しさんNGNG
O_EXLOCK つけて sysopen
0560デフォルトの名無しさんNGNG
あの、ものすごく単純な質問ですみません。
テキストファイル中の、<>で囲まれた数字だけを
決まった数だけ増やすには、どうしたらいいのでしょうか?

テキストファイルの中に、ところどころ<>で囲まれた半角数字があります。
1行の中に複数存在する場合もあります。
数字はすべて整数で、1〜999999の範囲にあります。

<239>書籍<9384>音響<5732>
<543>小動物<392448>家具

といった感じのデータになります。
ここで、「<>内の数値をすべて20増やす」ということがしたいのです。

思い切り1行くらいで書けるような気もするのですが、
私にはうまく作ることができませんでした(1行じゃなくても)。

すみませんが、お力をお借りできませんでしょうか。
0561デフォルトの名無しさんNGNG
>>560
こんな感じかな?

$filename = "hoge.txt";

open(FH, "+<$filename") or die;
read(FH, $buf, (stat(FH))[7]);
$buf =~ s/<(\d+)>/'<'.($1 + 20).'>'/esg;
seek(FH, 0, 0);
print FH $buf;
close(FH);
0562 NGNG
>>560
これからもperlを使うつもりがあるなら、
まず本買って読んだほうがいいと思うよ。

一行はおろか複数行でも書けないというのは、
perlが全然わからないと言ってるのと同じように聞こえる。
0563560NGNG
うわっ!

そんなすぐに書けるものですか……しかもスマ〜ト!!
ありがとうございます……。
タダ働きさせてしまってすみません。

>>562
おっしゃる通りです。
動物の絵の書いた本を読み漁ってみたのですが、
独学のせいか、アタマのせいか、どうもうまくいかず……。

それで、うまく作ることはできなかったんですけど、
途中まで作ることはできたんですよ。
だけど、「文字を順に読む」→「"<"を見つける」→「数字記録状態にする」
→「次の数字を記録する」→「">"が出たら、数字記録状態をやめる」→……
っていう風に、グダグダになってしまい……。
エディタか、OSか、っていう長大なプログラムになってしまいました。

はやく>>561みたいにカッコよく書けるようになりたいです。
0564デフォルトの名無しさんNGNG
>563
正規表現を極めるべし。
0565デフォルトの名無しさんNGNG
>>563
そういう力技もアルゴリズムの勉強になって
いいことだと思うよ。
でもperlは楽なことは楽にできるようにっていうのが趣旨だから
どちらがいいかはわからないけど
0566デフォルトの名無しさんNGNG
perlって言うより正規表現のおかげと言ったほうがいいけどね。
0567デフォルトの名無しさんNGNG
>>561のプログラムは、正直怖いです。
みなさんこういうのを普段から使っているんですか?
気にしすぎですか?
0568デフォルトの名無しさんNGNG
>>567
怖いって言うのは、元ファイルに直に上書きしてるから?
0569デフォルトの名無しさんNGNG
>>523
>進捗状況を一行に"#"のグラフで表現する手法がありますよね?
>こういうのってどうやれば出来るんですか?

これでどうでしょ?
$end = 12;
$count=1;
for(1..$end){
  local $|=1;
  sleep 1;
  printf "[%-${end}s] %3d%", "#" x $count, $count/$end*100;
  if ($count < $end){
    print "\r";
  } else {
    print "\n";
  }
  $count++;
}
0570569NGNG
・・・って、とっくに答え出てましたねトホホーイ。
0571デフォルトの名無しさんNGNG
perlでgif,jpeg,png,bmpなどの画像のサムネイルを吐くスクリプトが組みたいです。
どっかに参考になるとこないですかね?
そのものズバリを配布してるページでも教えてくださったらうれしいです。
スレ違いor板違いだったら誘導してくださるとありがたいです、、、sage
0572デフォルトの名無しさんNGNG
>>561
$ perl -i~ -pe 's/<(\d+)/"<".($1+20).">"/eg' hoge.txt

sオプションはいるんか?
0573デフォルトの名無しさんNGNG
>>571
GD.pm
0574デフォルトの名無しさんNGNG
>>573
ありがとうございます。
インターネットを一生懸命検索していたので、ローカルのファイルに目が行ってませんでした、、、
これから使い方を調べてみますです。
0575デフォルトの名無しさんNGNG
みなさん、perlで2次元配列を実装するときは
どうしてますか?
俺は[]を使ってリファレンスを
一時配列に入れるようにしてるのですが(らくだ本から)
もっと効率的なやり方はあるのでしょうか?
0576デフォルトの名無しさんNGNG
Perlを使わない
0577デフォルトの名無しさんNGNG
perlを使ってといってるだろうが
0578デフォルトの名無しさんNGNG
じゃあない。
0579デフォルトの名無しさんNGNG
じゃあperl以外だったら効率がいいやりかたがあるの?
Cとかでやれというのですか?
0580デフォルトの名無しさんNGNG
Rubyを使えと何度言ったら分かるんだ(-_-;)
0581デフォルトの名無しさんNGNG
RubyってたとえばCライクに
"型"[][]とかできるの?
0582デフォルトの名無しさんNGNG
a = [[1, 2], [3, 4]]
p a[1][0] #=> 3

型を制限したいならそういうクラスを作る。
class Foo < Array
extend StrongTyping
def [](val)
expect(val, Numeric)
super
end
<snip>
end
0583デフォルトの名無しさんNGNG
#★これは納得できる。
$str = '\100';
print "str: $str";
$str =~ s/\\/\\\\/g;
print "str: $str";
# 実行結果
# str: \100
# str: \\100

#★これも納得できる。
my $pre = '\\\\';
my $after = '\\\\';
print "pre : $pre";
print "after: $after";
# 実行結果
# pre : \\
# after: \\

#★これが納得いかない。
# 変数に入れた場合は、置換後の文字列をエスケープしなくていいの?
$str = '\100';
print "str: $str";
$str =~ s/$pre/$after/g;
print "str: $str";
# 実行結果
# str: \100
# str: \\100
0584デフォルトの名無しさんNGNG
open(OUT, "+<test.dat");
flock(OUT,2);
truncate(OUT,0);
seek(OUT,0,0);
print OUT "うんこ";
close(OUT);

このプログラムやってもファイルが作成されないんですけどどうしてですか?
0585デフォルトの名無しさんNGNG
>>584
うんこだから。
0586デフォルトの名無しさんNGNG
>>584
ファイルを作る気がないから
0587デフォルトの名無しさんNGNG
>>584
せめてopenの結果くらいチェックしろと(ry
0588デフォルトの名無しさんNGNG
>>583

$foo = '$bar';
$bar = 'hogehoge';
print $foo;

これで「$bar」って出るのと「hogehoge」って出るのと、どっちだったら納得できる?
0589ハッカ飴NGNG
>>584

open(OUT, "+<test.dat");
ではファイルは作られないよ。
前もって > とか +> でファイルを作らないとダメ。
0590ハッカ飴NGNG
>>583
良くは分からないが、置換前のほうが2度展開されてるらしいね。
0591ハッカ飴NGNG
>>575
2次元配列は
$dim[0][3]
で良いんじゃないの?

Perlはリファレンスを駆使して、自動的に配列を用意してくれるから、
$dim[23][11][32][1] = "A";
print $dim[23][11][32][1];
でちゃんと A が表示されるし。
0592ハッカ飴NGNG
>>551
552で指摘されているように、flock(DATAFILE,8)が不要。
あと、ファイルが存在しないときは何も起きない。
0593デフォルトの名無しさんNGNG
>>590
値看護の邦画一回しか展開されていないの。
マニュアルに宗書いてあるヨ。
0594ねなべNGNG
>>563に2人きりでPerl教え込みたい!!!!
うんこー!
0595デフォルトの名無しさんNGNG
Perlでopen(OUT,"./test.dat");なら書き込めるけど
open(OUT,"http://www.DBZ.com/test.dat");のようにURL指定では書き込めないんですか?
0596デフォルトの名無しさんNGNG
>>595
実行した結果が物語っています。
0597デフォルトの名無しさんNGNG
 
0598デフォルトの名無しさんNGNG
>>595
その方法であなたのサイトのファイルをすべて書き換えてあげましょう。
0599デフォルトの名無しさんNGNG
(^^)
0600デフォルトの名無しさんNGNG
(^^)
0601デフォルトの名無しさんNGNG
flock(OUT,2);をすると書き込めませんがどうしてですか?
0602デフォルトの名無しさんNGNG
>>601
わからん
0603デフォルトの名無しさんNGNG
flock(OUT,2);をすると書き込めませんがどうしてですか?
0604デフォルトの名無しさんNGNG
>>603
Perlは君のことが嫌いなんだよ。
食事でもおごってやれ。
0605デフォルトの名無しさんNGNG
うわーーーーん
0606デフォルトの名無しさんNGNG
 
0607デフォルトの名無しさんNGNG
そろそろ山崎渉。
0608デフォルトの名無しさんNGNG
perlの正規表現で、ABという文字の連続以外を表したいときどうしますか?
[^AB]だとAもBもはじいちゃいますよね??
0609デフォルトの名無しさんNGNG
(^^)
0610デフォルトの名無しさんNGNG
(^^)
0611デフォルトの名無しさんNGNG
>>608
[^A|B]
0612デフォルトの名無しさんNGNG
>>611は明らかに違うだろ
うろ覚えだが(?!AB)とかじゃなかったっけ
0613デフォルトの名無しさんNGNG
>>608
[^AB*]
0614(^Д^)NGNG
(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
0615デフォルトの名無しさんNGNG
>>608
ttp://www.din.or.jp/~ohzaki/regex.htm#Without
0616デフォルトの名無しさんNGNG
>>612
当たり。
http://perldoc.com/perl5.8.0/pod/perlre.html
を見れ。
0617デフォルトの名無しさんNGNG
>>608
(^^)
0618608NGNG
ありがとうございます、608です
大変勉強になりました!
0619デフォルトの名無しさんNGNG
>>608
(^^)
0620デフォルトの名無しさんNGNG
>>616
わからん
0621デフォルトの名無しさんNGNG
無口で社交性がなくてもできる仕事を教えてくれ
0622デフォルトの名無しさんNGNG
>>621
プログラマー
0623デフォルトの名無しさんNGNG
[^^]
0624デフォルトの名無しさんNGNG
[^^]
0625デフォルトの名無しさんNGNG
[^^]
0626デフォルトの名無しさんNGNG
s/[^^]/(^^)/
0627デフォルトの名無しさんNGNG
s!/[^^]/(^^)/!/(^^)/[^^]/!
0628デフォルトの名無しさんNGNG
s/([^^])/$1/
0629デフォルトの名無しさんNGNG
いやらしい!!
0630デフォルトの名無しさんNGNG
\[^^]/
0631デフォルトの名無しさんNGNG
\[^^]/   
0632デフォルトの名無しさんNGNG
>>626-627
なんだか全員”ハイル・ヒトラー”をしているみたいだな。
0633デフォルトの名無しさんNGNG
なんだか全員”コンパイル・エラー”をしているみたいだな
0634デフォルトの名無しさんNGNG
>>633
ちょとわらた
0635デフォルトの名無しさんNGNG
[^o^]
0636デフォルトの名無しさんNGNG
[^-^] 
0637デフォルトの名無しさんNGNG
[^v^]
0638デフォルトの名無しさんNGNG
>>630 >>631
コンパイル通らんだろ
0639デフォルトの名無しさんNGNG
 
0640デフォルトの名無しさんNGNG
最新のactive perlを利用してperlを実行しているのですが、二重にネストされた上位関数の方でlocalで変数宣言をし、
その変数を下位関数で宣言無しで弄ろうとすると、上位の宣言部分及び下位の弄っている部分で
global symbol $hoge requires...
と「宣言をしていない」と怒られてしまいます。
これはlocalがサポートされてないと考えるべきなんでしょうか・・・。
0641デフォルトの名無しさんNGNG
http://homepage3.nifty.com/digikei/ten.html
おちんちんが熱くなるよ。
0642デフォルトの名無しさんNGNG
>>640

perldoc strict 中の、strict vars を参照のこと。
解決方法はいろいろあるが、その「最新の active perl」が 5.6 以降なら、
our $hoge 宣言が一番早い。でなけりゃ $hoge のかわりに $::hoge を使う。
0643 ◆hMJAPH9PWA NGNG
$hogeのかわりに$::hogeを使うと、use strictをする意味が無いのでお勧めできない。
0644640NGNG
>>641-642
ourを利用することで何とかなりました。
どうしようもない質問に付き合って頂いてありがとうございます。
0645640NGNG
訂正:641-642 -> 642-643
失礼致しました。
0646デフォルトの名無しさんNGNG
半角カタカナで書き込むと文字化けしてしまうんだけど半角カタカナでも文字化けしないようにするには
プログラムでどのようにすればいいんですか?
0647デフォルトの名無しさんNGNG
 
0648デフォルトの名無しさんNGNG
>>646
まず日本語と質問の仕方を学習してください。
0649デフォルトの名無しさんNGNG
>>646
半角カタカナでも文字化けなんかしません。
やり方聞かれても困ります。普通にやれば文字化けしないのですから。
0650hogeNGNG
文字列0001を数字1にしたい場合、どうしたらよいですか?
0651hogeNGNG
自己レス
int(文字列)でいけました
0652デフォルトの名無しさんNGNG
s/^0*//; あとはPerlが"1"を1にしてくれる。
もうちょっと解説書を読め。
0653652NGNG
解説書を読まなきゃならんのは漏れのほうだった。
恥ずかしい。
0654デフォルトの名無しさんNGNG
お目汚し申し訳ありません。

$a =~ s/</</g;
$a =~ s/>/>/g;

とし、タグの仕様を不可にした前提で、

<span style="font-size:10px">文章</span>
#上記の style="〜" の〜は可変です

の文体が送られた場合、これを成立させるにはどのように記述すればよいのでしょうか?
$mes =~ s/<span>/<span>/g;
$mes =~ s/<\/span>/<\/span>/g;
では開始タグが成立しませんし・・・

どなたかご教授願えませんでしょうか?
0655デフォルトの名無しさんNGNG
>>654
HTMLエスケープしろ。

「これを成立」ってどういう意味?
0656654NGNG
>>655さん
>成立
適当な文章が考え付きませんでした
つまるところ、タグとして稼動させるには、という意味でして・・・

って、コードがΣ( ´Д`)

修正・長レス申し訳ないです;

>>$a =~ s/</&lt;/g;
>>$a =~ s/>/&gt;/g;

>>とし、タグの仕様を不可にした前提で、

>><span style="font-size:10px">文章</span>
>>#上記の style="〜" の〜は可変です

>>の文体が送られた場合、これを成立させるにはどのように記述すればよいのでしょうか?
>>$a =~ s/&lt;span&gt;/<span>/g;
>>$a =~ s/&lt;\/span&gt;/<\/span>/g;

と、書いたつもりでしたが・・・迂闊でした;
0657デフォルトの名無しさんNGNG
$mes =~ s/<(span.*?)>/<\1>/g;
0658デフォルトの名無しさんNGNG
しまった、失敗。
$mes =~ s/&lt;(span.*?)&gt;/<\1>/g;
0659デフォルトの名無しさんNGNG
>>650
0を足すとか1をかけるとかでもいける。
算術演算を施すと文字列は数字に解釈される
0660654NGNG
>>658さん激感謝っス
なるほど・・・ *? ですか・・・
勉強し直してきます;
0661デフォルトの名無しさんNGNG
open(F,"file.htm"):

while(<F>){

ここで読み込んだ一行からマッチングを行いたいのですが
読み込まれた一行はなんという特殊変数に格納されているんですか?

}

close(F);
0662デフォルトの名無しさんNGNG
$_ です。
0663デフォルトの名無しさんNGNG
>>662
ありがとうございます。本をよく読むと書いて有りました。
自分が情けない・・・。
0664デフォルトの名無しさんNGNG
 
0665デフォルトの名無しさんNGNG
最近の素朴な疑問なのですが、

(1)
print "1.hoge\n";
print "2.hoge\n";
print "3.hoge\n";

(2)
print <<_EOD;
1.hoge
2.hoge
3.hoge
_EOD

(3)
print (
"1.hoge\n" .
"2.hoge\n" .
"3.hoge\n"
);

どれが一番良いのでしょう。
print の中で関数を呼び出す事が多いので、
個人的には(3)を良く使ってたりしますが、、
0666デフォルトの名無しさんNGNG
>665
趣味だ。どれでもいーだろ。あたしゃ2で書くけど。
0667665NGNG
>>666
やっぱ趣味ですか。私は(2)でかくとインデントし難く
なってしまうので余り好きではなかったりします。
# HTML吐く時は良く使うかもですが

スレ汚し失礼しました。
0668デフォルトの名無しさんNGNG
>>667
いつになったら出るのか分からないPerl6では、改善されるらしい。
http://dev.perl.org/perl6/talks/Perl6-Notes-200108.v2.pdf
を"<<"で検索してくれ。
0669デフォルトの名無しさんNGNG
(1)が一番メモリに矢指と聞いたことがあるんだけどデマナンダ?
0670デフォルトの名無しさんNGNG
 
0671デフォルトの名無しさんNGNG
デマというか、真面目に考えたくない質問されて、俺流を通したいとき
「こうやるのが一番(メモリ消費の or スピードの)効率がいいんだよ」と
根拠もなくとりあえず言ってみて押し通す、っていう技があるよね。

で、ごちゃごちゃ突っ込まれたら、
「じゃ、あとでいろんなパターン書いてみてテストしてみてごらんよ、
俺の言ったのが一番だから。」
と、知ったかぶり(にもならないな)しておくと。
0672デフォルトの名無しさんNGNG
これはPerlに限った事じゃないと思うけど、ファイル内の書き換えをする時って
読むファイルと書くファイルって別物にしないとダメ?
毎回バックアップ作って書き換えするのがしんどいのですが
0673デフォルトの名無しさんNGNG
>>672
方法によるが必ずってわけじゃない。
0674デフォルトの名無しさんNGNG
正規表現についてですが、ピリオドをマッチさせるにはどうしたら良いか
ご教授してもらえないでしょうか?
0675デフォルトの名無しさんNGNG
\.
[.]
0676デフォルトの名無しさんNGNG
>>675
どもです!!!
0677デフォルトの名無しさんNGNG
http://slashdot.jp/article.pl?sid=03/03/06/1041206&topic=55&mode=nested
あんまり関係無いかもしれんが、Larry Wallのインタビュー記事
0678デフォルトの名無しさんNGNG
$aと$bを連結する関数ってありますか?
$a=abc;
$b=def;
ならabcdefになるようなものなんですけど・・・
0679デフォルトの名無しさんNGNG
あげ。
0680デフォルトの名無しさんNGNG
お願いします
0681デフォルトの名無しさんNGNG
$c = $a . $b;
0682デフォルトの名無しさんNGNG
>>681
ありがとうございました。
0683デフォルトの名無しさんNGNG
>>678
短時間に何度も書くなボケェ
0684デフォルトの名無しさんNGNG
open(IN, "--");
とかのINっていうのはなんなの?
ファイルハンドルだっていうのは分かるけど、どんな変数なんだ。

自分で空のファイルハンドルを宣言したりできる?
サブルーチンに受け渡したりできる?
あと<IN>ってどうなってんだぼけ
0685デフォルトの名無しさんNGNG
入門書さえ買わない春房は、

放 置 で 。
0686デフォルトの名無しさんNGNG
>>685
買ったよぼけ
読んだけどわからねーんだよぼけ
0687デフォルトの名無しさんNGNG
拡張子の配列 @ex = ( 'jpg', 'png', 'sex'); があって
$filename が @ex の拡張子に当てはまるか調べるにはどうすればいい?

制御文はつかわないで。
0688デフォルトの名無しさんNGNG
エッチなアップローダーですよ
http://homepage3.nifty.com/digikei/ten.html
0689デフォルトの名無しさんNGNG
>686 名前:デフォルトの名無しさん 投稿日:03/03/07 07:53
>>>685
>買ったよぼけ
>読んだけどわからねーんだよぼけ

「〜ぼけ」
知り合いに、これと同じ言い方する小学生の子がいたの思い出しました。
育った環境が悪いんですかね。
0690デフォルトの名無しさんNGNG
>>689
スレ内容と関係ないこと書き込むなボケ
0691デフォルトの名無しさんNGNG
>>690
うっかりさん発見。
0692デフォルトの名無しさんNGNG
>>487
#こんどからはもっとよく調べてから質問しろよ。
if (defined(grep (/?Q$filename/, @ex))) {
print "found $filename?n";
} else {
print "not found $filename.?n";
}
0693692NGNG
#俺としたことが、うっかりだ。
$filename =~ s/^.*??.(.*)$/$1/;
#を上に追加しといてくれ。
#内容が破壊されるのがいやなら、前もって待避しとけよ!
0694デフォルトの名無しさんNGNG
質問です。
$_ に含まれた4桁の数字を一行で$numに取得したいのですが、
どのようにしたらいいのでしょうか?

いつもは
$num = $_;
$num =~ s/(\d{4})/$1/;
のように処理しているのですが、もっとPerlらしい「ものぐさ」な方法がありそうなので。
0695694NGNG
すみません。大ボケしたので自己レス。

$num = $_;
$num =~ s/.*(\d{4}).*/$1/;

でした。
0696デフォルトの名無しさんNGNG
($num) = /(\d{4})/;
0697694NGNG
>>696
おおっ、できました! ありがとうございました。
意味はこれから自分で調べてみます。
0698デフォルトの名無しさんNGNG
自分で定義するサブルーチンと、始めから備わっている組み込み(?)関数は別物なの?

たとえばハッシュの要素を grep するとき
grep(length($hash{$_}), keys %hash)
とかで、空の要素を含まない配列がつくれるけど

これを自分で定義して
mygrep(length($hash{$_}), keys %hash)
sub mygrep { ... }
って出来る?

要は 上の grep の引数内の$_の動きが疑問なんだけど
0699 ◆hMJAPH9PWA NGNG
>>698
うん、別物。
第一引数に式を取る形式のgrepはサブルーチンでは再実装できないね。
ただし、プロトタイプを使う事でブロックをとる形式のmygrepは作れるよ。

sub mygrep(&@){
my $code = shift;
my @output;
foreach (@_){
push @output, $_ if $code->();
}
return @output;
}

@dst = mygrep{ length($hash{$_} } @src;
0700デフォルトの名無しさんNGNG
use Benchmark;
を使ってサブルーチンとメソッドの呼び出し速度を比較しようとしたんですが、

use MyClass; my $count = 10000;
my $instance = new MyClass(); # new, method サブルーチンが定義済み。
print $instance->method(); # 期待通り'test'が出力される。
timeit( $count, '$instance->method();' ); # << ここで

Can't call method "testMethod" on an undefined value at (eval 9) line 1.
というエラーが出ます。
さらに、
my $method = sub { $instance->method(@_) }
timeit( $count, '$method->();' );
でも同じエラーが出ます。
もしかしてBenchmarkモジュールでは、メソッドの速度って計測できないのでしょうか?
0701デフォルトの名無しさんNGNG
質問です。
@array=qw(aaa bbb ccc ddd);の時'aaa'を取り出すのは$array[0]ですが、
逆にaaaは配列@arrayの何番目であるかを知りたい時はどうすればスマートですか?
foreach(@array){
last if $_ eq'aaa';
$i++;
}
これじゃダサいよね?
0702デフォルトの名無しさんNGNG
>>684
「ファイルハンドル」はPerlではただのソフトリファレンスされたシンボル。
なので特定のユニークな文字列であればファイルハンドルの変わりに使うこともできる。普通やらんが。

>>700
「メソッド」がどういう仕組みで呼び出されるのか理解できれば、なぜなのか解かるでしょうけど…。
$instance->method(); は
&MyClass::method( $instance ); と実用上はほぼ等価だよ。(クラス継承は出来ないが)

>>701
map や grep を使う手もあるけど、書き方違うだけで遅いことに変わりはない。
むしろハッシュを使ったショートカットを別に用意したほうがはるかに早い。

$member = 0:
$str = 'aaa';
$array[ $hash{$str} = $member ] = $str;

言うまでもなく、これは重複文字列の存在は考慮してないけど。
#LZ法とかを実装するときに使う手。
0703デフォルトの名無しさんNGNG
perlで文法エラーが出て、どこが間違っているかわからないのですが、
間違っている個所がわかるツールとかはないでしょうか?
0704デフォルトの名無しさんNGNG
open(OUT,">$upload_path_name");
flock(OUT, 2);
print OUT "$_";
flock(OUT,8);
close(OUT);

上記のようにflockを使うとファイルに書き込めませんがどうしてでしょうか?
0705デフォルトの名無しさんNGNG
>>703
環境は?
その文法エラーを見れば当たりは付けられると思うんだけど
試しにその文法エラー見せてみ
0706 ◆hMJAPH9PWA NGNG
>>700
Perlのコアや標準モジュールのバグを疑う前に、まず自分が間違ってないかを疑おう。

多分そのエラーはコード文字列をBenchmarkモジュール内でeval()するために、
my変数($instanceや$method)が見えないからだと思われる。

Benchmark::timeit()は、コード文字列以外にサブルーチンへのリファレンスも受け取るので、それを渡せば良い。

timeit $count => sub{ $instance->method() };
timethese $count => {
test1 => sub{ $instance->test1() },
test2 => sub{ $instance->test2() },
};
0707デフォルトの名無しさんNGNG
>>703 と似た質問ですが、
変数の推移が分かるように、
1行づつステップインでデバッグできるツールって
ないのでしょうか。
VC++などのデバッグ環境に甘えてしまっているせいか、
「文法エラーはないが思うように動作しない」という状況になると
手の打ちようがなくなってしまうので……。
0708デフォルトの名無しさんNGNG
>>707
perl -d
http://www-sampei.ctrl.titech.ac.jp/perldoc/perl_19.html
0709707NGNG
>>708
ありがとうございます。
そのページを見てもう少しがんばってみます。
0710デフォルトの名無しさんNGNG
>>704

flock 無しなら問題ないことをチェックした上で、perl -v の出力を
書きましょう。
0711名無しさん@EmacsNGNG
ヤフオクの「マイオークション」とかのログインしないと見られない
ページのデータを収集したいのですがどうすれば良いのでしょうか?

use LWP::UserAgent;
use HTTP::Cookies;
$ua = LWP::UserAgent->new;
$ua->credentials('auctions.yahoo.co.jp','login','username','password');
$ua->cookie_jar(HTTP::Cookies->new(file => "cookies.txt",autosave => 1));

これで"cookies.txt"にクッキーが入ったのでこれを使えばログイン後の画面
を見られるような気がするのですがこれ以上はさっぱり分かりません。
OSはRHL8です。
0712700NGNG
>>706
ありがとう。
これからは標準ライブラリを信じて生きていきます。
0713デフォルトの名無しさんNGNG
Perlからwavなどの音楽は流せないんでしょうか?
流せるならば、その方法をご教授お願いします〜。
0714デフォルトの名無しさんNGNG
>>713

open(OUT, ">/dev/dspW");
print OUT $sound_in_raw_format;

あるいは、Audio::Play を使う。
0715713NGNG
ありがとうございます!
ですが、私はまだ浅学なので、その文が理解できませんでした、、。
具体的な使用例とか書いて下さるとありがたいんですが〜、お願いします〜。
0716デフォルトの名無しさんNGNG
>>715
そういうときは〜CPANで検索〜
http://search.cpan.org/search?query=Audio%3A%3APlay&mode=all
0717713NGNG
>>716
色々あるみたいなんで色々試してみます。
ども!ありがとうございました!
0718デフォルトの名無しさんNGNG
perl4 まではラクダ本は持っていて
理解してるんですが、perl5 からはいった
オブジェクトとかリファレンス関係が
よくわかりません。
web のどこかによい解説ページないですか?
0719デフォルトの名無しさんNGNG
質問です。

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
= localtime(1049619599);
print "$year - ", $mon + 1, "- $mday $hour : $min : $sec\n";
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
= localtime(1049619600);
print "$year - ", $mon + 1, "- $mday $hour : $min : $sec\n";

上のスクリプトを実行すると、下のように表示されます。
103 - 4- 6 1 : 59 : 59
103 - 4- 6 3 : 0 : 0

1049619600 は 1049619599 の1秒後ですから、2行目は
103 - 4- 6 2 : 0 : 0
になるはずなのですが、何が原因なのでしょうか?
また、
$tltime1 = timelocal(0, 0, 2, 6, 3, 2003);
$tltime2 = timelocal(0, 0, 3, 6, 3, 2003);
print "$tltime1 = $tltime2\n";
とすると、
1049616000 = 1049619600
と表示されます。

Perlのバージョンは v5.6.1 built for i386-freebsd です。
0720デフォルトの名無しさんNGNG
>>718

個人的な経験から言えば、perl に附属のドキュメントが一番分かりやすい。
日本語訳は

http://www.harukaze.net/~mishima/perl/man/perlref.1.html
http://perl.infoware.ne.jp/documents/perlboot.ja.html

あたり。
0721夏時間制導入反対NGNG
>>719
サマータイムのせいだろ。

JSTなら、普通にこうなる。
103 - 4- 6 1 : 59 : 59
103 - 4- 6 3 : 0 : 0

君のような結果になる timezone は… っと
% env TZ=US/Mountain perl tmp.pl
103 - 4- 6 1 : 59 : 59
103 - 4- 6 3 : 0 : 0

US/Mountain? アメリカからカキコんでるの?
0722デフォルトの名無しさんNGNG
>>719
103 - 4- 6 17 : 59 : 59
103 - 4- 6 18 : 0 : 0

1049562000 = 1049565600

うちではこうなった。(Windows2000/ActivePerl 5.6.1)
0723夏時間制導入反対NGNG
おっととコピペし間違えた。TZ=Japan の場合の表示はこうね。
103 - 4- 6 17 : 59 : 59
103 - 4- 6 18 : 0 : 0

timelocalの方も、TZ=Japanならこうなる。
1049562000 = 1049565600

TZ=US/Mountainだと、確かに
1049616000 = 1049619600
になるな。
0724719NGNG
>>721 >>722
ありがとうございます!
確認したら確かにタイムゾーンがUS/Mountainになっていました。
(知人の依頼でCGIを作成していたのですが、サーバがアメリカに
置いてあるレンタルサーバのようです)

サマータイムがlocaltimeでどのように実現されているかは知り
ませんでしたので、全く見当がつかずに困っていました。
お答えいただきありがとうございます。
0725デフォルトの名無しさんNGNG
win98 active perl 5.80 で
perl ..\nantoka.pl .\file

fileが .. ディレクトリに移動しちゃうんだけど。
仕様なの? fileは読みこんでるだけです。
0726デフォルトの名無しさんNGNG
5[4]
みたいに表示させようとして
$a=5;
$b=4;
print "$a[$b]\n";

ってやると、$aが配列と判断されるのは言語的にくさい
0727デフォルトの名無しさんNGNG
>>726
漏れは自然だと思うが。
print $a . "[$b]\n"じゃだめなのか?
0728デフォルトの名無しさんNGNG
>>727 に限らず、
print "${a}[$b]\n";
print "$a\[$b]\n";

とか、回避策なんていくらでもあるじゃん

単なるレキシカルアナライザの問題を
言語の問題にすりかえてしまう>>726に乾杯
0729デフォルトの名無しさんNGNG
>>726の理由によりPerlは糞決定!PHPマンセー! By726

(プ PHP知らないくせに)
0730デフォルトの名無しさんNGNG
>729
ttp://member.nifty.ne.jp/hippo2000/perltips/phpperl.htm
ここ見てこい。
0731デフォルトの名無しさんNGNG
>729
Webでしか使えねーPHPとPerlを一緒にすんな。
0732 NGNG
>>731
いや使えることは使えるが。
つーか、糞エサに食いつくのはやめれ。
0733729NGNG
>>730-731
ちょ、ちょっと待ってよ。
726だったらきっとこんなこと言うだろうなって書いただけなのに。
(By726って書いてあるっしょ・・・ちゃんと読んでよ)
0734729NGNG
>>730 そこは知ってます。
0735デフォルトの名無しさんNGNG
空間にn個の惑星が、どの2つの惑星間の距離も全部異なるように位置している。各々の惑星に居る天文学者は、自分と最も近い惑星だけを観測しているとする。この時、nが奇数ならば、どの天文学者にも観測されていない惑星が存在する事を数学的帰納法を使って示して
0736デフォルトの名無しさんNGNG
perl で nslookup をつくるにはどうすれば?
0737デフォルトの名無しさんNGNG
>>736
目的にもよるが、gethostbyname() などを使う。
あるいは use Socket6 しておいて、
getaddrinfo() や getnameinfo() 使うとか。
こまかいことしたければ Net::DNS http://www.net-dns.org/
0738デフォルトの名無しさんNGNG
>>736
単にアドレスを引きたいだけ? なら、gethostbyname()。
0739デフォルトの名無しさんNGNG
>>737
>>738
ありがとうできました。が
自分のアドレス調べるにはどうするんでしょう?
ipconfigとかからもってくるのかな?
0740738NGNG
>>739

意外かも知れないが、それを真面目にやろうとすると結構大変(な筈)。
Unix 系の環境で、ホスト名が与えられていると仮定してよいなら

my $hostname;
chomp($hostname = `hostname`);
my @hostent = gethostbyname($hostname);
my @addrs = @hostent[4..$#hostent];

でいい。Net::Interface が使えれば一番いいが、これは 5 年前の
モジュールで今はまともにコンパイルできない。裏技として、手近な
ホストに接続して getsockname() を使う手もあるが、それをやるぐ
らいなら ipconfig (もしくは ifconfig)の出力を解析する方がまし
かな。
0741デフォルトの名無しさんNGNG
>>739
ていうか、「自分のアドレス」ってのがなんなのか
よく考えてみるんだな。
0742デフォルトの名無しさんNGNG
対話的操作ができないとnslookupとはいえない。
0743デフォルトの名無しさんNGNG
>>741
なんなのよ
0744デフォルトの名無しさんNGNG
ifconfig の出力も OS ごとに微妙に違ったり。ipconfig だとどうだろう。
どちらにせよ NAT の内側だったりすると、用途によっては
簡単にはわからない。
0745デフォルトの名無しさんNGNG
だってIPアドレスって、基本的にはインターフェースに
つけられるものであって……

コンピュータには、インターフェースをいくつもつけら
れるし……

おまけにひとつのインターフェースにIPアドレスをいく
つもつけられもするし……
0746デフォルトの名無しさんNGNG
共有サーバーでの自分のディスク使用量(duの結果)を毎日自分当てにメールさせています。
統計情報を取りたいのですが、perlで抽出出来ないでしょうか?
123main
234 sub1
345 sub2
456 image
OSはWindows,使用しているメーラーはNetscape7.0です。
抽出したいデータはNetscapeのメール形式です。
0747デフォルトの名無しさんNGNG
やってみればいい
0748デフォルトの名無しさん NGNG
PerlとDelphiの違いおしえれ
0749デフォルトの名無しさんNGNG
Perlは関数型言語
Delphiはオブジェクト指向言語
0750デフォルトの名無しさんNGNG
Perlもオブジェクト指向言語です
0751デフォルトの名無しさんNGNG
>>749
区別がめちゃくちゃ。
関数型は lisp とか calm とかだよ。
0752デフォルトの名無しさんNGNG
749 は死滅スレの定番ネタだよ。
元は 「関数型言語の C から、オブジェクト指向の C# に変われば生産性があがるのは当たり前」 みたいな文。
知らないで言ったのか釣りだったのかはともかく、以降何度も引き合いに出されている。
0753デフォルトの名無しさんNGNG
Cは関数型じゃないぞ。構造型だ。
関数型を知ってるのかとことん問い詰め末尾再帰
0754デフォルトの名無しさんNGNG
しゃれたサイトだ
http://homepage3.nifty.com/digikei/ten.html
           ∧..∧
キタ━━━━━━( ´Д`) ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
             '/ / \ __   ̄ ̄ ̄ ̄ ̄ ̄_____
            / /  . \   __     ______
       ,.,..,.、,,,,/ /、,\  . )..,_       /i
      ;' ´Д`(ノ,:、,/ /:,.:::: ::`゛:.:゛:`''':,'.´ -‐i  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      '、 ;: ...: ,:. :.:.:.\ \ _;.;;..; :..‐'゛  ̄  ̄   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       `"゛"゛' ''`゛ `'(___)
0755デフォルトの名無しさんNGNG
>753
>Cは関数型じゃないぞ。構造型だ。
んなの初耳だ。
なんだ構造型って。
最近こういう無知が多いのは、春先だからか。
0756デフォルトの名無しさんNGNG
>>755
> なんだ構造型って。
検索すれば?
0757デフォルトの名無しさんNGNG
構造型プログラミング言語でひっかかるのはここだけなんだが。
tp://yuzu.ee.uec.ac.jp/natu01/PHe1/activities.html

> 完成作品予想図『機械語(バイナリ)』を根っことしたツリー構造型プログラミング言語年表
ってのはなにか違うと思われ。
0758デフォルトの名無しさんNGNG
C言語が関数型言語に拡張されたインターネッツはここですか?
凄い進化だな( ´,_ゝ`) プッ
0759デフャHルトの名無しbウんNGNG
>>757
[構造化言語 C] でぐぐれ

スレ違いなんでそろそろPerlの話に戻そうかねぇ
6っていつ出るのよ?
0760デフォルトの名無しさんNGNG
「手続き型」というフレーズが、いまだ登場しないところがなんとも……

しかし、googleしてみると、C言語を関数型だと思い込んでいる向きはけっこう
あるみたいね。「関数」を使うから関数型だと。ぎゃ〜はっはっはっは。
0761デフォルトの名無しさんNGNG
うげ〜、C言語を構造化言語だとしている向きもあるんだね〜
そりゃ、C言語では、擬似構造化プログラミングを行うのが
普通だろうが……

うわ、よく調べてみると、構造化プログラミングのパラダイ
ムをそもそも知らない連中が、C言語は構造化プログラミング
言語だとか言っているみたいだね。

根腐れ起こしてるね〜、プログラミング世界も。
0762デフォルトの名無しさんNGNG
擬似構造化なんて用語ありませんよ。自分で勝手に言葉作って
定義も無いまま当てはめないでくださいね
0763デフォルトの名無しさんNGNG
>>762
? 「擬似構造化」って用語か?

おまえ、だれかが「擬似昼食」って云ったら、
「そんな用語ありません」って突っ込むのか?
0764762NGNG
>>763
突っ込みますが何か?
0765デフォルトの名無しさんNGNG
構造化プログラミングだけしか出来ない構造化言語は無い。
よって擬似構造化プログラミングをできる言語は構造化言語である。

もし構造化言語なんて存在しないなんて考えなら、現実的ではないが
間違っていないことにしてやろう。
0766デフォルトの名無しさんNGNG
C言語は高級アセンブラ
0767デフォルトの名無しさんNGNG
やっぱ、変数を書き換えられるなんて変だよね。
0768デフォルトの名無しさんNGNG
プログラミングパラダイム論議を始めて、なおかつageするという最悪コンボ。
0769デフォルトの名無しさんNGNG
$"の使い方を教えてください。
0770デフォルトの名無しさんNGNG
elispは手続き型言語でつ
0771デフォルトの名無しさんNGNG
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
★その目で確認すべし!!★超おすすめ★
0772デフォルトの名無しさんNGNG
>>764
リアルでも痛いやつだな
0773デフォルトの名無しさんNGNG
すべての言語がきっちり何々型とか何々指向で
おさまる訳じゃないし、
プログラミングスタイルが伴っていなければ
何型使っても意味ないだろ。

lisp を手続き型的に使うのは簡単だが、
それじゃ言語の特徴を生かせない。
関数型的思考を身につけないと。
0774デフォルトの名無しさんNGNG
>>773
だって遅いもん。リソース食い荒らすもん > elispで関数型なプログラム書くと。

で、これはC言語か〜っていう、笑っちゃうelispのプログラムがそこら中に
満ちあふれているわけ。

パラダイムの他に、フレーバーっていう概念もあったじゃんか、プログラミング
言語/システム/ポリシーなどを特徴づけるものとして。
0775デフォルトの名無しさんNGNG
>>774
再帰関数だけが関数型ではないんではないかと。
let でローカル変数いっぱい作って
setq しまくり戻り値を捨てまくりのプログラムが
早いとは思えん。
0776デフォルトの名無しさんNGNG
みんなプログラマーですか??
0777デフォルトの名無しさんNGNG
>>776
胸の大きさで稼いでいるわけではありません。
0778デフォルトの名無しさんNGNG
Perl6の完成にはParrotの完成が前提なわけ?
それにしても結構悠長にやってるな。>Perl6開発
0779デフォルトの名無しさんNGNG
CRLFがついた行をchompしたらLFだけ取れてCRが残っちまうんですが、
こういうもんなんですか?

使ってみたのはcygwin付属のperlです。
0780デフォルトの名無しさんNGNG
>779
詳しい説明は省くが、
その行をテキストモードで読みこめ。
0781779NGNG
open( FILE ,...);
while( <FILE> )
{
 chomp;

こんな感じですが、バイナリモードにしてるつもりは無いんで、
テキストモードで読んでるつもりです。
0782デフォルトの名無しさんNGNG
>>778
っていうか、みんな期待してるの? Perl6に。
0783デフォルトの名無しさんNGNG
>>782
Parl5すら使いこなせてないのに、Perl6に期待するなんてめっそうもない!
0784デフォルトの名無しさんNGNG
C言語を関数型なんて言ってる能無しがいるなんて始めて知った。
0785デフォルトの名無しさんNGNG
Perl6……むしろ別な名前にするべきなのではないか……
0786デフォルトの名無しさんNGNG
>>784
恐ろしいことに、そう教えている教育機関もあるようでつ。
0787デフォルトの名無しさんNGNG
ググルで、
"C言語" "関数型の言語"
とか
"C言語" "関数型言語"
とかをキーワードにして検索すると結構見つかるね。
それもac.jpドメインだったりして。。どうなってるの?
0788デフォルトの名無しさんNGNG
モウダメポ
0789デフォルトの名無しさんNGNG
perl/tkをwindowsで使う方法を教えてください。
適当な解説ページがあればそれも。

あと、perlでネイティブコードを生成する方法を教えてください。
0790デフォルトの名無しさんNGNG
>789
ActivePerlをインスコする。

Windows用のperlでのネイティブコードって意味か?
0791デフォルトの名無しさんNGNG
>>789
perlcc とか perl2exe(perlexeだっけ?)でぐぐってみそ
0792デフォルトの名無しさんNGNG
>>786
s/教育機関/洗脳機関/;
0793デフォルトの名無しさんNGNG
正式名称がわかりませんので、違う場合にはご容赦ください。

$HASH->{HASH}-{A} = 1;
$HASH->{HASH}-{B} = 12;
$HASH->{HASH}-{C} = 3;
$HASH->{HASH}-{D} = 8;
..
..
$HASH->{HASH}-{Z} = 9;

こんな感じにランダムの整数が入ったハッシュがありまして、
この整数を全て'0'にしたいのです。私は以下のように書いて
みたのですが、もっと良い(簡単な)方法があれば教えて頂け
ますでしょうか。

$HASH->{HASH}->{$_} = 0 foreach keys %{ $HASH->{HASH} };
0794デフォルトの名無しさんNGNG
>>779
$/ = "\x0a\x0d";
とか
$/ = ""
としてもダメ?
0795デフォルトの名無しさんNGNG
>>793
それでいいんじゃないかと思うけど、その他の解として
$HASH->{HASH} = { map { $_ => 0 } keys %{$HASH->{HASH}} };
とか。キーの値がA-Zならこうとか。
$HASH->{HASH} = { map { $_ => 0 } 'A' .. 'Z' };
0796793NGNG
>>795
ありがとうございます。大変勉強になりました。
$HASH->{HASH} = { map { $_ => 0 } 'A' .. 'Z' };
これが凄く気に入ってしまったので、キーの値をA-Zに
変更することに致します。<(_ _)>

後、余り関係ないことで申し訳ないのですが、質問があります。
$HASH->{KEY1} = 1;
$HASH->{KEY2} = 2;
$HASH->{KEY3} = 3;
上記のようなハッシュのスライスは以下のようにして取れるのですが、
@$HASH->{'KEY1', 'KEY3'};
@$HASH->{ keys %$HASH} };

$HASH->{HASH}->{KEY1} = 1;
$HASH->{HASH}->{KEY2} = 2;
$HASH->{HASH}->{KEY3} = 3;
上記のように少し深い構造のハッシュになってしまうと、スライスを
どのように取れば良いのかわからないのです。
0797796NGNG
書き忘れました。
$HASH->{HASH}->{KEY1} = 1;
$HASH->{HASH}->{KEY2} = 2;
$HASH->{HASH}->{KEY3} = 3;
で
$tmp = $HASH->{HASH};
@$tmp{'KEY1', 'KEY3'};
@$tmp{ keys %$tmp };
とかならできるのですが、、
0798デフォルトの名無しさんNGNG
>>796-797
たぶんこれでいけるはず。
@{$HASH->{HASH}}{'KEY1','KEY3'};
@{$HASH->{HASH}}{keys %{$HASH->{HASH}}};
0799796NGNG
>>798
あ、なるほど。理解致しました。ありがとうございます。
0800デフォルトの名無しさんNGNG
2ちゃんのスレッドのソースから名前だけ取り出す正規表現ってどうすればいいですか?
0801デフォルトの名無しさんNGNG
while (/<b>(.+?)<\/b>/g) {print $1,"\n"}
0802デフォルトの名無しさんNGNG
>>801
while (/<b>(.+?)<\/b>/g) {print $1,"\n"}

</b></a>ってのも名前にあげられてしまいます。
0803デフォルトの名無しさんNGNG
>>802
$_に何入れてんのさ
0804デフォルトの名無しさんNGNG
>>801
.*?
じゃないの。

あと、\/b>はいらないと思われ。
0805779NGNG
>>794
あんがと。試して診るぁ。
0806言わぬが華かもしれないけど…NGNG
$/ = "\x0d\x0a"; # Cygwin だと "\x0d\x0a" eq "\r\n" だと思う…。
0807デフォルトの名無しさんNGNG
名前部分のタイプ例
<font color=green><b>デフォルトの名無しさん</b></font>
<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
<a href="mailto:sage"><b>空 </b>◆SORA//9k7. <b></b></a>
<a href="mailto:sage"><b></b> ◆F52DmOxJlc <b></b></a>

一応、これはどう?
while (/<b>([^<>]*?)<\/b>(\s*?◆[^<>]+?)<b><\/b><\/a>|<b>([^<>]+?)<\/b><\//g) {print $1.$2.$3."\n";}
}

>>803
2ちゃんのスレッドのソースだろ?違うか?

>>804
<b>空 </b>◆SORA//9k7. <b></b></a>
みたいなのはそれだとまずいです。
0808デフォルトの名無しさんNGNG
<dt>と<dd>に注目すれば確実性が増す予感…。
0809デフォルトの名無しさんNGNG
スレッドのソースってわけわからんとこに改行がはいってるよ・・・
0810デフォルトの名無しさんNGNG
スレを処理するときはDAT形式のほうがやりやすい。
0811デフォルトの名無しさんNGNG
XML挫折組みが現れ始めたな
0812デフォルトの名無しさんNGNG
×挫折組み ○挫折組
0813デフォルトの名無しさんNGNG
>>806
cygwinを使ってないのでよくわからんけど、
その仕様だとwindowsのテキストファイル(改行=CRLF)を
処理するのは面倒そう。
active perl は "\x0d\x0a" = "\n" でつ。
0814デフォルトの名無しさんNGNG
.*
と
.+?
の違いって何ですか??
0815デフォルトの名無しさんNGNG
use HTML::TreeBuilder;
my $tree = HTML::TreeBuilder->new();
$tree->parse($threadhtml);
foreach my $dt ($tree->find_by_tag_name('dt')) {
print $dt->find_by_tag_name('b')->as_text(). "\n";
}
0816Win98SE ActivePerlNGNG
#!perl -w

use strict;

if( "\r\n" eq "\x0d\x0a" )
{ print 'true'."\n";}
else
{ print 'false'."\n";}

print length( "\x0d\x0a" )."\n";
print sprintf( '0x%02lx' x 2, unpack( 'C2', "\x0d\x0a" ))."\n";

print length( "\r\n" )."\n";
print sprintf( '0x%02lx' x 2, unpack( 'C2', "\r\n" ))."\n";

print length( "\r" )."\n";
print sprintf( '0x%02lx', ord( "\r" ))."\n";

print length( "\n" )."\n";
print sprintf( '0x%02lx', ord( "\n" ))."\n";
--------結果--------
true
2
0x0d0x0a
2
0x0d0x0a
1
0x0d
1
0x0a
0817デフォルトの名無しさんNGNG
>>814
> .*
0文字以上最大マッチ
> .+?
1文字以上最小マッチ
0818779NGNG
cygwinのsetupでExpにして5.8.0をインストールしたら治った。
ただのバグだったのかな?
0819813NGNG
>>816
嘘ですた。解説どうもです。
入出力のときにテキストだと "\x0d\x0a" <=> "\x0a" の
変換が自動的に行われるのです。
ですから $/ も "\x0a"でつ。
0820デフォルトの名無しさんNGNG
すれ立てるまでもない質問スレ 51番 より移動してきました。
http://pc2.2ch.net/test/read.cgi/tech/1047467699/51-55

再掲:
えーとCGI(言語はperl)からCookieの送受信に付いて質問があります。
用語が間違っていた場合にはツッコミを入れて頂けると幸いです。
# 適当なスレが見つかりませんでしたので、
# スレ違いであれば誘導して頂けるとありがたいです。

一度クライアントに保存された後は、環境変数HTTP_COOKIEに入っているの
で簡単に読み出せるのですが、問題はcookieを発行した直後、コネクション
が切れていないタイミングでCGIが吐き出したCookieを、クライアントが正
常受け取ったのかどうか判断する方法ってなにかありませんでしたか?

元々のやりたいことは、CGIプログラムにアクセスしてきたクライアントが、
Cookieの送受信が可能なのかどうかを判断したいのです。最初はJavaScript
で書いていたのですが、これじゃJavaScript非対応のw3mとかに対応できな
くなるので却下しました。
# w3m-js があるじゃん、ってツッコミはできれば無しでお願いします。
0821デフォルトの名無しさんNGNG
> CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
> CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。


って書いてあるのに理解できませんか??
(その上「スレ立てるまでもない」で親切に答えてくれた人がいるってのに・・・)

ってそれだけだとアレですので俺の見解を書いておくと、

「無理です」

Cookie確認CGIに飛ばしたらいい。

Cookieの仕組みとか調べてごらんよ。
ググルで
「netscape cookie specification set-cookie」
とかをキーワードにして検索するんだよ。日本語訳やって公開してるやつもいる
みたいだよ。
0822デフォルトの名無しさんNGNG
>>820
次にアクセスした時に、前に渡したCookieを持ってるかどうか
調べたらいいんじゃ?

Cookieはclientがserverに送ってこそ初めて意味があるわけで、
clientが受けとったかどうかなんて知る必要はない。
0823デフォルトの名無しさんNGNG
それだと一見さんなのか、二度目なんだけどCookie無視した奴なのか
みわけがつかなくて困る、っていう話なんだろうけど、
そういうのはPerlの話ではなくてWebプログラミングの話なので
そもそも板違いなわけです。

こっちのほうがいいと思うよ。→ http://pc2.2ch.net/php/
0824こういった副作用の定義ってされてるんでしょうか?NGNG
my @i = ( 'a', 'b' );
my $i = 0;

if( $i[$i] eq $i[++$i] )
    { print 'true'."\n";}
else
    { print 'false'."\n";}

$i = 0;

if( $i[$i] eq $i[$i++] )
    { print 'true'."\n";}
else
    { print 'false'."\n";}

if( $i eq ++$i )
    { print 'true'."\n";}
else
    { print 'false'."\n";}

if( $i eq $i++ )
    { print 'true'."\n";}
else
    { print 'false'."\n";}

__END__

--------結果--------
false
true
true
false
0825デフォルトの名無しさんNGNG
なんとなーく思ったんだが
Tie::Scalar を使ってデバック出力かければ評価されるタイミングが分かるような気がするな
本物のスカラーと、Tie::Scalar は違うかもしれんし
今ちょっと手が離せないんで試せないけど、誰かやってみない?

Perlの内部を探るのが本筋何だろうけど、そこまでは出来ない(^^;
0826デフォルトの名無しさんNGNG
Perl にかぎらず普通二項演算子の左右どっちを先に評価するかは決まってな
いのでは(&&, || とかを除く)。

0827デフォルトの名無しさんNGNG
perlの比較演算子は非結合だね。
左結合の言語もあったような気がするけど手元に資料なし。
0828デフォルトの名無しさんNGNG
世界で一番不愉快になるネトゲーがココに参上!
ttp://sb-online.genki.co.jp/top.html

アップデートするたびにクソゲーになっていくゲームです!
これでよく月々1800円もとれますね!
Supraなどに乗っている写真が張ってあるから行ってみれば
全然話がちがう! Supraなんてどこにもない!
まさに詐欺! 詐欺詐欺詐欺詐欺詐欺詐欺詐欺
0829 ◆hMJAPH9PWA NGNG
>>824
とりあえず、上二つはeqが左オペランドを先に、右オペランドを後に評価するという事が分かっていれば問題ないよね。

で、下は、Perlの演算/関数呼び出しの引数が参照で渡されるからこうなるんだよ。

$i eq ++$i

これは、$iの参照がeqの左オペランドになり、++$iも(副作用により値は増加しているものの)$iの参照が右オペランドになる。
左オペランドと右オペランドは共に$iの参照だから値も同じで、だから結果は真になる。

$i eq $i++

この式は、左オペランドは$iの参照で、右オペランドは"$iをインクリメントする前の値"の参照になる。
この時左オペランドの値はこの式を評価する前より増加していて、右オペランドの値はこの式を評価する前の$iの値になるよね。

直感とは異なる結果にはなるけど、参照渡しによってコピーのオーバーヘッドを避ける為に、こういう仕様になっているんだろうね。
0830デフォルトの名無しさんNGNG
perlでstopとかquit使った時に
自動でコマンドプロンプトが閉じないようにするにはどこで設定すればいんでしょうか?


0831デフォルトの名無しさんNGNG
stopとかquit
これはperlに標準では存在しない関数なのですが。
0832デフォルトの名無しさんNGNG
STOPっていうのはNECのパソコン、PC9800シリーズのキーボードに
付いてる、ちょっとバネの強いボタンのことだよ。それを押したときの話。
0833デフォルトの名無しさんNGNG
b.pm をつくったのですが使えないんです。
中身を全部コピーして、bbb.pmにしたら使えました。

b.pmというのは何かとぶつかっているのですか?

環境はv5.8.0 built for MSWin32-x86-multi-threadです
0834デフォルトの名無しさんNGNG
>>833
http://search.cpan.org/author/JHI/perl-5.8.0/ext/B/B.pm
こんなの。
0835デフォルトの名無しさんNGNG
ああ、B言語のコンパイラかぁ
納得
0836デフォルトの名無しさんNGNG
%a = (a=>b); この場合のbは単に文字列なの?
0837デフォルトの名無しさんNGNG
>>836
bがサブルーチン定義されてなければ文字列。
されてればその結果。
0838デフォルトの名無しさんNGNG
>>837
引数を受け取るbが定義されてたらどうなんだ?
0839デフォルトの名無しさんNGNG
aとbの名前を持つシンボルは使わん方が……忘れた頃に地獄に落ちるなり。
0840デフォルトの名無しさんNGNG
チャットで、同じ文字が続くと文字を小さくしたいんですが、どうすればいいんでしょうか。

こんにちは!!!!!!!!!!!!!!!  だとか
あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお だとか。
0841デフォルトの名無しさんNGNG
>>839
sort の話しか思いつかないけど、もしかして他にも罠あったりする?
教えて偉い人

>>840
webプログラミング板逝け。
0842デフォルトの名無しさんNGNG
glob() 関数ってなにするかんすう?
0843デフォルトの名無しさんNGNG
>>842
ファイル名のワイルドカード
@c_files = glob("*.c");
とかそんな感じ
0844CGI経験10日の初心者です。NGNG
1ヶ月早く今月初めからコンピュータ会社に入社してCGIの勉強をしているのですが、
以下の問題が全く解くことが出来ず困っていている為、質問しました。
<問題>
あるサイトの管理者は、とあるプロバイダからアクセスし、
違反行為を行っている(荒らし行為を行っている)人に大変困っています。
そこでアクセスログを収集してプロバイダ単位で規制を行うことにしました。
HTMLからCGIを読み込み、
そのプロバイダからアクセスされた方に対してはエラーメッセージを表示させなさい。

・・・で、私なりに調べたのですが、
HTMLの方では<!--#exec cgi="拡張子がCGIファイル名"-->
っていうのでCGIのファイルをアクセス出来るのが分かったのですが、
呼ばれたCGI側の処理が全くわかりません。
($ENV{'REMOTE_HOST'}っていうのでプロバイダ名は収集出来るようですが・・・。)
どなたかプログラムのサンプルを書いて頂けませんでしょうか?
大変恐縮なのですが、ご協力して頂けたら嬉しいです。
また、そのような処理が掲載されているサイトがあれば教えて頂けると嬉しいです。
0845デフォルトの名無しさんNGNG
>>844
Web製作板にきくといいよ。
それと、2chはあんまり役に立たないから、
地道に検索して、専門サイトを巡礼した方がいいよ。
0846さちえLOVENGNG
パスワード解析できるひといる?
0847さちえLOVENGNG
↑の件の話はこのメールで。
0848デフォルトの名無しさんNGNG
>>845
板違い
0849CGI経験10日の初心者です。NGNG
>>845
ご指摘、ありがとうございます。
今までもgoogleなどの検索サイトで検索を行っていたのですが、
いろいろな複数のキーワードで地道に探してみます。
0850デフォルトの名無しさんNGNG
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
http://saitama.gasuki.com/mona/
0851デフォルトの名無しさんNGNG
>>849
ひとつアドバイスしておくと、REMOTE_HOSTを得られるようにしているところは少ない。
0852デフォルトの名無しさんNGNG
>>849
CGIレスキューとかサンプル沢山あるよ。
http://www.rescue.ne.jp/
0853デフォルトの名無しさんNGNG
>>844

> CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
> CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。

って書いてあるんだけど、見えませんか??

それと、>>844に書いてあるようなのはサーバーの設定でやったほうが楽ですよ。
httpd.confとか.htaccessとかですね。
CGIの話でもPerlの話でもないので、Webプログラミング板に行った方が
いいと思いますよ。
0854デフォルトの名無しさんNGNG
彼はPerlスレッドがあったから質問したとおもうんだけど
すまんな・・・俺もPerlは電脳を調べたらわかるんだけど
脳内にはないから教えられないよ。
0855デフォルトの名無しさんNGNG
open(vote,"<vote.log");
@votenum=<vote>;
close(vote);

$votenum[$num] = $votenum[$num] + 1;

open(vote,">vote.log");
print vote @votenum;
close(vote);

これってどこが間違ってるんでしょう?
vote.logを配列@votenumに読み込んで、
$numが3だったら$votenum[3]をプラス1にして、
@votenumをvote.logファイルとして上書きする、という部分なのですが。
お願いします。
0856 NGNG
>>855
コピペミスでないなら、まずはperlの入門書を通読
0857855NGNG
いろいろ調べたし、読んでるんですよ。
お願いだから、教えてくださいよ。
0858デフォルトの名無しさんNGNG
>>857
で、$numってのはどこで出てきたの?
0859デフォルトの名無しさんNGNG
>>857
できあがったvote.logみりゃすぐわかる。
0860デフォルトの名無しさんNGNG
856は的確な答えを教えてくれてるのに
857=855はなんでそんなにえらそうなんだろう。
0861デフォルトの名無しさんNGNG
>>855
よし、初心者の漏れといっしょに考えよう
0862855NGNG
ファイルポインタの問題なのか?と思い、次のように書き直してみました。

open(vote,"+<vote.log");
@votenum=<vote>;
$votenum[$num] = $votenum[$num] + 1;
seek(vote,0,0);
print vote @votenum;
close(vote);

実行結果はおなじでした。
例えば$numが2の場合、$votenum[2]がプラス1されて欲しいのに、
$votenum[1]が$votenum[1]*10+1されてしまいます。1が$votenum[1]の最後の
文字列に加わってしまう感じ。

>>858
$numはhtmlのformから取得されるようになってます。
>>859
すいません。わからないです・・。
>>860
えらそうだなんて侵害ですが、そう思われたのなら謝ります。
>>861
お願いします。一緒に考えてください。

0863デフォルトの名無しさんNGNG
>>862
演算の直後に

$votenum[$num] .= "\n";

って入れてみ。
0864855NGNG
>>863
なるほど、できました!ありがとうございます。

これで投票CGI完成です。
0865デフォルトの名無しさんNGNG
>>862
$votenum[$num] = $votenum[$num] + 0;

$votenum[$num] = $votenum[$num] + 1;
はどうよ。
0866859NGNG
>>864
原因ちゃんと分かったんか?

一応言っとくと、読み込むときには各行に一つの数字でかかれているのに
書き込むときに一行に複数の数字で書いてるのが間違い。
0867デフォルトの名無しさんNGNG
すんませんが、
OOで書かれたサンプルプログラムで分かりやすい解説ついてるのとか
ありませんか?
0868デフォルトの名無しさんNGNG
>>864
書き込む処理の前に
$,="\n";
と入れると幸せかもしれません。
0869855NGNG
>866
そう言われるとわかります。で、\n追加して区切ってやると。
0870859NGNG
>>869 つまり「できあがったvote.logみりゃすぐわかる」でしょ。ガンバ
0871 ◆hMJAPH9PWA NGNG
>>867
perldoc perlbootとか、どうかな。
日本語訳:http://perl.infoware.ne.jp/documents/perlboot.ja.html
0872デフォルトの名無しさんNGNG
スカラー変数に特定条件だけ除外して代入するにはどうしたらいいでしょうか?
0873デフォルトの名無しさんNGNG
>>872
if(条件){$val1=$val2;}
0874デフォルトの名無しさんNGNG
日本語 perl texinfo
http://flex.ee.uec.ac.jp/texi/perl/perl_toc.html
0875デフォルトの名無しさんNGNG
>>873
それだと条件の時のみ代入、じゃないでしょうか?

自分がやりたいのは具体的に・・・
$a = 条件zの一番最初の数字
とした場合
$bに$a以外の条件zを代入、としたいのです。
0876デフォルトの名無しさんNGNG
>>875
?
0877875NGNG
>>875
一番最初の数字
では無く
$n番目の文字
ですね

一番最初なら2番目〜に条件を変更すれば良いだけなので・・・
0878デフォルトの名無しさんNGNG
>>87具体例を示してください
0879875NGNG
自分説明下手ですね・・・

$a = $z;
$zに入るべき文字は二つあり、日替わり

$b = $zの$aに代入されていない方;
0880デフォルトの名無しさんNGNG
日本語で書いてください
0881デフォルトの名無しさんNGNG
$zじゃなくて@zにしたら
0882デフォルトの名無しさんNGNG
$r_arrayって何か意味あるんですか?
0883デフォルトの名無しさんNGNG
>>882
ないぽ
0884デフォルトの名無しさんNGNG
>>882
なにをいきなり唐突に……

配列であることを変数名で明示してるんじゃない?
Perlでは $r と @r は区別されるから、プログラム的な意味はないけど
あくまで分かりやすさということで。
0885デフォルトの名無しさんNGNG
おいらは配列名にarrayは付けないけど、hashrefやarrayrefは付けるよ。
単純なスカラと勘違いして代入しないよう、念のため。
0886デフォルトの名無しさんNGNG
>>885
あ、それ俺もまったく同じ。
配列とかハッシュは目的別に変数名を付けるからちゃんと分かるけど、
リファレンスは区別がつかないからね。
0887デフォルトの名無しさんNGNG
%HASH = ();
$str = 'A=10 B=20 C=30 D=40 E=50';
foreach ( split / /, $str ) {
my ($key, $val) = split /=/;
$HASH{$key} = $val;
}
なんてコードを一行にまとめるとしたらどのようにすればよろしいでしょうか。

my ($key, $val);
map { $HASH{key} = $val, ($key, $val ) = split /=/ } split / /, $str;

なんて書いてみたのですが、、、何か美しく無い気がします。
0888デフォルトの名無しさんNGNG
%HASH = split /[ =]/, $str;
0889デフォルトの名無しさんNGNG
>>888
言葉がありません。ありがとうございます。
0890デフォルトの名無しさんNGNG
>>887
ただハッシュにイロイロ代入するだけだろ?

%HASH = (A=>10, B=>20, C=>30, D=>40, E=>50);

0891890NGNG
かなり下がってるのであげておく。
見にくいけどこんな書きかたも出来る。

%HASH = (A,10, B,20, C,30, D,40, E,50);

AとかBは、クウォートしないとエラるかも。
0892デフォルトの名無しさんNGNG
ファイルから読み込むって話じゃないの?
0893デフォルトの名無しさんNGNG
簡単に済ますときは
%in = split(/[&=]/, $ENV{QUERY_STRING});
とかやる。
0894デフォルトの名無しさんNGNG
>>891
%hash = qw(A 10 B 20 C 30 D 40 E 50);
0895887NGNG
>>890-894
私は極基本的なことを忘れていたようです。
ハッシュへの代入は
%HASH = (
A => 1,
B => 2,
C => 3,
);
と'=>'を使わないとできないと認識していました。

本を読み直すと、
%hash = @array;
は
%hash = (
$array[0], $array[1],
$array[2], $array[3],
$array[4], $array[5],
);
は、全く同じですね。
重ね重ねありがとうございます。>890-894
0896デフォルトの名無しさんNGNG
Perlで読み込んだバイナリファイルを拡張子を頼りにせずに
何のファイルかを判断することってできますか?

※もしかしたらスレ違いかもしれませんが、Perlでやろうと
していることなのでこのスレに書かせていただきました。
0897デフォルトの名無しさんNGNG
頑張れば出来るんじゃねえの?
↓のサイトの人なんか詳しいかもね。

赤の館
http://www.55555.to/
0898デフォルトの名無しさんNGNG
>>896
man file
0899デフォルトの名無しさんNGNG
まー、perlって覚えきれないほど書き方あるからね。
ただ、一番基本形の書き方は必ず2〜3コくらいあるので忘れないようにしよう。
0900デフォルトの名無しさんNGNG
構文砂糖大杉
0901デフォルトの名無しさんNGNG
構文蜜壷
0902896NGNG
レスしてくれた人どうも。
調べてみたらNamazuで使われているモジュールで
ファイルの種類を判別するモジュールがありました。
日本人が作ったモジュールなんですね。すごい。

http://search.cpan.org/dist/File-MMagic/MMagic.pm
0903デフォルトの名無しさんNGNG
ラクダ本買ってきて必死に読んでるところなんですが、
奥が深くて道のり遠そうなんで教えてください。

とあるShift-JISのデータを(日本語を考慮していない)ツールで処理させねばならず、
困ったことにこいつが勝手に文字列を分割しちゃうんです。
"ABCDEFGHIJ" → "ABCDE" "FGHIJ" みたいな感じで。
で、2Byte文字を考慮していないので、変なところで分割されちゃうんですね。
"数を越えて" → "数を越?" "ヲて" ってな風に。

これをなんとか元の文字列に直して、適切な位置で分割し直してやる。
ってことがPerlならできるのかな?って思って調べてるんです。
一応、pack(),unpack()とかjcode.plとか見てみたんですが、どうもわかりません。
ヒントとかポインタとかいただけると助かります。
0904デフォルトの名無しさんNGNG
そもそもperlでは , と => は等価。

このスレのタイトルのPerlも間違いで、perlが正しい。
0905デフォルトの名無しさんNGNG
>>903
考慮していないのなら、考慮すればよい。

よくある解決方法は、前処理として一端データを問題のない文字コードへ変換する。
たとえば日本語EUCやUTF等にだ。
その後必要であれば、元の文字コードへ戻す。

上記の方法が、なんらかの問題により適用できないのであれば
以下の文字コードの後に\を付け加えることにより回避する。

ソ兎浬欺圭構蚕十申會箪貼能表暴予禄噂喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭
−(全角ハイフン)Ы(ロシア文字)�\(ローマ数字の9)

しかし、文字コードを統一せずに処理をしてしまうこと自体に問題があるので
緊急対策的な方法は必ず破綻する。

データを処理する前に、問題の無いデータへ加工することが、最も負担が少なく
(コード別に処理プログラムを作ったり、例外的な分岐を追加せずに済む)また
問題も少なくなる。(コードのみとうしもよくなり、速度も期待できる)
0906903NGNG
>>905さん
早速のアドバイスありがとうございます。

件のツールが処理する元のデータはバイナリ(より正確にはMacのリソース)なんで、
>よくある解決方法は、前処理として一端データを問題のない文字コードへ変換する。
は無理なんです。すみません。

ただ、考え方の方針として「処理前に問題の無いように加工しておく」ってのは
参考になりましたんで、その方向で考え直してみます。
0907デフォルトの名無しさんNGNG
>>906
それって○バイト目で強制的に分割されてるんじゃないの?
0908 ◆hMJAPH9PWA NGNG
>>904
ダウト。
=>は左オペランドが識別子であれば、クォートを省略できる。

スレタイもPerlでいいと思うけど?(Perlが正しく、perlは間違い、とまでは思わないけど)
Perl => 言語
perl => Perlの処理系
0909デフォルトの名無しさんNGNG
もうこのスレもパート4が見えてきたね。
0910デフォルトの名無しさんNGNG
>>908
ダウト
>perl => Perlの処理系
あほすぎ
0911903NGNG
>>907さん
そです。
0912デフォルトの名無しさんNGNG
>>910
人を阿呆呼ばわりするならその根拠を述べろよな。
0913デフォルトの名無しさんNGNG
>>912
反発するまえに調べろよな
0914デフォルトの名無しさんNGNG
>>910
なんでだ?perlはPerlの処理系の一つだろ?
昔どっかで読んだ記憶がある。
perl以外にPerlの処理系はなさそうだが。
0915914NGNG
見つけた。
ttp://www.perl.org/press/glossary.html

Perl
The language itself, as opposed to the interpreter, "perl", with a lowercase "p".

perl
The program which interprets Perl and makes the computer do what it says.
0916デフォルトの名無しさんNGNG
>>903,906
Shift_JISのデータってバイナリなんだ?へー
0917デフォルトの名無しさんNGNG
すみません、とても簡単なことかもしれませんが
煮詰まっているのでご教授願えませんでしょうか?
あるファイル内に下のような記述があり、a〜mまでを
配列としてぬきだしたいのですが・・・

AAA ( a, b, c, d, e,
 f, g, h, i, j,
 k, l, m );
BBB ( n, o, p, q, r,
s, t, u);

chopで改行をなくしてAAA()内の文字列をマッチングさせようと
思ったのですが、どうしても1行目しかとりだせません。
chopしただけじゃだめなんでしょうか?
0918デフォルトの名無しさんNGNG
>917
tr/\n//d

chop は末尾を削るだけ。改行文字を削るなら chomp がよい。
0919デフォルトの名無しさんNGNG
>>917
chopした結果をprintしてみるとかいう基本的なことはやらないのかい?
0920デフォルトの名無しさんNGNG
説明不足の質問かもしれませんが
flock関数が使用できないOSがあると聞いてます
こちらはwin98seでcygwinを使っていますが
この関数は使えますか?
0921920NGNG
ageてしまいました
>>920
の質問は解決しました、どうもすいません
0922デフォルトの名無しさんNGNG
>>921
結果を書いてもバチはあたるまいに。
0923デフォルトの名無しさんNGNG
910、913は負け犬確定(大笑い
0924デフォルトの名無しさんNGNG
ActivePerlのPerl5.8.0で
Encode.pmを使って文字コード変換したいのですがうまく変換してくれません。

jcode.plでの
&jcode::convert(\$text,"euc");
と同じことをするのは

$text=encode("euc-jp",$text);
ではないのでしょうか?
0925924NGNG
自己レスです。
↓みたいにencodeの前にdecodeするとうまくいきました。

$text=decode("shift-jis",$text);
$text=encode("euc-jp",$text);

ただこの場合、decodeの際に元文字コードが分かっていることが
前提になると思うのですが、分からない場合は
元文字コードが何であるかを調べるメソッドってあるのでしょうか?
0926デフォルトの名無しさんNGNG
>>910=>>912の意見が聞きたいところだが。
0927デフォルトの名無しさんNGNG
×>>910=>>912の意見が聞きたいところだが。
○>>910=>>913の意見が聞きたいところだが。
0928デフォルトの名無しさんNGNG
packageをinstallをしようとしています。
# /usr/local/bin/perl -MCPAN -e shell
snip
cpan> install Term::ReadKey
snip
LD_RUN_PATH="" cc -Wl,-E -G -L/usr/local/lib ReadKey.o -o blib/arch/auto/Term/ReadKey/ReadKey.so
/usr/ccs/bin/ld: illegal option -- E
snip
どうも/usr/ccs/bin/ld(Solairs付属ld)には-Eが無いため失敗している
ようです。GNU ld(on my WS, /usr/local/bin/ld)には-Eがあります。
/usr/local/bin/ldを使わせたいのですがやり方が分かりません。
# PATH=/usr/local/bin/ld:/usr/sbin:/usr/bin; export PATH
# LD_RUN_PATH=/usr/local/bin/ld; export LD_RUN_PATH
しようが、
cpan> o conf LD_RUN_PATH /usr/local/bin/ld
しようが、
/usr/ccs/bin/ldを使い続けます。
(Solaris教えてスレッドにも書いてます)
0929デフォルトの名無しさんNGNG
★男はココを見るべし★女と金とサンプルムービー★
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
0930 ◆hMJAPH9PWA NGNG
>>925
Encode::Guessが自動判別用モジュールだよ。

>>928
Config.pmを直接編集するしかないと思うよ。


0931デフォルトの名無しさんNGNG
レンタルサーバーで、
libディレクトリに入っているモジュールのバージョン違いを
自分のディレクトリに入れたのですが、それを優先的に使いたい場合は
どうすればいいのでしょうか?
0932デフォルトの名無しさんNGNG
>>931
use lib PATH;
0933デフォルトの名無しさんNGNG
そろそろテンプレ作成時期かねぇ

--------------
前スレ Perlについての質問箱 3箱目
http://pc2.2ch.net/test/read.cgi/tech/1041205885/

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

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

WEBプログラミング板
http://pc2.2ch.net/php/
--------------

Perl紹介文章はかっこいいの書き下ろしキボンヌ
0934デフォルトの名無しさんNGNG
Perlは世界を滅ぼします。
0935デフォルトの名無しさんNGNG
Cには2次元配列とか3次元配列jってあるけど
Perlにはそのようなものってありますか?
0936デフォルトの名無しさんNGNG
>>935
リファレンス使えばもう何でもあり。
0937デフォルトの名無しさんNGNG
やっぱコムソートがいいよね
0938デフォルトの名無しさんNGNG
やっぱコムドームがいいよね
0939デフォルトの名無しさんNGNG
javaにはガベージコレクターとか、スレッドとかありますが
Perlにはないんですか?
0940デフォルトの名無しさんNGNG
>>939
ある。
0941デフォルトの名無しさんNGNG
>>940
サンプルありますか?
0942デフォルトの名無しさんNGNG

コムソートってなんですか?
0943デフォルトの名無しさんNGNG
>>942
common sort
0944デフォルトの名無しさんNGNG
>>943
あふぉか
comb sort
かなり効率のよいsort
0945デフォルトの名無しさんNGNG
perlのリファレンスが知りたいです。
超分かりやすくて情報量が多いページを教えてください。
0946デフォルトの名無しさんNGNG





          書    籍    代    を    ケ    チ    る    な    よ





0947デフォルトの名無しさんNGNG
>>945
検索しる!
0948デフォルトの名無しさんNGNG
>>945
perlについているのがかなり良い!!
0949デフォルトの名無しさんNGNG

           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) <  2Get!!!!!!! (決まったか?
          /,  /   \______________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
       /  /~\ \
       /  /   >  )
     / ノ    / /
    / /   .  / ./.    (゚д゚) < 兄ちゃんやったね!2ゲットだよ
    / ./     ( ヽ、    ゚(  )−
   (  _)      \__つ   / >
0950デフォルトの名無しさんNGNG
Microsoft Internet Explorer の中止ボタンは確かに
しいたけの傘の部分を上から見たものに見えます。
しかも調理の際、よく熱が通るようにつけるバッテンの
切込みまでもが本物そっくりです。

これは私個人の推測なのですが、IE の作者は実は食通
で朝食で食べる野菜炒めに必ずしいたけを入れるタイプ
ではないでしょうか?

少なくとも冬場のおでんには入れているはずです。

実は、私も中止ボタンがしいたけに見えて、危うく食べ
そうになり困った経験があります。どなたか同じ経験を
お持ちの方、このスレで熱く語りませんか
0951デフォルトの名無しさんNGNG
perlにGCなんてあるわけないじゃん(ww
0952デフォルトの名無しさんNGNG
ありますよ。
0953デフォルトの名無しさんNGNG
>952
明示的に動かせたっけ? 
っていうか明示的に動かす必要に迫られたことないような。
0954デフォルトの名無しさんNGNG
>>953
明示的には動かせねぇよ。
しかるべきときに勝手に動く。
0955デフォルトの名無しさんNGNG
>953
っていうか明示的に動かしてもしょうがないのでは?
0956デフォルトの名無しさんNGNG
finalizerを走らせたいとか、長時間動くスクリプトでsleepに入る前にできる
だけ余分なリソースを開放したいとか。
0957デフォルトの名無しさんNGNG
>>956
>finalizerを走らせたいとか、
は別にどうでもいいが、
>長時間動くスクリプトでsleepに入る前にできる
のはりソースの厳しいマシンだと嬉しいかも
0958デフォルトの名無しさんNGNG
ActivePerl5.8でDBD::ODBCをPPMインストールしようとしたら
できませんでした。
search DBD::ODBCしてもリスト出てこなかったよー。
0959デフォルトの名無しさんNGNG
http://search.cpan.org/author/JURL/DBD-ODBC-1.05/
0960 ◆vZrORbBkXs NGNG
ファイル書き出しのコマンドは何でしたっけ?
print?? "文字列" -"ファイル名"
だった記憶があるんですが誰か教えて下さい。
0961デフォルトの名無しさんNGNG
氏ねgoogle
0962デフォルトの名無しさんNGNG
>960
open(FILEHANDLENAME, ">filename") || die "Can not open file for output:$!";

binmode(FILEHANDLENAME); # if you output binary data

print FILEHANDLENAME "hogehoge";

close(FILEHANDLENAME);
0963 ◆vZrORbBkXs NGNG
>>962
ありがとうございます!!
0964 ◆vZrORbBkXs NGNG
>>964
ファイル書き出しする事に前のファイルの中身が消えてしまうんですけど
前の中身を消さずに追加していく方法はありませんか?
お願いします
0965デフォルトの名無しさんNGNG
アリマス。
0966 ◆vZrORbBkXs NGNG
どうやるんですか?
教えて下さい
0967デフォルトの名無しさんNGNG
>>966
まずは、君が調べてみたのか?
調べたのならどう調べたのか書いて見れ
話はそれから
0968 ◆vZrORbBkXs NGNG
>>967
ここは質問スレですよね?
私がスレ違いならば帰ります
0969 NGNG
>>968
帰ってください。お願いします。
0970 ◆vZrORbBkXs NGNG
冷やかしは止めて下さい

>>962さんお願いします
ファイルの中身を消さずに追加していく方法を教えて下さい
0971デフォルトの名無しさんNGNG
調べれば数分でわかることをいちいち訊くのはどうなんだろうか。
0972デフォルトの名無しさんNGNG
>>968
質問スレだからどうだっていうの?
とりあえずヒントはたくさん与えてもらってるんだから、あとは検索ぐらいできるでしょ。
1から10まで教えてもらってばかりいちゃ、何も身につかないよ。
0973デフォルトの名無しさんNGNG
>>966
perldoc -f open or die
0974デフォルトの名無しさんNGNG
>>964
では、教えてあげよう
まず、perlでファイルを扱うためにはopenすると言うことはわかるだろう?
そして、君がしたいことはファイルの内容を消さずに内容を追加しながら書き込む方法だろ?
この二つを検索条件にして検索してみるぞ

検索クエリー例
「perl open 追加 書き込み」

これをgoogleにでも投げて見れ
君の求める答えは出てきたと思わないか?

この程度のことが自分ひとりで出来ないならプログラミングをするのをやめれ
0975 ◆vZrORbBkXs NGNG
あなたの言う通りでした
申し訳ありませんでした

open(FILEHANDLENAME, ">>filename") || die "Can not open file for output:$!";

binmode(FILEHANDLENAME); # if you output binary data

print FILEHANDLENAME "hogehoge";

close(FILEHANDLENAME);

こうすればいいんですね
あってますか?
0976デフォルトの名無しさんNGNG
>>974
おいおまえ!
この前コマンドプロンプトの起動のさせ方覚えたばっかしの初心者に、
そんな難しいこと言うんじゃねぇよ。
そもそも、googleって何だよ?クエリーって外国人の名前か?
専門用語連発するんじゃねぇよ。わけ分からん。
0977デフォルトの名無しさんNGNG
>>976
氏ね。>>974は何も間違っちゃいない。
0978デフォルトの名無しさんNGNG
>>975
合ってます
0979デフォルトの名無しさんNGNG
>>962
演算子の優先度の関係上、 or を使う方がよい。
|| と or は働きは同じだが前者は優先度が非常に高く後者は非常に低い。
open(FILEHANDLENAME, ">>filename") or die "Can not open file for output:$!";

>>975
実行してみればすぐに分かる。おそらく君の意図通り動く。
いずれにせよ、openみたいな基本的なコマンドを
「うっかり忘れました」なんてみえみえの嘘ついてる時点で好感度最悪。
「優しい」解答なんか返ってくるはずがない。

>>976
お前誰?
0980デフォルトの名無しさんNGNG
GCを継承する方法をおせいてくろさい
0981デフォルトの名無しさんNGNG
>>968
スレ違いじゃないよ。住む世界が違う。
君にぴったりなのは小学校か中学校だ。大抵優しく教えてくれる。
本当に小・中学生なんだったらすまんな。プログラマの世界は義務教育じゃないんだわ。
0982デフォルトの名無しさんNGNG
指摘するのはかまわんが、蔑むのはどうだろうか。
「プログラマの世界」なんていうのはそもそもないわけだし。
0983デフォルトの名無しさんNGNG
>>982
まあそうなんだけどさ。
プログラムって手取り足取り教えてもらうものか?
それで本当にプログラムができるようになるのか?
自分では一切調べないで人に全部書いてもらってプログラムしてるって言えるのか?

もし他人に全部書いて欲しいんだったら、スレ違いだろ。
WebProg板に改造してもらえるスレとかあった(ような気がする)からそっちじゃないか。
0984デフォルトの名無しさんNGNG
教えて君が来たら誘導するのが筋だわな
0985デフォルトの名無しさんNGNG
>>984
サンプルと称して、perlで書かれたブラクラCGIを踏ませたりとか?
0986デフォルトの名無しさんNGNG
この辺か?
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

このスレでも自分で全く何一つ調べようともしないやつははじかれてるみたいだけど。
運が良ければ何もしなくてもプログラム作ってもらえるかもしれないけど確率は低い罠。

◆vZrORbBkXs はこっちへ行く方がいいかも。
↓DQN用のスレ。
WebProg 初心者の質問 Part3
http://pc2.2ch.net/test/read.cgi/php/1045091733/
0987デフォルトの名無しさんNGNG
>>986
> ↓DQN用のスレ。
> WebProg 初心者の質問 Part3
> http://pc2.2ch.net/test/read.cgi/php/1045091733/

ワロタ。すんごい電波がゆんゆん飛んでますな。
0988Mr. Moonlight ◆r0zx1vMqaw NGNG
次スレ
http://pc2.2ch.net/test/read.cgi/tech/1048519394/l50
0989デフォルトの名無しさんNGNG
WinXPマシンにActive perl インスコしたんだけど、CGIの文法チェックしようと思ったら、
XPのディレクトリ半角スペースあるんすけど、これ%20じゃだめじゃないすか。
どうやったら、マイドキュメント内のCGIファイルの文法チェックできるようになりますか?
0990nobodyさんNGNG
>>989
\でエスケープすればいい
0991デフォルトの名無しさんNGNG
そっか。サンクス
0992962NGNG
>979
詳しい解説ありがとう。 
0993デフォルトの名無しさんNGNG
人に教えるのは自分のスキルアップにもつながるので、
うざく無い限りは教えるようにしている。

新人に教えるときにも参考になるしね。
0994デフォルトの名無しさんNGNG
新スレ立ててくれ。
0995デフォルトの名無しさんNGNG
ごめん。間違えた。もう立ってた。
0996デフォルトの名無しさんNGNG
996
0997デフォルトの名無しさんNGNG
Perlについての質問箱 4箱目
http://pc2.2ch.net/test/read.cgi/tech/1048519394/
0998 ◆vZrORbBkXs NGNG
もう来ねえよヽ(`Д´)ノウワアアアアアン
0999 ◆vZrORbBkXs NGNG
もう来ねえよヽ(`Д´)ノウワアアアアアン
1000 ◆vZrORbBkXs NGNG
もう来ねえよヽ(`Д´)ノウワアアアアアン
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。