Perlについての質問箱 3箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001Mr. Moonlight
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
0002Mr. Moonlight
NGNGプログラミング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. Moonlight
NGNGperldoc というコマンドがあります。 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. Moonlight
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1033688230/l50
0005デフォルトの名無しさん
NGNG今回のテンプレートはなかなか格好いいかも:-)
0006デフォルトの名無しさん
NGNG$str<<__EOM__;
あいうえお
かきくけこ
さしすせそ
__EOM__
print $str;
(このソースはエラーが出ます)
こんな感じで、複数行を変数に直接代入する方法ってありませんでしたか?
あったような気がするんですが、思い出せないので…
0007デフォルトの名無しさん
NGNG$html = <<__EOM__;
でOKでした。
実は
$str = "あいうえお
かきくけこ
さしすせそ"
printf("%s\n", $str);
なんてことも可能。
0010デフォルトの名無しさん
NGNG>エラー出ない
他の言語では普通アウトだから奇異かもしれないね。
ヒアドキュメント演算子はぶっちゃけ「“〜”」を
指定文字列でオーバーライドするものだと思えばいい。
なので逆にオーバーライド“しない”>>8の例も可能な仕様かと。
余談だがこんなのもアリ。読み難いコードになるだけだが…。
print <<EOF; print <<EOF; print <<EOF; # 改行前なら何個でも定義可
abc
EOF
def
EOF
ghi
EOF
__END__
0011デフォルトの名無しさん
NGNGprint <<EOF,<<EOF,<<EOF
abc
EOF
def
EOF
ghi
EOF
これでも行けるよ
0012デフォルトの名無しさん
NGNG001310
NGNG>>11
もちろん、カンマ区切りのが一般解。
この場合はセミコロンで区切ったマルチステートメントでも効果が生きるって
意味も持たせたかったので冗長化して見たんですよぅ。出来心ですぅ(;;
(カンマ演算子区切りだと1つの式になるけど、マルチなら複数の独立した式だし)
0014デフォルトの名無しさん
NGNGageeeeeeee!!!!
たとえば $#{$array[$n]} とか scalar(@{$array[$n]}) とか。
0017デフォルトの名無しさん
NGNG例えば
$string = "国語辞典\n英和辞典";
print "$string";
とすると、出力は「国語辞典\n英和辞典」となってしまうわけですが、
\nで改行させるにはどうすればいいんでしょうか?
001817
NGNGそれおかしい。
0020デフォルトの名無しさん
NGNG> $string = "国語辞典\n英和辞典";
この時点で改行が入ってるはずだが。
002117
NGNG実際の状況はちょっと違っていて、\nを含んだ文章が書かれているファイルから、
各行を配列に読み込んで改行文字取り除いて、別のファイルに出力した結果が「国語辞典\n英和辞典」なんです。
もうちょっと考えてみます。
0022デフォルトの名無しさん
NGNGprint eval qq("$string");
002317
NGNG0024デフォルトの名無しさん
NGNG元文字列中にダブルクウォートがあるとヤバイ事態になる気がするんですが…?
元文字列がSJIS/JIS7でなければ、
$str =~ s/\\n/\n/g;
で、充分に通常の用途では事足りると思う。
evalを使うなら「"」と、変換に無関係な「\」は要エスケープだと思う。
ただしSJISの場合はnの前の\が、漢字コードの2バイト目でない事を確認する必要あり。
(\\nはリテラルな\nである、といったエスケープ定義も必要になったりすると面倒だが)
0026デフォルトの名無しさん
NGNG1.XHTML遵守の、ネストしたリストタグを簡単に作れるモジュールに心当たりがあったら教えてください。
2.CVSを使うための、あるいは、簡易CVSとして使えるモジュールに心当たりががあったら教えてください。
3.POE::Component::IRCの日本語訳が存在するか否かを教えてください。
0027デフォルトの名無しさん
NGNGごめん、どれも心当たりない
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGあと、HOGE::FUGAってモジュールで、ファイル名がFUGA.pmでCPANにあったりするけど
そのままのファイル名でuseするだけで使えるの?
requireしてから?
さっぱりだよ
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGサーバーアプリを作りたいので適用なモジュールを探しています。
0032デフォルトの名無しさん
NGNGWEBサイトの「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#ファイルの配置。
#ModuleTest.pl
#HOGE
#HOGE/FUGA.pm
#in ModuleTest.pl
use lib qw(.); #カレントディレクトリをモジュール検索パスに追加。
use HOGE::FUGA; #requireしてimportするのと同じ。これで使えるYO!
0034デフォルトの名無しさん
NGNGPerlICE(IDE)便利そうですね?
WinCE以外、つまりWin2kでも動作するIDE環境ありませんか?
コマンドプロンプトとエディターの往復にうんざりしていたところです。
0035デフォルトの名無しさん
NGNGWin2KならMeadow+Cygwinを使うとPerlのIDEになるよー。
0036デフォルトの名無しさん
NGNGCPANに登録済みなら、CPAN.pm(perl -MCPAN -e shell) でインストールする。
(ActivePerlなら ppm)
独自のライブラリの場合は@INCの指すところに格納するか、
use FindBin;
use lib $FindBin::Bi
0037デフォルトの名無しさん
NGNGスマソ。訂正&追加。
呼び出すperlソース(?)と同じ場所に置くなら、
use FindBin;
use lib $FindBin::Bin
(perl クックブックより)
0038デフォルトの名無しさん
NGNG鯖を変えたけど、モジュールのインスコを禁止されているわけなんだ。
そのモジュール自身も他のを読んでいるし、
徹底的にガムバッテみるよ。
0039デフォルトの名無しさん
NGNG外部プログラムは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パスとパラメータを ? でつなげば良いと思う。
$cmd = 'perl /home/.../gaibu_hoge.pl?parameter=3\&second=abc |';
0041デフォルトの名無しさん
NGNGそれだと、? で繋げた分全てをPerlプログラムのパスだと認識するようで、
コマンドライン上でも親プログラムからの呼び出しでも、
動作すらしなくなりました。
ごめんなさい。
0042デフォルトの名無しさん
NGNGわからん、hoge.pl をサブルーチン化して require してはだめですか?
004339 & 41
NGNG>>42
ありがとうございます。ヒントになりました。
一応、わかりやすさを重視して、
hoge.pl の中身をモジュール化して、
hoge.pl と親プログラムの両方から呼び出すことにします。
お手数お掛けしました。
ありがとうございました。
0044デフォルトの名無しさん
NGNG呼出側の親プログラムがApache等から起動されたCGI環境下で
動いている場合はその子プログラムもCGI環境内、ってことになる。
この場合、CGI.pmは環境変数などをチェックした結果
“コマンドラインからの起動ではない”と判断するかも。
>>40 がアウトになる理由は、open関数内で
起動されるシェルで'?'が処理されるから。
0046デフォルトの名無しさん
NGNG「表」のように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$str=~s/表/表\\/;
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG?:は3項演算子。
$b = 3は式。式全体は無視され、先頭に立ってる$b(項)が評価される。
($b = 3)は式を()で括っているから項、よって中の式が評価される。
0052デフォルトの名無しさん
NGNGいろいろ探っては見たのですがなかなか解決には至っていません。
どなたか有効な情報をお持ちの方はいらっしゃいませんか?
本当に困っているのでアドバイスをいただけると大変ありがたいです。
よろしくお願いします!!
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGちょっと誤解を招く表現だな。>…式全体は無視され…
$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ってなんなの?
特別な変数?
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGダイナミックスコープ(local)とレキシカルスコープ(my)
localは同名のグローバル変数を一時的に退避し、
局所変数として別途変数を作成する。そこから呼ばれた
ルーチンにおいてもそのlocal指定された変数は有効。
myはC,C++,Javaなどの関数内ローカル変数と同じ。
そこから呼ばれたルーチンには、その変数は見えない。
Perlのメインルーチンがmainというパッケージに収まって
いることを考えると全ての変数はデフォルトでlocal変数と
見ることができる。
ただしこれらは変数名シンボルに対するスコープであって、
メモリ上のオブジェクトはそれとは別に参照カウントに
よって維持管理されている。だからC,C++ではご法度と
されている、ローカル変数のポインタ(Perlではリファレンス)
を関数の戻り値に使うようなことは、Perlでは何も問題がない。
0061デフォルトの名無しさん
NGNG実現は、JavaやPerlにはないということです。C#/.netにはあるとも
聞くけどどうなんだろう。
0062デフォルトの名無しさん
NGNGhttp://yahooo.s2.x-beat.com/linkvp/linkvp.html
0063デフォルトの名無しさん
NGNGstrict.pm 読め。
>>58
「Perl」は言語としての Perl を指す。
「perl」は Perl インタプリタのバイナリを指す。
…というのが何かに載っていた気が。
0064デフォルトの名無しさん
NGNG{
my $foo;
sub sub_a { $foo使う }
sub sub_b { $foo使う }
}
みたいにして、複数の関数にまたがるスタティック変数(C的表現)が使えるね
特定の関数からのみ参照可能なグローバル変数(嘘臭い)と言った方が直感的かな
0065デフォルトの名無しさん
NGNGC言語のauto変数もそうなんだけど、「ブロックの先頭で宣言」なのに
なぜかあんまりやらないんだよなー。キモチワルイからかな。
いるところだけブロックで囲ったほうが見通しはいいしリソースも節約できて最適化も
期待できていいような気がするんだけど。
「関数の先頭」って思い込んでいる香具師が多いのよね〜。
0066デフォルトの名無しさん
NGNG結び付けられた固有の変数になります。まさにレキシカル。
(ファイル全体が無名ブロックで囲まれてるのと同義)
#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サンクスです。またまた勉強になりました。
0068デフォルトの名無しさん
NGNG下の例は分かるけど、実際そんな使い方するの?
普通、サブルーチン内で定義したサブルーチンを、そのサブルーチン外から呼ぶことはしないものだと思ってたし。
(main で定義された sub_a, sub_b をmain外から呼ばない)
# サブルーチンの動的生成とかは除いて
もし、そうするなら グローバル変数(use vars) をlocal 宣言すると思うんだけど。
純粋な疑問、意味分かんないや。
# もしかして、単にダメな例?
0069デフォルトの名無しさん
NGNGサブルーチン内ローカルサブルーチン定義が必要な場合、
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デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG了解っす。
main() の中から sub_a() を呼べば、ちゃんと sub main{}なレキシカルスコープの$foo が渡されるけど、
($fooがそう評価されない例で)わざわざ外から呼ぶのは何故?
と疑問に思ったんです(^^;
> つまり“一般常識として”内部関数に直接触らない自主規制は可能だが、
> インタプリンタ実行レベルでは規制されていない。
Perlのこういうところが好き :)
「立ち入り禁止の札」ってヤツですね。
0072IP記録実験
NGNGhttp://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デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGこ
そ
も
お
人
世
ど
こ
お
断
0075デフォルトの名無しさん
NGNG| {レヽ〈:::~``'' ´ ソ |! l } ミ. ミ ト
レヽ,;:::''''`':;|;il~,. -‐' ル )ノl / ミ ノr^,ヾ !
ゝ l;ュ=≡{., (;;,(ニ===、-.l! li /ソ ;;)|./
`!;ェ‐・オ ""'''< `・ーz'ー'~ |/ フ;;i |! <重くなるのはなあ・・・
|:'""`')' ^ヽ;` ̄,. -‐'^ i|;;;;ノ/\ー-、-.,_
!;:.. .:;i| ;, ~、´ ,/ |,..ノ; \ ゝ ヽ``)、.,_
``ヽ(__,,,,...) \_,,..-' |;;; |〉 トli ヽ
|::::::::J..,,_ ^ヽ, : 1, ;!;: /l、 ) |
ヽ::r,―--一' . , il/::: :: / ! ; /
.//'i`ー-'´; ' ;. ',/;;;::::: .:::::∧ } ヽイ
/ / L.;_';_._,`.ノ
0076デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 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デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGの使いかた教えてください。
0079デフォルトの名無しさん
NGNG%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デフォルトの名無しさん
NGNGhttp://live2.2ch.net/test/read.cgi/news/1042129229/
昨日のニュー速の書き込みがニュースに
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG国境を越えた各国警察の合同捜査により
逮捕
0091デフォルトの名無しさん
NGNGuse Win32::Clipboard;
@lines = ("aaa", "bbb", "ccc");
foreach (@lines){
$clip .= "$_\n";
}
Win32::Clipboard::Empty();
Win32::Clipboard::Set($clip);
print Win32::Clipboard::Get();
コマンドプロンプトで$clipを出力してみると期待通りなんですが・・。
どうすればいいんでしょうか?
0092デフォルトの名無しさん
NGNGWindows環境なんだったら、改行コードが違うんでねぇの? \r\n にしてみたら?
0093デフォルトの名無しさん
NGNG\r\nにしたら解決しました。ワーイ
ありがとうございます。
0094デフォルトの名無しさん
NGNGメルマガまってるよ。
0095デフォルトの名無しさん
NGNGワラタ
0096デフォルトの名無しさん
NGNGスクリプトをBATファイルに埋め込んで(perldoc.bat見たいにね)
実行させたとき、エディタの改行設定をLFにしてたもんだから
cmd.exe/command.comがトチ狂ったことがあった。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG通常なら他人に知られないんじゃないの?
0099デフォルトの名無しさん
NGNGもし鯖管理者以外に知られるとしたらプライバシー漏洩だけどね。
逆に、Apacheのアクセスログすら取ってなかったいままでのほうが、
運営管理責任とわれかねないヘタレっぷりなんだけど?(^_^;
#仮に内部ハッキングされてもサパーリ気付かなかったはず<証拠がないから
だから検察に証拠提出能力がないって責められたんと違う?
0100デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0101デフォルトの名無しさん
NGNGmake IP >renew.
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG> >荒らしとか犯罪のためなの?
> そす。
ヲチ板のいくつかのスレなどには、名誉毀損などで確実に刑法に抵触する行為、
つまり犯罪行為が溢れているが、まだ放置するのか?
事件化した場合、削除権者も、幇助に問われる可能性もあるが?
なぜ、あそこにトマトを導入しないのか?
0104デフォルトの名無しさん
NGNGただ、差別の非差別による差別やタブーに付いて、一般人が気軽に話せる
場所がなくなるのは勿体無い気もするなぁ。
0105デフォルトの名無しさん
NGNG$code = x41;
と、してASCIIと対応させてアルファベットを取得するのでしょうか?
全然上手くいきません(;´д`)
0106デフォルトの名無しさん
NGNG$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";
0108デフォルトの名無しさん
NGNGもし「連続するアルファベット名の変数名」を一括初期化
したいとかそーいうお望みだとアレなので、
{
no strict;
my @name = "A".."Z"; #変数名
my @code = 0x41..0x5A; #初期値(数値)
for my $n ( @name ) {
eval sprintf( "$%s=%s;", $n, shift @code );
}
print $A;
普通やらないケド。
0109デフォルトの名無しさん
NGNGeval sprintf( "$%s=%s;", $n, shift @code );
変数の値での変数名は・・・
${$n} = shift @code;
とするのが一般的かな。・・・蛇足でごめん。。
0110デフォルトの名無しさん
NGNGゴミだね、あんた。
人間の。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG$line =~ s/abcabc([0-9])/ffffff$1/; ・・・・・�@
するとffffff2 が結果として出ますが
この文字列置換の部分を
$src = abcabc([0-9]);
$dest = ffffff\$1;
$line =~ s/$src/$dest/;
のように変数として動的に扱いたいのですがヤッパリ無理でしょうか?
変数生成時には$1が評価されないので文字列として$destに格納して
�@と等価の処理をしたいのですが(´・ω・`)
0113デフォルトの名無しさん
NGNG$line = 'abcabc2';
$src = 'abcabc';
$dest = 'ffffff';
$line =~ s/$src([0-9])/$dest$1/o;
print $line;
>ffffff2
・・・??
0114デフォルトの名無しさん
NGNGレスどうもです。
$line =~ s/$src([0-9])/$dest$1/o;
のように書いてしまうと ([0-9]) $1の部分は固定になりますよね?
ここも動的にしたいのです。
0115デフォルトの名無しさん
NGNGなるほど。。
eval(sprintf("\$line =~ s/%s/%s/o",$src, $dest));
0116デフォルトの名無しさん
NGNGあ、oオプションは無くても可だス
0117デフォルトの名無しさん
NGNG蛇足にも1つ。。
0118デフォルトの名無しさん
NGNGまさに、コレです、期待通りの処理を行うことが出来ました
ありがとうございました。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGグモッチュチュイチュイチュイーーーーーーーーーーーーーーーーーーーんチュイチュイチュイチュイ――ン
罵ッゴんばっこんばっ婆ッゴんばぎゅブギュ罵ぎゅぎゅきゅ ぼごんぼごんぼごんぼごん
跋扈ン跋扈ン跋扈ンバッカンバッカン馬鹿馬鹿婆きゅうううーー
ギュ気ギュ気ギュ気いい疑義一ギいいっ ギュぎゅうぎゅううう ぶじゅぶじゅぶじゅ
ききっーーぃ きい ゴットン
となって、ミンチ轢肉になって成仏してしまったそうです。
尚、貨物はフルパワー・全快で走行していた長い編成だったので、凄まじい勢い
で轢断・繊断(物性物理学の運動エネルギー・車輪とレールの轢断機により)され
15歳の中3は、肉片と化したそうです。
お気の毒ですが、この肉片は荼毘に附して、灰にし、土に帰します。あしからず
ご了承くだされい。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG具体的には次のような感じです。
----------------
@array = (
[x,x,x,x...],
[x,x,x,x...], ←この行に含まれる要素の個数を取得したい
[x,x,x,x...]);
---------------------
print @array[1];とかやると、要素の数ではなくて参照が表示されるんで、
もうひとひねり必要なのかと...
おねがいします
0125デフォルトの名無しさん
NGNGprint scalar(@{$array[1]});
こうかな?
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGPerlをexeにコンパイルする方法ってどうやるのでしょうか
知り合いにお願いされたのですが、わからなくて・・・
0129デフォルトの名無しさん
NGNGperl2exeというプログラムで出来たような・・・
0130デフォルトの名無しさん
NGNG実行ファイル化するには、
perlcc -o hello -o hello.pl
詳細は perldoc perlcc で。
0131124
NGNGうまく表示できました。ありがとうございます。
自分なりに解説書やインターネットで調べてはいたのですが、
どうも多重配列って評判が良くない&説明が少ないようでした。
(「要するにハッシュ使え」というオチが多い)
はっきりした理由は解りませんが....。またよろしくです。
0132デフォルトの名無しさん
NGNGPerl2exe
PerlApp(PDK)
Perlcc
0133デフォルトの名無しさん
NGNGVC++でも駄目だった。
また、どの方法も実行速度は速くならないようです。
0134デフォルトの名無しさん
NGNG計算がメインのプログラムなら早くなるかもね。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG同じだと強弁してみようとすれば、おのずと違いはわかります。
0140デフォルトの名無しさん
NGNG>自分なりに解説書やインターネットで調べてはいたのですが、
>どうも多重配列って評判が良くない&説明が少ないようでした。
思考せよ! 思考せよ!!
0141デフォルトの名無しさん
NGNG音を出すのにはどうすればいいんでしょうか?
いわゆる単純なBEEP音程度でも鳴らせられればと
思ったのですがそれらしき機能が見つけられずに悩んでます。
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNGお答えありがとうございます。
・・・・・・・・ちょっと、自分の知識の無さが情けなくなってきました・・・・・・・・
一から勉強しなおします。
0145山崎渉
NGNG0146(^^)
NGNG0147デフォルトの名無しさん
NGNGWin32::Printerとかないかなぁ。
0148デフォルトの名無しさん
NGNGactiveperl 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勘違いはしてないけど、上部の[DOWNLOAD]のtarファイルなら、readme も
ついているはずだし、そっちをダウンロードしたほうがいいとおもうよ
0150デフォルトの名無しさん
NGNGwxPerl経由だとWin32ネイティブで印刷出来るらしいよ。
ActivePerlのWin32モジュールに印刷関係見当たらないですね?
ぼくも知りたいので、見つけたら教えてね。
0151148
NGNGはい、そっちの[DOWNLOAD]から落としてきました。
でも中にはreadmeなくて…。
0152デフォルトの名無しさん
NGNG今 手元に無いんでファイル名忘れたんだが
ActivePerlには、専用のパッケージマネージャが付いてるはず
ActivePerlインストールしたディレクトリ探してみれ
(apm だか ppm だか、そんな名前だったような気が)
それ起動して
>install HTTP::Lite
ってやりゃ、自動的に入れてくれるよ(多分
もしかしたら
perl -MCPAN -e 'install HTTP::Lite'
も使えるかもしれない
0153デフォルトの名無しさん
NGNGppm2 install HHTP-Lite
詳しくはactiveperl 5.8.0 Build804 をインストールした
ディレクトリのhtml/index.htmlを開き、ActivePerl FAQの
Using PPMを読め。
英語がわからんなどと泣き言はいうなよ。
0154デフォルトの名無しさん
NGNGs/HHTP/HTTP/
0155デフォルトの名無しさん
NGNG0156麻雀大好き
NGNG0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGネットワーク対戦プログラムならコードが小さく収まるし
他にも応用がきくと思うんだが。
0159148
NGNG助言ありがとうございました。
ppmコマンドプロンプトで
ppm> install Lite.pm
って打ってたので出来ませんでした。正しくは
ppm> install HTTP-Lite
ヘルプ読んだら一発…。お恥ずかしい限りです。
0160デフォルトの名無しさん
NGNG暗号を復号時にうまく変換ができません。
どうも変数に入っているバイナリデータ(\0を含む)の
受け渡しがうまくいってないようなのです。
サブルーチンへバイナリデータを受け渡すいい方法って
ないでしょうか?
# それともどうしようもないのかねぇ・・・
0161デフォルトの名無しさん
NGNG画面に表示される方を変数に入れたいのですが・・・
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGここでボヤクより、駄目な場合をテストスクリプトにして
MCryptの作者に直接メールした方が早いんではないかい?
0164デフォルトの名無しさん
NGNG$name = qx( hostname );
0165160
NGNGうーむ。やはりそうですね。
メールしてみまッス
0166デフォルトの名無しさん
NGNG変数でgrepするスクリプトを書いてみましたがうまくいきません。
どうすればいいでしょうか?
0167デフォルトの名無しさん
NGNGどう書いてどう動かないのか。
やる気はございますでしょうか?
0168166
NGNG>>167さま
@logにログを入れた後
$a=<>;
@output = grep /$a/,@log;
と言うような感じで@outputに出力しようと考えていました
0169デフォルトの名無しさん
NGNG別段問題ない気がするんだけどな。……あー。
chomp $a;っていれたらいいんでないかしらん。
0170デフォルトの名無しさん
NGNGそれイイ!! 禿しくワラタ。
>>168
>>169のとおりですが、パターンの中が変数じゃないと困るけど、1回代入したら変更なし、という
時は、後ろに /pattern/o とつけてやると少し速くなりますYO。
0171山崎渉
NGNG0172デフォルトの名無しさん
NGNGprint $res->content;
とやると、何故か改行一つが改行二つになってしまいます。
なんで?
0173デフォルトの名無しさん
NGNGOSの名前くらい書け。
MS-WindowsならLF->CRLFになるからCRLF->CRCRLFになる。
0174デフォルトの名無しさん
NGNGfor ( @ARGV ){
if( $_ =~ m/-test/ ){
print "TEST MODE\n";
}
}
これよりもスマートに行けるかな?
0175デフォルトの名無しさん
NGNGuse Getopt::Long;
0176デフォルトの名無しさん
NGNGどうしたらいいですか?
読みにいったページ内のアンカータグとイメージタグのURLを
絶対パスに変換して保存させたいんです。
(URLを抽出するなら変換するメソッドもURL::URIあたりに
用意されてるみたいなんですが。)
0177デフォルトの名無しさん
NGNG$r->base
0178デフォルトの名無しさん
NGNGHTTP::Response#base
0179デフォルトの名無しさん
NGNGどのモジュール使えばいいのでしょうか?
0180デフォルトの名無しさん
NGNGWin32::EventLog
ファイルを監視出来るのかは知らない。
Win32モジュールはWindowsでしか動作しない。
0181デフォルトの名無しさん
NGNG勝手に展開しちゃう件はガイシュツでつか?
かなり糞な不具合だと思うんだけど。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG分かり難くてスマソ。環境変数「Path」が、元々は、
「%SystemRoot%\system32;%SystemRoot%;・・・」
と環境変数を使って値が設定されているのに、ActivePerlのインストーラが
Perlのパスを追加するときに、既存の値の中の環境変数を展開しちゃって、
「X:\Perl\bin\;C:\WINNT\system32;C:\WINNT;・・・」
と設定しちゃう。
build62xの頃のインストーラは問題無かったハズだけど、何故にあとから
こんなバグ組み込んじゃったんだろ。
0184デフォルトの名無しさん
NGNGインストールの中では、環境変数とかPathの設定をさせないようにして
後で自分の趣味に合わせて勝手に設定したらどうよ。
俺はいつもそうしてる。
0185デフォルトの名無しさん
NGNG>馬具とはいえんだろ。仕様の変更か、お宅がOSを変更したかだな。
OS変更してません。Win2000で再現可能です。
もし仕様変更としても、こんなアホな仕様にする必要性が理解できません。
つーか単純に、環境変数展開の考慮漏れでしょ。
>インストールの中では、環境変数とかPathの設定をさせないようにして
>後で自分の趣味に合わせて勝手に設定したらどうよ。
そりゃーこの現象に気が付いていれば、インストール後に直してやるなり対応は
可能だけど、気が付かない人はまずいでしょ。
ちなみに>>184は、これまでにこの現象、知ってましたか?
0186デフォルトの名無しさん
NGNG環境変数の
%SystemRoot%\system32〜
が
?:\windows\system32〜
に置き換わるって言っているのか?
同じくBuild633でwinXP環境だけど全然置き換わっていないぞ。。
0187Mr. Moonlight≠184
NGNGでもま、バグなんだろうけど%SystemRoot%なんて
実際のトコ変わることなどなさそうだし、
あまり神経質に気にしなくてもよさそうな気がするよ。
0188デフォルトの名無しさん
NGNGXPでつか。こんど検証してみます。
>>187
>でもま、バグなんだろうけど%SystemRoot%なんて
>実際のトコ変わることなどなさそうだし、
>あまり神経質に気にしなくてもよさそうな気がするよ。
まあね。
でも%SystemRoot%以外の環境変数も展開されるし、気をつけないとまずいかなと。
客先の既存環境に導入するようなケースもあり得るだろうし。
0189デフォルトの名無しさん
NGNGWinXP Proクリーンインストールしてサービスパック等は入れない状態で
試してみたけど、Win2000と同様に展開された値になりました。
0190デフォルトの名無しさん
NGNG?
ActivePerlをインストしてあるXP2台と殆どなにも入れていないXPで
環境パスはなにも変わっていないよ
0191184
NGNG納得するかも?って書いたんだけど甘かったな。まっ、本家にブー垂れたら?
と逝っても、もう、633はサポートしないだろうけど。
http://bugs.activestate.com/ActivePerl/query.cgi
0192デフォルトの名無しさん
NGNG0193恵理@言問橋
NGNG0194デフォルトの名無しさん
NGNG氏寝予、おめー
0195デフォルトの名無しさん
NGNGどっか書いてあるの?
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG$VERSION = 1.00;
ってどういうこうかがあるんですか?
0200デフォルトの名無しさん
NGNGrequire は実行時に検査される。
useはコンパイル時に検査される。
--
print "hoge";
require Hoge::Fuga;
--
だと、 "hoge" が出力された後に エラー(Hoge/Fuga.pm がねぇよ)を吐くけど
use にした場合は、実行する前にHoge::Fugaがチェックされて、
無い場合は実行されない(hogeも出ない)
更に use は import() を自動的に呼ぶ
嘘臭い説明するとこんな感じ。
更にインチキな説明をすると
「Perlモジュールとして作られ物(.pm) はuse そうじゃないなら require」
>>199
そのスクリプト(モジュール)のバージョン設定だよ
0201デフォルトの名無しさん
NGNGある処理をあてるにはどういう流れですれば良いでしょう?
今までは "perl -i.bak script /hogehoge/*.txt" とかやって
いたんですが、流石にちゃんとした検索がしたくなったので・・・
0202デフォルトの名無しさん
NGNGUNIX なら find を組み合わせた方が UNIX 的で美しいですが。
いかがでしょう?
find /hogehoge -name "*.txt" -exec cmd.pl {} \;
0203デフォルトの名無しさん
NGNGC:\>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デフォルトの名無しさん
NGNGglob() 多少手が込んだ事やるなら File::Find
0205デフォルトの名無しさん
NGNG激しく使えません。
0206デフォルトの名無しさん
NGNGあ、ActivePerlのです。
0207デフォルトの名無しさん
NGNGopendir(DIR,".");
@d=readdir(DIR);
closedir(DIR);
for(@d){print("$_\n")if($_=~/\.txt$/);}
これで如何?
0208デフォルトの名無しさん
NGNGステータスなどの管理を「ユーザー名.dat」などのように、
ユーザー個別のファイルで行いたく、新規登録時にファイルを作成させたいのですが
とほほなどを見ても、それらしきコマンドが見あたらず、困っています。
mkdirはディレクトリだし・・・
こういうときはどうすれば良いのでしょう?
0209デフォルトの名無しさん
NGNGネット上の資料だけで安くあげるのではなく、きちんとした参考書を買う。
0210デフォルトの名無しさん
NGNGのように'>'のようにリダイレクトを使う
リダイレクトは他にも'>>','<','+<'等あるので調べてみそ
0211デフォルトの名無しさん
NGNG趣味でやるには高すぎるっす(;´Д⊂
>210
それで出来たんですね!
存在しないファイルはエラーになるって思いこんでました。(つД⊂)
有難う御座いました!
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNGがんがってくれ
皮肉じゃなくて高い目標を持つのはいい事だよ
0214デフォルトの名無しさん
NGNGがんがってくれ
皮肉だよ高過ぎる目標は挫折の元だよ
0215デフォルトの名無しさん
NGNG最初はプログラミングのことは全くわからないタダのオサーンで、
いろんな人にプログラミングのこと聞きまくって勉強してPGP作ったらしいね。
目標が高いのはいいんだけど、ほんとうに真剣に打ち込める目標でナイトね。
0216山崎渉
NGNG0217208
NGNG他の趣味にお金かけますよw
>213
ども! がんがります!
>214
・・・( ´・ω・)
>215
ジマーマン(・∀・)イイ!!
久々に出会った、やってて楽しい作業なので
まだしばらくは大丈夫です!
0218213
NGNG皮肉に決まってんだろ
0219208
NGNG/⌒ヽ)
i三 ∪
〜三 |
(/~∪
三三
三三
三三
0220214
NGNG高い目標を持つのはとても良いことだよ。
ただ一気に目標に向かうのはダメで、
その目標に達するために何が必要か細分化する必要がある。
まずは、その細分化された問題を解決する小さなプログラムを作ってみてはいかが?
それができてからだんだん大きくしていけば良いよ。
がんばれ!
0221デフォルトの名無しさん
NGNGa.txt、b.txt、c.txt、d.txt、e.txt
の内容と照らし合わせ。default.txtの内容に合致する
*.txtにカウントを1ずつ増やす、というのを高速に行う
にはどうしたらよいでしょうか?
forkで子プロセスを生んで並列に処理すればいいのでしょうか。。
とは言ってみたものの、へっぽこなのでわかりません。。
どうかご教示下さい。お願いしますっ
0222デフォルトの名無しさん
NGNG0223208
NGNGヽ( ´∀`)ノ >220 今はただ足下を固めるばかり♪
へノ / 構想の一割にもキテナイ♪
ε ノ がんがるよ!
>
0224デフォルトの名無しさん
NGNG玉袋が冷えすぎると魔王が蘇えるから気をつけてね。
それがあの人の遺言だから。あまり無下に扱って欲しくない。
たましい。その。
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGファイルハンドル。
INって名前の(ファイル専用の)変数に、"a" が入ってると思えばいいよ
open(IN,'a.txt')
$data = <IN>;
close(IN);
'a.txt'の別名と考えると分かりやすいかもしれない
てかドキュメント嫁
0227デフォルトの名無しさん
NGNGperlでwindowsのアプリケーションとかを動かすように作れますか??
0228デフォルトの名無しさん
NGNG作れます。
0229227
NGNGなんか良いHPほ教えていただけませんでしょうか??
0230デフォルトの名無しさん
NGNG最初からそう言えば?もったいぶってないでさ。
system
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG(?:(?!foo).)*
含まないものにマッチするってどういう意味?
マッチさせて含んでいたら、非0を返せばいいんじゃないの?
そういうのとはちがうんか?
0233デフォルトの名無しさん
NGNGsystem関数ではwaitしてしまうし、exec関数では元プログラムが終了してしまいます。
返り値は必要としてないので、一方的に起動させるだけということはできないのでしょうか?
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGforkしたあとに子プロセス側からsystemを呼べってこと?
0236デフォルトの名無しさん
NGNGa.pl:
open(TEST, "|b.pl");
print open 'test';
close(TEST)
b.pl:
while($line=<STDIN>) {
printf"$line";
}
としても何も表示されません。
パイプのデータの受け渡しが間違ってると思うのですが、
ぐぐっても分かりません。どうすればいいのでしょうか。
環境はwindows2000+ActivePerl最新版です
0238デフォルトの名無しさん
NGNGsystem( 1, "command ..." );
とやるとバックグラウンドプロセスを立ち上げ可能。
先頭の引数が1なのがミソ。
UNIX で system( "command ... &" ) とやるのとほぼ一緒。
>>236
open(TEST, "|b.pl");
print open 'test'; # <== これは何?
close(TEST)
○ print TEST 'test';
0239デフォルトの名無しさん
NGNGそれだけだったら、あんまり意味無いけど
否定条件で組み合わせると役に立つ
例えば、HTML読み込んで
<a HREF="〜">
の部分だけ取り出したいとき
(普通はまぁ リンク文字列 </a> も取り出すだろうけど)
/<a.*?>/ # ここで言明使っても良いけど
で出来るが、<a NAME="〜"> みたいに、NAMEを含んでいるタグは要らない場合
/<a(:?(!?NAME=".*?").)*?>/
ってやると
<a HREF="〜"> はマッチするが、<a NAME="〜"> はマッチしない。
寝惚け頭でかいてるが、何とか察してくれ
# ついでに↑の正規表現間違ってるような気がするから当てにしないでくれ
0240236
NGNGすいません、書き込みミスでした。
正しくしても、標準入力から読み込んでも空になります。
b.plは動きはするのですが。
activeperlではうまくパイプが働かないのでしょうかね。
0241デフォルトの名無しさん
NGNG>それだけだったら、あんまり意味無いけど
めっちゃ意味あるだろ・・・
0242239
NGNG(?:(?!foo).)*
すまん、正規表現あんまり詳しくないんでこれに驚くほどの意味は有ると思えん
それこそ !~ /foo/ でいいじゃねぇかと思う。
否定言明だけで意味ある例解説キボンヌ
0243デフォルトの名無しさん
NGNG次の行へ移る、なんてことは無理?
0244デフォルトの名無しさん
NGNGおいおい、、(?:(?!foo).)* ≠ !~ /foo/ 全然違うYO
0245238
NGNG>正しくしても、標準入力から読み込んでも空になります。
ああ、そういうこと…。
Cygwin 環境下でちょっと試したが、確かにundefになるね。
最初はバッファフラッシュをやってないからだと思ったのだが
select( (select(TEST), $| = 1)[0] );
それとも少し違うようだし。
cat を対象コマンドにするとちゃんとパイプ内容が渡ってるのが確認できる。
#実際 fly.exe とか sendmail.exe がちゃんと動かせるんだし(^^;
そもそも素でSTDINから読めばコマンドライン入力待ちになるのだから、
パイプ先の b.plで <STDIN>がundefを受け取ってくるのが何故なんだろう。
#らくだ本に関連項目あった気がする。IPC::Open2 の出番かもしれない。
>>243
実行前にコメントアウトしとくのはだめなの?
ブレークポイントで任意の位置で中断することはできるけど、
リスタートはその位置か、ファイル先頭からしかできなかった記憶。
0246238
NGNGopen(TEST, "| perl b.pl"); # <== ちゃんとコマンド名で叩く
select( (select(TEST), $| = 1)[0] );
print TEST "test\n";
close(TEST);
きちんと perl.exe 経由で起動すればパイプ繋がるわ。
#! 行に頼るとダメっぽい…。
0247デフォルトの名無しさん
NGNG0248243
NGNGなるほどコメントアウトするしかないですか。
わりと長めのトレースの途中でコメントアウトしなきゃいけない行に
気付いたときになんとか出来ないだろうかって思ったもので。
ありがとうございます。地道にやってみます。
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>>247
>239でも>232でもないが
何となく全く同じではないというのは分かるんだが、
こんな時に使うという解説キボンヌ
0251デフォルトの名無しさん
NGNGどんな方法でも構わないのなら、
正規表現でも出来る。
0252251
NGNG例えばこんなの
$_= 1234567890;
() while s/^(\d+)(\d\d\d)/$1,$2/;
print;
> 1,234,567,890
0253デフォルトの名無しさん
NGNGピリオドが抜けてまっせ
0254デフォルトの名無しさん
NGNGしょーもない指摘するくらいなら自分で書け!
my $a = 1234567890.1234;
1 while $a =~ s/^([^\.\D]+)(\d{3})/\1,\2/;
print $a; # > 1,234,567,890.1234
0255デフォルトの名無しさん
NGNG何興奮してんの?
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG・・・アフォだな。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGところで、なんか面白そうなモジュール無いかい?
便利なのでもいいし、遊び甲斐があるのでも良いし
0262デフォルトの名無しさん
NGNG図星のときはヘタに言い返さないこと。さらに馬鹿に見えるよ(w
0263デフォルトの名無しさん
NGNGhttp://search.cpan.org/author/SIMON/rubyisms-1.0/
0265デフォルトの名無しさん
NGNGそれは間違ってる。>>257は俺だ。
0266251
NGNG何故わざわざ変数名省略したのに戻す必要がある?
まぁいいや。
0268デフォルトの名無しさん
NGNGActivePerlのヘルプを見る。GUIしたければperl/Tk。他のWinアプリを制御したければ
Win32::OLE。
「perlの小技」でぐぐってみ。
0269デフォルトの名無しさん
NGNGすんません
むずかしすぎてわかりません
もうすこしwかりやすくおねがい
0270イヌ
NGNGgetc()では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
0272bloom
NGNG0273デフォルトの名無しさん
NGNGclose(list);
@xx;
} # END OF SUB
0274249
NGNG>>251
>>253
ありがとうございます。返事遅れてすみません。
要するに、文字列置換する以外無いということですね。
perlのprintfって、sprintfを呼び出して更にC言語の
sprintf(3)を呼び出しているのかと思っていたのですが
違うようですね。(ソースは難解なので追いきれません)
それではC言語で以下のような場合は、perlだとどうすればいいのですか?
printf("%'015.3f\n", 1234567.89);
001,234,567,890
宜しく御願いします。
0275デフォルトの名無しさん
NGNGすいているときに重い処理を許可するという分岐ができると思いますが、
ロード状況の把握方法の説明がある場所ってどこかありますか。
0276デフォルトの名無しさん
NGNGprint 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$load = (split(" ",`w`))[適当]
くらいしか思いつかん。
モジュール探せばあるかも
0278271
NGNGレスが遅れましたが、ありがとうございます。
たった2行置き換えるだけで直るなんて.....。
(でもなんでだろう?)
0279デフォルトの名無しさん
NGNG<q cite="http://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html">
サブルーチンの戻り値は、
そのサブルーチンで最後に評価された式の値 です。
</q>
0280デフォルトの名無しさん
NGNGreturn (@xx);
で明示的に戻り値示せば混乱しなくなると思うよ
0281デフォルトの名無しさん
NGNGcloseとかの関数も「値の評価」がされるんだよ。
0282271
NGNG重ね重ねありがとうございます。
サブルーチンで配列の受け渡しをすることに成功して
プログラムもすっきり作れるようになりました。
(いままではメインのなかに何個もループを作っていました)
100G以上のデータに処理を駆けて整形する作業をしているのですが
こういう知識は必須ですね。御陰で残業が減りそうです。
0283デフォルトの名無しさん
NGNGでかいデータなら、配列じゃなくて配列へのリファレンスを渡すが吉
0284デフォルトの名無しさん
NGNGsub _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文字列で返すんじゃなくてハッシュ使え
データがあるヤツだけ、return用のハッシュにコピーすれ
0286デフォルトの名無しさん
NGNGsub _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< $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言葉足らずで申し訳ありません。>>286 氏のコードの通り、
print _routine();
として呼び出したいのです。
>>286
ありがとうございます。とてつもなく勉強になりました。大感謝です。
>>287
> return join '', map "$_: $self->{$_}\n", sort grep length $self->{$_}, keys %$self;
ぁぁ、、これですコレ、私の求めていたものは。
美しすぎて失禁しそうでつ。(嬉泣
0289デフォルトの名無しさん
NGNGWin32:APIを使っているのですが、メモリハンドルが返り値としてある
APIをCallで呼び出すと一般保護違反で止まってしまいます。
ドキュメントには特に動くサンプルも、動かない旨も書いていないようです
もし知っている方いらっしゃったら教えてください
0290デフォルトの名無しさん
NGNGハンドルの値は、Pにして $xx="\x0" x4;なんていう値を最初にいれておけば
動くようになりました。
でも、メモリハンドルの内容をどうやってPerlに渡したらいいのかわかりま
せん。RelMemoryCopyではないようだし…。
コールバックもこの調子なら動きそうなのですが、こちらももしご存知の方
いましたら教えてください。
0291デフォルトの名無しさん
NGNGhttp://www.perlmonks.org/index.pl?node_id=82429
0292デフォルトの名無しさん
NGNGぜんぜんちがウ
0293デフォルトの名無しさん
NGNG$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デフォルトの名無しさん
NGNGmy $files = [<$hoge->{DIRNAME}/*>];
とかしてみたのですが、サックリとエラーになります。
これってなにか良い方法は無いモノでしょうか。
と、これを書いている最中に思い出しましたが
glob() なんてモンがあったようななかったような。。。
0295294
NGNG自己解決しましたので、一応ご報告を。
my $files = [glob("$hoge->{DIRNAME}/*")];
0296デフォルトの名無しさん
NGNGopendir($dirname);
みたく、スペースのあるディレクトリを認識したいのですが
$dirname = "\"c:\Program Files\"";
opendir($dirname);
等やてみてもだめぽです、perlではスペースのあるディクトリ名
は使えない罠でしょうか?
0297デフォルトの名無しさん
NGNGシングルクヲートでいけるんじゃない?
0298デフォルトの名無しさん
NGNG$dirname = "c:\Program Files";
opendir(DIR, $dirname);
readdir(DIR);
......
スペースのせいでだめぽではない罠。
0299デフォルトの名無しさん
NGNGfor ('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"c:\\Program Files";
---^^---
0301298
NGNG普通は>300のようにすべき
0302デフォルトの名無しさん
NGNGNarrationBBSというのがものすごく気に入って自分のサイトに
設置しようと思い、CGIについて理解しようとネットを駆け巡り
5時間が過ぎました。CGIについては全くの初心者ですが、
一通りの設置の流れや、やらなければならないことは理解した
つもりです。で、いまだにCGIをちゃんと使えるようになって
いないのですが、どなたか助けていただけませんでしょうか。
現在の進行状態としては、プロバイダー(地域のCATVでCGI利用可確認済み)確認、
目的のCGIのダウンロード、プロバイダーに指定された内容の「.htaccess.txt」
ファイルの転送、パスの変更後CGIファイルの転送とパーミッションの設定、
ホームページのトップからCGIへのリンクを作成。
と、こんな感じなんですが、リンクをクリックすると、ダウンロードしますか?の
確認メッセージがでてきてしまい、CGIを動作させられません。
0303302
NGNG他に何か必要な情報がありましたら指摘お願いします。あと、質問なのですが
以下のプロバからの注意事項に書いてある、転送するときのパーミッションを
644にしろというのは、.htaccess.txtファイルのパーミッションを変更しろと
いうことでいいのでしょうか?.cgiや.datファイルのパーミッションは、配布元の
設置の説明に書いてあったものにしたのですが。
【CGIプログラムの利用にあたって】
CGIファイルの拡張子は「.cgi」として下さい。
まず、弊社がご提供している「public_html」ディレクトリの中に「.htaccess」と
いう名前のテキストファイルを転送する必要があります。
※Windowsをお使いの方の場合、OSの制限により「ピリオド(.)」で始まるファイル名を
付けられないため、仮に適当な名前を付けてファイル転送し、転送先のファイルの名前を
「.htaccess」に変更して下さい。
テキストファイルの内容は以下のように記述して下さい。
# .htaccess
AddHandler cgi-script .cgi
転送するときにパーミッションを「644」にして下さい。
0304デフォルトの名無しさん
NGNGサーバ上のお望みの場所で .htaccess という名前のファイルが
パーミッション 644 で存在していれば OK.
以降は
http://pc2.2ch.net/test/read.cgi/php/1041530204/
に振って。
0305302
NGNG0306デフォルトの名無しさん
NGNGWindows userか?標準添付されているftp.exeでプロバイダの
自分のディレクトリにアクセスしてchmodでファイルの
パーミッションを644に変えればいい。
というのは、ちょっとかったるい。
0307デフォルトの名無しさん
NGNGついているFTPソフトを使っています。転送形態もちゃんとテキストモードに
なっていることを確認しました。パーミッションの変え方はFTPソフト上で
右クリでファイル指定してかえるだけなので簡単なんです。
・・・で、なんでリンクをはるとDLされるようになってしまうんだろう。
しかも「開く」選択してみたら、cgiファイルの内容が丸見え。どうすれば・・・
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG>>304が誘導してるのになんであんたらレスをつける?
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGML で顕著だが、答えが簡単な質問には回答者がうようよと涌く。
0313302
NGNG0314デフォルトの名無しさん
NGNG311 :デフォルトの名無しさん :03/02/03 12:36
願い下げだ。
0315デフォルトの名無しさん
NGNGa-b a-c b-c
と表示させるにはどうすればよいでしょうか?
@abc配列にいれて、
@abc[i]-@abc[i-1]
とループさせるとa-b b-c となってa-cができません
うまく表現できないのですが、どうかお願いします
0316デフォルトの名無しさん
NGNGこんなんでどうですかね。
@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デフォルトの名無しさん
NGNG4つの時ちゃんと動かないよ
foreach $i (0 .. ($#abc-1)) {
foreach $j (1 .. $#abc) {
print "$abc[$i]-$abc[$j]\n" unless ($i >= $j);
}
}
0318デフォルトの名無しさん
NGNG@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>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見てて面白い
0321デフォルトの名無しさん
NGNG$str = "1#a2#BC10#0123456789"
を ("a", "BC", "0123456789")
というふうに(長さ0 . '#' . 文字列0 . 長さ1 . # ...)配列にたたきこみたい
のですが、
/^(\d)\1$/ が二つの同じ数値から成る行にマッチすることから類推して
$str =~ s/^(\d+)#(.{\1})//;
としてみたのですが、$2は切り出したい文字列にマッチしてくれません。
今はsubstr()でやっていますが、そうするしかないのでしょうか。
0322デフォルトの名無しさん
NGNGだが319は318を写してるだけだし、インデントもできないDQN。
DQN同士でどんぐりの背比べ。
おっと、また316に怒られちまうぜ (藁)
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG$_ = my $str = '1#a2#BC10#0123456789';
my @str = ();
s/^(.{$1})//, push @str, $1 while s/^(\d+)#//;
print "$str => (@str)";
データ構造が糞だとコードも糞にならざるを得ない好例か。
0325デフォルトの名無しさん
NGNGa-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> データ構造が糞だとコードも糞にならざるを得ない
あんた良い事言うな
いつか使わせてもらうよ
0327デフォルトの名無しさん
NGNG外部モジュール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";
0329デフォルトの名無しさん
NGNGDL速度を制限するにはどうすればいいんでしょう?
0330315
NGNGまだperl始めたばかりですが、これを参考に精進いたします。
0331デフォルトの名無しさん
NGNG316=322のアホウの真似はしちゃあ、いけないよ。
0332327
NGNG実験しておらず、かなり不安なんですが。
まず、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
0334デフォルトの名無しさん
NGNG長さが決まってるなら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の言うとおりデータ構造は悪いと思う・・・
0335327
NGNG> $str = "1#a2#BC10#0123456789"
10年以上前に設計された基幹システムとの
インターフェース開発を、
今回、321さんが任されてるのかな。
こういうデータ構造を見ると、
そんな気がします…
0336デフォルトの名無しさん
NGNG大きなファイルを 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();
0338336
NGNGperl -e 'use encoding "iso-2022-jp"; scalar(<>);'
とやるとセグメントエラーもしくはバスエラーが発生する(FreeBSD と Linux
で確認)理由が分かる人居ますか?バックトレースを取ると
Perl_sv_recode_to_utf8() で無限再帰しているらしいんですが。
あと、perl-5.8.0 で入力エンコーディングの自動判別をする方法はありますか?
0339327
NGNG補足ありがとう。
>>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";
0341nobodyさん
NGNG>while ($s->read($line, 8192) > 0) {
これだと相手が細切れに送ってくる場合、抜ける可能性あり。
>>338
>perl -e 'use encoding "iso-2022-jp"; scalar(<>);'
Jcode MLで聞いた方が早い。
0342336
NGNGありがとう。それが欲しかったんです。
# perljp, Encode, Encode::JP あたりのドキュメントに書いておいて欲しかった。。
>>341
ええっ。IO::Socket の read は fread() による実装なので
> while ($s->read($line, 8192) > 0) {
これで問題ないと思っていたのですが、抜けが出ますでしょうか。これまでに
上の実装で何GBも転送してきて、特に問題が起きたことは無かったのですが…。
0343デフォルトの名無しさん
NGNG@はわかるんですけど
0344デフォルトの名無しさん
NGNG配列へのリファレンス
man perlref あたりを参考に
0346336
NGNGえーと、まだちょっとよく分からないのですが、HTTP/1.1 の Persistent
Connection まわりの話でしょうか? 確かに HTTP/1.1 の場合は
Connection: close
ヘッダを送らないとまずいと思います。(もっとも、Connection ヘッダを入れ
なくてもサーバのタイムアウト後 fread() が最後の断片を返すので、抜けは
まず発生しないと思いますが。)
0347デフォルトの名無しさん
NGNGRFC 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.
0349デフォルトの名無しさん
NGNGってなにかありませんか?
0350デフォルトの名無しさん
NGNG取り出すのにスマートなやり方ありませんか?
0351350
NGNGみたいに正規表現の方が簡単なんだけど、
今回はHTML::Parserでやる方法が知りたいです。
0352デフォルトの名無しさん
NGNGたとえば、ファイルを読みながら入力を待つような感じのやつを
0353デフォルトの名無しさん
NGNGmy $tree = HTML::TreeBuilder->new();
$tree->parse_file('a.html');
my $title = ($tree->find_by_tag_name('title'))[0]->as_text;
0354327
NGNGuse HTML::TokeParser;
$p = HTML::TokeParser->new(shift||"index.html");
if ($p->get_tag("title")) {
my $title = $p->get_trimmed_text;
print "Title: $title\n";
}
0356デフォルトの名無しさん
NGNGあまりよく知らないんだったら、黙っている方がマシだと思う。
0357デフォルトの名無しさん
NGNGgrepを使う時は @temp と配列に格納しないといけないのでしょうか
引っ張り出したデータを続けて処理する時に
if(@temp[0] =
としているのですが、なんとなく不格好な気がして…
0358デフォルトの名無しさん
NGNG@temp[0] なんて書き方じゃ動かんと思うぞ、ついでに ==じゃないのかね
それは良いとして
$temp = $temp[0]; とか
$temp = (grep 〜〜〜)[0];
ではダメかい?
0359デフォルトの名無しさん
NGNGありゃ、@temp[ ]ってダメなんですねΣ(゚д゚;)
普通に動いてた(なぜだっ)ので全然気づかなかったです
全部書き直さないと…あちゃぱー
>$temp = (grep 〜〜〜)[0];
これを使わせていただきます(ー人ー)
0360デフォルトの名無しさん
NGNG@temp[...] は「スライス」という奴で、配列の一部を返します。
基本的に、@temp[0] と $temp[0] は同じ物を表します。
(後者の方が速いけど。)
たとえば、以下のような場合には違いが生じてきます。
@temp[3,4,5] => ($temp[3], $temp[4], $temp[5])
$temp[3,4,5] => $temp[5]
0361359
NGNGスライスと解釈されて動いちゃうのね
0362デフォルトの名無しさん
NGNGあれほど魔法的動作が多いperlに関して、ためしもせずに思い込みだけで
難癖つけるほど頭が固くエゴ剥き出しの心を持つ359は、perlはやめたほうが
いいと思う。
0363デフォルトの名無しさん
NGNGもっとどうでもいいことに、=>208だったりもするのです。
0365321
NGNGありがとうございます、参考になりますた。
>>335
これ、CVSupのcheckoutsファイルの一部なんですよ。
CVSのメタファイルをcheckoutsファイルから掘り出すスクリプトを
組んでいたんです。
0366デフォルトの名無しさん
NGNG有効にならないって本と?
0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNGあまりよく知らないんだったら、黙っているのが良いと思う。
0369デフォルトの名無しさん
NGNGmy $a,$b
だと$aだけがmyになるから
my ($a,$b)
としろってことかな。
0370デフォルトの名無しさん
NGNG$a = 1;
&f;
print $a;
sub f() {
my ($hoge, $a);
$a = 2;
}
これだと1がでる。
my の後の括弧を外すと2が出る
0371デフォルトの名無しさん
NGNGダメジャン。うんこすぎ。
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNGThread.pm使えば?
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGどうしたらいいですか?
色々試してみたんですがやりかたがわかりません。
例えば↓のチャットを自分独自の自動更新チャットを
作るにはどうしたらいいですか?
http://www.tcup6.com/cgi-localbin/chat8.cgi
0376375
NGNG例えば↓のチャットを、自分独自の
自動更新チャットに作りかえるにはどうしたらいいですか?
http://www.tcup6.com/cgi-localbin/chat8.cgi
(別のところからログファイルだけ更新できるようなイメージ)
0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG負荷に因果関係はありますでしょうか?
たとえば入出力を同程度とし、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デフォルトの名無しさん
NGNG2 置換文字列にも正規表現を使うと思っているところ
0382デフォルトの名無しさん
NGNGs/<[A-Z]+/lc($&)/egi;
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG5.目的は知らんがCGI板向けの香りがする事
0385デフォルトの名無しさん
NGNGCGIだけど、なんか質問ある? Part 9
http://pc2.2ch.net/test/read.cgi/php/1041530204/l50
へ行ってくれ。
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG$kakuchousi = `zip|bin|jpg|exe`;
$filename ~= /^[a-zA-Z0-9_-]+\.($kakuchousi)$/
とやるしかないのでしょうか?
$kakuchousi変数を配列にしたいのですが。
@kakuchousi = ('zip', 'bin', .... )としたほうが他にもつかえそうだし。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGなにをしたいのかくらい書けば?
0390デフォルトの名無しさん
NGNGFile::Basename モジュールを使ってみたらどうだい
0391デフォルトの名無しさん
NGNG0392ぼるじょあ ◆ySd1dMH5Gk
NGNGread(STDIN, $str,$ENV{"CONTENT_LENGTH"});
という行の意味が知りたいんですが。特にCONTENT_LENGTH
の部分の役割を教えていただけませんでしょうか。
あつかましいのですが宜しくお願いします。
0393ぼるじょあ ◆ySd1dMH5Gk
NGNGぐぐったらありました。すみませんでした。
0394デフォルトの名無しさん
NGNGCONTENT_LENGTHはデータの長さですよ
0396デフォルトの名無しさん
NGNGHTTP BODYな。
0397デフォルトの名無しさん
NGNGwhile (<IN>)ってやると、データがでかいって文句を言われてしまいます。
0398160
NGNGデータがでかいって文句言われることってあるんですね。
$buf = <IN>
とかで、まとめて読んでもいいのでは?
0399398
NGNG0400デフォルトの名無しさん
NGNGありがとうございます。readでできました。
ところで、このreadのLENGTHってどれぐらいまで大きくできるんでしょう?
環境に依存するのかな?
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNGパス付きでも、実行マシンから既にアクセスしていたり(パスワードを入力済み)
実行マシンと同じID/PASSだったりすると特別めんどくさいことはないんでsuga
open FILE,"\\IPアドレスとかマシン名\xxxxx";
で開けますよね。
ただ、上記の条件をみたなさな、単純にパスワードが付いてるマシンの共有フォルダに
アクセスする場合、スクリプト側では、ID/PASSはもちろんしってるんですが
どうすれば開けるんでしょうか?
0403402
NGNGまず考えついた方法として
「ネットワークドライブに割り当てる」
って方法がありますよね。
これだと、異なるユーザーでアクセスって設定がありますし。
ただ、これだとアクセス先がHDDとか無視してもドライブレターがA-Zのの26個が限界ですから
却下です。
あと、クライアント側のPCはwindowsです。
Linux系にしてsmbmountでマウントする〜
ってのも却下です。。。
わがままですいませんが、なにかID、パスワードを指定してファイルにアクセスするような
モジュールがあるんじゃないかと夢想してます。。。
ないですかねぇ、、、CPAN探ってみたんですが、みつけられませんでした
0404デフォルトの名無しさん
NGNGお前、
「ネットワークドライブ上のあるパスを開きたいんですがパスがかかってて開けません。
どうやったらこのパスのパスを入力してそのパスを開けるのでしょうか?」
とか言う文章書けるだろ。
0405402
NGNGすいませんー。。。
PATHとPASSで区別すればよかったですね。。。
0406デフォルトの名無しさん
NGNGいいんでないの?
0407402
NGNGでとりあえず解決しそうです。。。
ありがとう御座いました
0408デフォルトの名無しさん
NGNG>>>135
>そのヒントから
>Win32::NetResource
>にたどりつきました。。。ありがとうございます。
一言逝って置く、もうくんな
0409デフォルトの名無しさん
NGNGMIMEとかのヘッダー情報を知る方法ってあります?
#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$res->as_string
特定のヘッダなら
$res->header("Content-Type")
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGオブジェクト指向というのは、古くからのブログラマには正直つらい
みんなどう?
0413デフォルトの名無しさん
NGNG本当のコアとなる基礎の部分というのはあるんだろうか?
つまり、方言(あるのか?)やらバージョンの違いを越えてどこでも安心してつ
かえる部分という意味である。
例えば、シェルスクリプトなら/bin/shみたいなイメージだ
私的にはRubyの「なんでもオブジェクト」ってのは便利だと思う。
でもライブラリの数はPerlが圧倒してるから、
Perlの方がすぐに色々なことができるってのはあるかもね。
0415デフォルトの名無しさん
NGNGRubyはどうだかしらんが、
Perlの場合「やり方は何通りもある」なので、それに納得できるかどうか。
時々正解が複数あることにガマンできない人がいるんだよねー。
今広く使われていると思われる1999年リリースのv5.005_03を基本に考えれば
最新版でも問題なく動くはずだよ。
方言は…そうだなぁ、コンパイル時のオプションでスレッドがあったりなかったり、
Unix用の関数はWindowsのPerlでは動かない物も多かったりするので、注意が必要かも。
あと日本語の扱いがオリジナルPerlとJperlでは異なるのがやや問題かなぁ。
でもまぁ演算子の優先順位や数値リテラルの書式がコロコロ変わったりはしないから、
その点Rubyよりは安定してるといえると思う。
0417デフォルトの名無しさん
NGNG先にCをやってたからいつもC風に書いてるけど。
0418デフォルトの名無しさん
NGNG演算子の優先順位なんて変わったっけ?
0419デフォルトの名無しさん
NGNGperltidyなんてのがあるよ
http://perltidy.sourceforge.net/
0422デフォルトの名無しさん
NGNG俺もC風に書くことを心がけてる。
例えば・・・
print "あいうえお";
ではなく
print("あいうえお");
と書くようにしたり。
0423デフォルトの名無しさん
NGNG> 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>>420
http://www.freeml.com/message/[email protected]/0004184;jsessionid=a2c6c0oz01
0425デフォルトの名無しさん
NGNG5.6から5.8に移行したときunicodeがらみの処理の変更でひどい目にあったけどなあ。
0426デフォルトの名無しさん
NGNG例えば?
Ruby1.7からリテラルに対する単項マイナス演算子の扱いが変わって、
例えば「-2**2」という式は1.6と1.7じゃ結果が違うらしい。
まぁ、些細なことだけどね。
0428デフォルトの名無しさん
NGNGああ、最近元に戻った奴だな。
あれま。そうだったのか(笑
0430423
NGNG5.6 の Unicode 処理機能を使おうとは思わなかった。
5.8 でもまだちょっとおかしなところがある。
日本語・Unicode 関連は Jcode.pm 中心にまったりとやってます。
0431デフォルトの名無しさん
NGNG>>424
あーお前が噂のネットストーカーか。
(いろんな意味で)小さいな。
0432デフォルトの名無しさん
NGNGあっちでもレス付いてるぞ。お礼しなくていいのか?(藁
0433ruby
NGNGいろいろとご回答くださり感謝します.
perlは全然さわったことがなかったのですが、
perlの非オブジェクト部分に限定するような感じで
使いはじめてみたいと思います.
ありがとうございました.
0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG(いろんな意味で)小さいな。
0436デフォルトの名無しさん
NGNGkimuraとやらと一緒に余所行っちゃくれんかね?
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGさっさとうせろ。ゴミ野郎。
0439デフォルトの名無しさん
NGNGある文字列に対して
半角の数字(10〜149)が出てきたらそれに対応した全角1文字の外字に変換したいのですが。
・上記以外の数字(1ケタや4ケタ以上)は全角に変換。
・数字以外の記号も全角に変換。
・入ってくる文字列はsjis
こんなの考えました。(動作確認済)
しかし上司に「ハッシュは遅いから他の方法にしろ。外字の文字コードは順番に並んでるんだから…」と言われました…
どうやって良いか全然分かりません。ヒントだけでもお願いします。
0440439
NGNGmy %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正直、引き算と足し算だと思うんですが。
0442439
NGNGその具体的やり方ってラクダ本見ても良くわからないのですが…
"\xf4\x59"
の文字を
"\xf4\x5A"
にするにはどういう計算をすればよいのですか?
my $a = "\xf4\x59" + "\x01";
ではエラーになりました。。。(ノД‘)
0443デフォルトの名無しさん
NGNGmy @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へたに関数使うよりハッシュの方が速いことが多い。
0445デフォルトの名無しさん
NGNGpack("n", unpack("n", "\xf4\x59")+1) -> "\xf4\x5a"
ちなみに、ハッシュは理論的に言えば非常に速いし、perl のハッシュ実装も
決して遅くない。君の上司が何かを誤解しているか、君と上司の間に誤解があ
るか、どちらかだと思う。
0446デフォルトの名無しさん
NGNGあとは、パターンマッチを使わなくてすむなら
使わない方が早かったりするし。
0447439
NGNG上司は頭は切れるのですが自分の好みに合うコーディングじゃないとダメみたい
なんです。
まあ能力では全然かなわないから従うしか無いんですけど。
できたら明日結果報告します。
0448デフォルトの名無しさん
NGNGその上司にハッシュを使わずに書いてもらって、ハッシュで書いたのとベンチ
マークして比べてみろよ。
0449ドウデモイイケド
NGNG恥をかかせることが、>>439の今後の生活にとって正しいのか
どうかは、微妙ですな。頭の切れる上司とやらが、分別のある
大人であることを祈ろう。
役職者には、たまにとんでもないのがいるからね。
0450デフォルトの名無しさん
NGNGそれに越したことはないでしょう。
0451445
NGNG数値計算が一回入ると、ハッシュの方が速くなることが多い。>>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という教育的配慮じゃなかろうか。
Perlerは無精であれ、と言われてるのに、いやな教育的配慮だなぁそれ(笑
0454デフォルトの名無しさん
NGNG同意。ならそもそもPerlを使うな、といいたい。
0455デフォルトの名無しさん
NGNG0457439
NGNG(上司にはまだ見せていませんが'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デフォルトの名無しさん
NGNGhttp://jsweb.muvc.net/index.html
0459439
NGNGmy $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> $str = `cat $input | hoge.pl`;
すでに$inputというファイルにデータがあるなら
> いったんファイルに書き出して
という必要はないだろう。
$str = `hoge.pl < '$input'`;
あるいは
open(HOGE, "|") || {
open(STDIN, $input) || die;
exec("hoge.pl");
}
0462デフォルトの名無しさん
NGNG普通は
open(IN, "cat $input | hoge.pl |")
だけど、メタキャラクタが気になっているということは、ひょっとして
$input はファイル名ではなくデータそのもの?つまり、
open(IN, "echo $input |hoge.pl |")
と本当はやりたくて、かつ $input 中のメタキャラクタが問題になっている?
ならば、pipe + fork か IPC::Open2 を使うべきだけど、あなたのレベルだと
少し苦しいかも。
0463460
NGNG○$str = `echo $input | hoge.pl`;
でした。すみません。
肝心なところでミスを・・・
>462
ということで、すみません、それです。
確かに、pipe+forkはやったことがないので苦しいかと思いますが
勉強したいので。。
0464デフォルトの名無しさん
NGNGとりあえずperldoc openを欲嫁
0465462
NGNGまあ、以下のような感じになるわけだが、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; };
0466462
NGNGif (!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デフォルトの名無しさん
NGNGtimeつかえば?
0469デフォルトの名無しさん
NGNG>>468
返信ありがとな。
0470デフォルトの名無しさん
NGNGLSDでもやってんのか?
0471デフォルトの名無しさん
NGNGバトルロイヤルの改造やってます。
0472デフォルトの名無しさん
NGNG0473460
NGNG>464
ラクダ本は読んでいるんですけど、読み足りてないようです
>465
ありがとうございます。
理解するのに時間がかかりそうなので
よく読んでからまたきます。
0474439
NGNGそれは良いのですが
$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デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG"\d"は使わず"[0-9]"を使え、とか言うもんさ。
"[0-9]"を使ってたら"\d"を使えと言うだろな。
/gが駄目ならwhileで廻せ。まあ、適当にあしらって
おけばいいんだよ。
潰れないように、ガンバ
0477デフォルトの名無しさん
NGNGperl 以外でも使える正規表現を優先して使わせようと思っているのかもね。
>「この部分を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 より速くなることはない。
なんというか、聞いていて不安だ。
0478439
NGNGこんな方法を考えました。
$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を使うな」というのは僕の勘違いかもしれません。スイマセン。
0479bloom
NGNG0480デフォルトの名無しさん
NGNG同じかどうかを調べるには、
if($a==$b){〜}
と
if($a eq $b){〜}
とどちらがいいんでしょうか?
0481デフォルトの名無しさん
NGNG$a==$b はダメじゃない?
$a="0" $b="00" でも真になるよ。
0482480
NGNGじゃあ、
if($a eq $b){〜}
でいいのかな?(バイナリデータは文字列扱い?)
あんた頭が悪いな
0484デフォルトの名無しさん
NGNGやはり素直にハッシュを使うべきだと思うがな。
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$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]にだけ行いたいのですが、どうしたら良いのでしょうか?
0486477
NGNG>chr(0x4f + $1 + ($1 >= 0x30)) の意味
($1 >= 0x30) は $1 が 0x30 以上なら 1、そうでなければ 0 になる。つまり、
$1 < 0x30 -> chr(0x4f+$1)
$1 >= 0x30 -> chr(0x50+$1)
という意味。(慣れると三項演算子よりも読みやすくなるけど、あまり濫用し
ない方がいい。)
というか、elsif を覚える方が先決のような気がしてきた…。
0487デフォルトの名無しさん
NGNG解決しますた
0488439
NGNGありがとうございます。
そうですよね。私も最初はそう思ったんですが…
でも色々新しいことの勉強もできたんで良かったです。
>>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> 「これだと“1”が帰ってくるんじゃない!“true”が返ってくるんだよ!」と怒られたので
(゚Д゚)ハァ?
> これが今までベンチマークとった中では最速でした。
三項演算子使った方が速かったってこと?
0490439
NGNG$1 >= 48?1:0
よりも
$1 >= 48
のほうが速かったです。
でもダメって言われたんですよ(涙)
0491デフォルトの名無しさん
NGNGきりしたわけだ。
0492デフォルトの名無しさん
NGNG/ .:.:/ /\.:.: / ヽ
/.:.:.:,‐'" 〈.:.:.:.:\.:.:.: /.:.:___,,,,-‐ __.:.:_,,,,-‐.:.: `、,,_
_,,,-''" |\.:.:.`''/_..-'/,,-‐''"∠..,,,,,,/_,,,,-‐ __ ヽ、
--‐'' |,ィ'⌒゙ヽiイ´ // , " ̄`ヽi! /// .: ヽ、`ヽ、
.:. 〈 (~< レ '´ ' ..,,_('ッ ゙i!/'´ //|.:.: \
_,,,-''.:. .:.:.\ ` ,,、、´゜、、、 __,,,,.../ ::|.:.:|.:.: |
--‐''.:.:.:.:/:: .:.:.:.:./´`T ,,_(ッ,ノ /.:.: / :/|.: /
.:.:.:.:.:.:/.:.:.:.:.:./:::/ /~⌒ヽ、-/゙//| :/|/ |/ 从___人/(____
---‐-、____,、-‐< /⌒゙ヽ ヽ> / |/ |/ __)`-ー-'
;;;;;;;;;;;;;;;;;;;;;;;;;;;ヾ、'、 /‐-、_ 〉 / , ' >
;;;;;;;;;;;;;;;;;,,,,-‐'''"\\__\ `ヽ-、;_/ ,,-'' \ trueって
 ̄ ̄^i;;;;;;;;;;`-;;;;;;;) \ノ::::´`ヽ、 ,, - "ヽ、 ) な に !?
::::::::::::::|;;;;;;;;;;;;;;;∠-‐'''"`-、:.:.:.:.: `''''".:.:.:.:.:. '、 ∠
::::::::::::::::\;;;;;;;;;/::::\|;;;|;;;ヽ、:.:.:.:.:.:.:∧.:.:.:.:.:. ', 〕
\::::::::::::::::|;;;;;/::::::::::::/;;;/;;;;;;;;|.:.:.:.:.:. / |.:.:|\: i /
:::::\:::::::::::`‐'::::::::::::/;;;/;;;;;;;;;/.:.:.:.:/ // |: /  ̄ ̄)/W⌒\(~~∨⌒ヽ
0494デフォルトの名無しさん
NGNGそうだね。warningsが有効になっていると警告を出す、
という点が気にならなければ、もちろんそれでも構わない。
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGThese operators return 1 for true and "" for false.
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNGこれの出力先を別ターミナルにしたいのですが
どのようにすればよいでしょうか?
0500デフォルトの名無しさん
NGNG例えば($a = `find ./ -name a`)の様なとき、
このリストを一行ずつ読み込んで変数に代入するにはどうしたらいいですか?
0501デフォルトの名無しさん
NGNG@a = `find ./ -name a`
0502デフォルトの名無しさん
NGNGopen(TTY, ">/dev/ttyxx")
print TTY "hogehoge\n";
ttyxxの部分は適宜調べる
0503デフォルトの名無しさん
NGNG2行目を取り出すにはどうすればいいの?
0504503
NGNGサンクス>>501
0506デフォルトの名無しさん
NGNGという文が処理されないのですがどうしたらいいですか?
0バイトのhogeが作成されるだけで終わります。
perlが標準出力をトラップしてるのでしょうか?
0507デフォルトの名無しさん
NGNG何の問題もなくhogeが作成されるが。
何か激しく勘違いしてないか?ディスプレイが溶けるほどソースをよく見ろ。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGcat hoge.txt
> hoge
になってた様です。
ありがとうございました。
0511デフォルトの名無しさん
NGNGそれはつまり、クラックし放題ですか?
0512デフォルトの名無しさん
NGNG-rwx------なのにどうやってクラックするんでしょうか
0513511
NGNGてーことは、変数の値によっては妙な権限でコマンドが動作するんでない?
いや、変数が外部から一切操作されないなら問題ないけど。
む、書いてる内に大きなお世話という気がしてきた。
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デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG`cat hoge.txt > hoge`
じゃなくて
`cat $file > hoge`
だったんだろ? 人に聞くときは勝手に脳内展開するなよな
0518デフォルトの名無しさん
NGNG. 任意の一文字
+ 直前のパターンを一回以上繰り返す
? 直前のパターンが0回または1回現れる
さてここでなぜ
m/.+?/
が、最短マッチになるのか論理的に説明してください!
0519515
NGNGヒントありがとうございます。
早速
s@(=\s*)([0-9a-fA-F].*)@\1hex(\2)@e;
としてみましたが、なんか \1 や \2 が展開される前に
評価されてしまっているようで、\1 や \2 が 1 や 2 の
参照と見なされてエラーが出るようです。
$& だと展開するみたいなんですが。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG?の意味が違うだろ。お前はCの*も混同してるだろ?
0523デフォルトの名無しさん
NGNGこういうのってどうやれば出来るんですか?
print文で制御コードを吐けばできるんですか?
↓こんなの
############### [50%]
0524デフォルトの名無しさん
NGNGはぁ?おまえ何いってんだよ
違うんだったら?の意味書いておけよ
0525デフォルトの名無しさん
NGNG量指定子の直後の?は最短マッチを表す、って言う仕様になったから。
0526デフォルトの名無しさん
NGNG結局仕様ってわけね
anyway レスサンクス
0527デフォルトの名無しさん
NGNG最初か最後に"\r"を書くだけ。
0528デフォルトの名無しさん
NGNGwhile(<>) {
split;
print "$_[1]\n";
}
のような場合
splitの結果が@_ に入ると
whileで読まれた$_は上書きされるのでしょうか?
上手く伝えられないのですが…
それとも、$_ と $_[1] は共存?できるのでしょうか?
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGでは、@_ の内容をみる場合の $_[1] と $_ とは
全く別なんですね?
0531デフォルトの名無しさん
NGNG同じかも
0532528
NGNG0533別だよ
NGNG0534528
NGNGありがとうございす。
0535528
NGNG実は、試してはみたんですが
@_ の内容をみるのに $_[1] や @_[1] みたいなのでも
動くので、一体どれが正しいのか…分からなくなってきて
検索で調べても、なかなか答えがないので
質問させて頂きました。
ご容赦を
0536デフォルトの名無しさん
NGNGPerlの解説本全く見ずにやってるってこと?
0537528
NGNG普段は技術評論社のPerlの本を見ていますが
現在、手許になくて、解決に困っていました。
0538別だよ
NGNG(゚Д゚)ハァ?
自分でほとんど書いてるじゃん。>>528
$ perl -e 'while(<>) {split;print "\@_: $_[1]\n";print "\$_: $_\n";}'
abc def
@_: def
$_: abc def
0539デフォルトの名無しさん
NGNG@_[1] はスライス。>>360 を見れ。
0540デフォルトの名無しさん
NGNGopen ( PR, ">PRN" );
open ( IN, "<print_this_text.txt") ;
while ( <IN> ){ print PR "$_"; }
print PR "\014";
close ( PR );
close ( IN );
とすると「プリンタと通信ができない状態です」とエラーが出てしまいます。
どのようにしたらいいのでしょうか?
0541デフォルトの名無しさん
NGNGとりあえず type print_this_text.txt > prn でうまくいくことは確認した上で、
perl -v の出力と Windows のバージョンを書け。
0542デフォルトの名無しさん
NGNG0543523
NGNGできました。ありがとう。
でも"\r"だと、Macで動かした場合、改行してしまわないんですか?
Macで使わないからどうでもいいけど....
0544デフォルトの名無しさん
NGNGブラウザのアドレス入力欄に文字を表示させるには
どうしたらいいでしょうか?
0545デフォルトの名無しさん
NGNGOS Xだと大丈夫なんじゃないかなぁ。使ったことないからわからんけど。
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGtype print_this_text.txt > prn
とすると何も反応しません。
プリンタの設定がおかしいのでしょうか・・・。
プリンタはcanon BJ F610 (BJRSTR)です。
OSはwindowsXP,perlのバージョンは5.005_03です。
0548デフォルトの名無しさん
NGNGすでに板違い
0549528
NGNGありがとうございます。
@_[1] は、配列の1要素だけスライスしたもの…ですね。
言われてみれば、そうですね。(鬱
0550デフォルトの名無しさん
NGNGそうですね。
すみませんでした。
0551デフォルトの名無しさん
NGNG#!/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デフォルトの名無しさん
NGNGclose が始末してくれる。
0553デフォルトの名無しさん
NGNG"$count"; か "$count\n"; の間違いじゃないか?
0554デフォルトの名無しさん
NGNGopenしてからflockまでの間によそのプロセスが開けちゃわない?
0555デフォルトの名無しさん
NGNGmainパッケージ内で、testというパッケージをuseして呼び出したとしたら、
mainパッケージないで仕込んだ乱数の種は、testパッケージ内でも有効でしょうか?
testパッケージ内でも、乱数の種を仕込む必要があるのでしょうか?
よろしくお願いします。
0556デフォルトの名無しさん
NGNG乱数の種をどうやって保持するのかによる。
testパッケージからは main::hogeでmainパッケージのを参照できる。
逆もしかり。もちろん参照する時点で定義されている必要がある。
0557デフォルトの名無しさん
NGNG有効だったはず。
0558デフォルトの名無しさん
NGNGじゃあ flock してから open しろとでも?
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGテキストファイル中の、<>で囲まれた数字だけを
決まった数だけ増やすには、どうしたらいいのでしょうか?
テキストファイルの中に、ところどころ<>で囲まれた半角数字があります。
1行の中に複数存在する場合もあります。
数字はすべて整数で、1〜999999の範囲にあります。
<239>書籍<9384>音響<5732>
<543>小動物<392448>家具
といった感じのデータになります。
ここで、「<>内の数値をすべて20増やす」ということがしたいのです。
思い切り1行くらいで書けるような気もするのですが、
私にはうまく作ることができませんでした(1行じゃなくても)。
すみませんが、お力をお借りできませんでしょうか。
0561デフォルトの名無しさん
NGNGこんな感じかな?
$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);
これからもperlを使うつもりがあるなら、
まず本買って読んだほうがいいと思うよ。
一行はおろか複数行でも書けないというのは、
perlが全然わからないと言ってるのと同じように聞こえる。
0563560
NGNGそんなすぐに書けるものですか……しかもスマ〜ト!!
ありがとうございます……。
タダ働きさせてしまってすみません。
>>562
おっしゃる通りです。
動物の絵の書いた本を読み漁ってみたのですが、
独学のせいか、アタマのせいか、どうもうまくいかず……。
それで、うまく作ることはできなかったんですけど、
途中まで作ることはできたんですよ。
だけど、「文字を順に読む」→「"<"を見つける」→「数字記録状態にする」
→「次の数字を記録する」→「">"が出たら、数字記録状態をやめる」→……
っていう風に、グダグダになってしまい……。
エディタか、OSか、っていう長大なプログラムになってしまいました。
はやく>>561みたいにカッコよく書けるようになりたいです。
0564デフォルトの名無しさん
NGNG正規表現を極めるべし。
0565デフォルトの名無しさん
NGNGそういう力技もアルゴリズムの勉強になって
いいことだと思うよ。
でもperlは楽なことは楽にできるようにっていうのが趣旨だから
どちらがいいかはわからないけど
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGみなさんこういうのを普段から使っているんですか?
気にしすぎですか?
0568デフォルトの名無しさん
NGNG怖いって言うのは、元ファイルに直に上書きしてるから?
0569デフォルトの名無しさん
NGNG>進捗状況を一行に"#"のグラフで表現する手法がありますよね?
>こういうのってどうやれば出来るんですか?
これでどうでしょ?
$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++;
}
0570569
NGNG0571デフォルトの名無しさん
NGNGどっかに参考になるとこないですかね?
そのものズバリを配布してるページでも教えてくださったらうれしいです。
スレ違いor板違いだったら誘導してくださるとありがたいです、、、sage
0572デフォルトの名無しさん
NGNG$ perl -i~ -pe 's/<(\d+)/"<".($1+20).">"/eg' hoge.txt
sオプションはいるんか?
0573デフォルトの名無しさん
NGNGGD.pm
0574デフォルトの名無しさん
NGNGありがとうございます。
インターネットを一生懸命検索していたので、ローカルのファイルに目が行ってませんでした、、、
これから使い方を調べてみますです。
0575デフォルトの名無しさん
NGNGどうしてますか?
俺は[]を使ってリファレンスを
一時配列に入れるようにしてるのですが(らくだ本から)
もっと効率的なやり方はあるのでしょうか?
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGCとかでやれというのですか?
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG"型"[][]とかできるの?
0582デフォルトの名無しさん
NGNGp 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デフォルトの名無しさん
NGNGflock(OUT,2);
truncate(OUT,0);
seek(OUT,0,0);
print OUT "うんこ";
close(OUT);
このプログラムやってもファイルが作成されないんですけどどうしてですか?
0585デフォルトの名無しさん
NGNGうんこだから。
0586デフォルトの名無しさん
NGNGファイルを作る気がないから
0587デフォルトの名無しさん
NGNGせめてopenの結果くらいチェックしろと(ry
0588デフォルトの名無しさん
NGNG$foo = '$bar';
$bar = 'hogehoge';
print $foo;
これで「$bar」って出るのと「hogehoge」って出るのと、どっちだったら納得できる?
0591ハッカ飴
NGNG2次元配列は
$dim[0][3]
で良いんじゃないの?
Perlはリファレンスを駆使して、自動的に配列を用意してくれるから、
$dim[23][11][32][1] = "A";
print $dim[23][11][32][1];
でちゃんと A が表示されるし。
0593デフォルトの名無しさん
NGNG値看護の邦画一回しか展開されていないの。
マニュアルに宗書いてあるヨ。
0595デフォルトの名無しさん
NGNGopen(OUT,"http://www.DBZ.com/test.dat");のようにURL指定では書き込めないんですか?
0596デフォルトの名無しさん
NGNG実行した結果が物語っています。
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGその方法であなたのサイトのファイルをすべて書き換えてあげましょう。
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGわからん
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNGPerlは君のことが嫌いなんだよ。
食事でもおごってやれ。
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG[^AB]だとAもBもはじいちゃいますよね??
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG[^A|B]
0612デフォルトの名無しさん
NGNGうろ覚えだが(?!AB)とかじゃなかったっけ
0613デフォルトの名無しさん
NGNG[^AB*]
0614(^Д^)
NGNG(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
(^Д^)(^Д^)(^Д^)(^Д^)(^Д^)
0615デフォルトの名無しさん
NGNGttp://www.din.or.jp/~ohzaki/regex.htm#Without
0616デフォルトの名無しさん
NGNG当たり。
http://perldoc.com/perl5.8.0/pod/perlre.html
を見れ。
0617デフォルトの名無しさん
NGNG(^^)
0618608
NGNG大変勉強になりました!
0619デフォルトの名無しさん
NGNG(^^)
0620デフォルトの名無しさん
NGNGわからん
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGプログラマー
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNGなんだか全員”ハイル・ヒトラー”をしているみたいだな。
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNGちょとわらた
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGコンパイル通らんだろ
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGその変数を下位関数で宣言無しで弄ろうとすると、上位の宣言部分及び下位の弄っている部分で
global symbol $hoge requires...
と「宣言をしていない」と怒られてしまいます。
これはlocalがサポートされてないと考えるべきなんでしょうか・・・。
0641デフォルトの名無しさん
NGNGおちんちんが熱くなるよ。
0642デフォルトの名無しさん
NGNGperldoc strict 中の、strict vars を参照のこと。
解決方法はいろいろあるが、その「最新の active perl」が 5.6 以降なら、
our $hoge 宣言が一番早い。でなけりゃ $hoge のかわりに $::hoge を使う。
0645640
NGNG失礼致しました。
0646デフォルトの名無しさん
NGNGプログラムでどのようにすればいいんですか?
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNGまず日本語と質問の仕方を学習してください。
0649デフォルトの名無しさん
NGNG半角カタカナでも文字化けなんかしません。
やり方聞かれても困ります。普通にやれば文字化けしないのですから。
0650hoge
NGNG0651hoge
NGNGint(文字列)でいけました
0652デフォルトの名無しさん
NGNGもうちょっと解説書を読め。
0653652
NGNG恥ずかしい。
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デフォルトの名無しさん
NGNGHTMLエスケープしろ。
「これを成立」ってどういう意味?
0656654
NGNG>成立
適当な文章が考え付きませんでした
つまるところ、タグとして稼動させるには、という意味でして・・・
って、コードがΣ( ´Д`)
修正・長レス申し訳ないです;
>>$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デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG$mes =~ s/<(span.*?)>/<\1>/g;
0659デフォルトの名無しさん
NGNG0を足すとか1をかけるとかでもいける。
算術演算を施すと文字列は数字に解釈される
0661デフォルトの名無しさん
NGNGwhile(<F>){
ここで読み込んだ一行からマッチングを行いたいのですが
読み込まれた一行はなんという特殊変数に格納されているんですか?
}
close(F);
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNGありがとうございます。本をよく読むと書いて有りました。
自分が情けない・・・。
0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
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趣味だ。どれでもいーだろ。あたしゃ2で書くけど。
0667665
NGNGやっぱ趣味ですか。私は(2)でかくとインデントし難く
なってしまうので余り好きではなかったりします。
# HTML吐く時は良く使うかもですが
スレ汚し失礼しました。
0668デフォルトの名無しさん
NGNGいつになったら出るのか分からないPerl6では、改善されるらしい。
http://dev.perl.org/perl6/talks/Perl6-Notes-200108.v2.pdf
を"<<"で検索してくれ。
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG「こうやるのが一番(メモリ消費の or スピードの)効率がいいんだよ」と
根拠もなくとりあえず言ってみて押し通す、っていう技があるよね。
で、ごちゃごちゃ突っ込まれたら、
「じゃ、あとでいろんなパターン書いてみてテストしてみてごらんよ、
俺の言ったのが一番だから。」
と、知ったかぶり(にもならないな)しておくと。
0672デフォルトの名無しさん
NGNG読むファイルと書くファイルって別物にしないとダメ?
毎回バックアップ作って書き換えするのがしんどいのですが
0673デフォルトの名無しさん
NGNG方法によるが必ずってわけじゃない。
0674デフォルトの名無しさん
NGNGご教授してもらえないでしょうか?
0675デフォルトの名無しさん
NGNG[.]
0676デフォルトの名無しさん
NGNGどもです!!!
0677デフォルトの名無しさん
NGNGあんまり関係無いかもしれんが、Larry Wallのインタビュー記事
0678デフォルトの名無しさん
NGNG$a=abc;
$b=def;
ならabcdefになるようなものなんですけど・・・
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGありがとうございました。
0683デフォルトの名無しさん
NGNG短時間に何度も書くなボケェ
0684デフォルトの名無しさん
NGNGとかのINっていうのはなんなの?
ファイルハンドルだっていうのは分かるけど、どんな変数なんだ。
自分で空のファイルハンドルを宣言したりできる?
サブルーチンに受け渡したりできる?
あと<IN>ってどうなってんだぼけ
0685デフォルトの名無しさん
NGNG放 置 で 。
0686デフォルトの名無しさん
NGNG買ったよぼけ
読んだけどわからねーんだよぼけ
0687デフォルトの名無しさん
NGNG$filename が @ex の拡張子に当てはまるか調べるにはどうすればいい?
制御文はつかわないで。
0688デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/digikei/ten.html
0689デフォルトの名無しさん
NGNG>>>685
>買ったよぼけ
>読んだけどわからねーんだよぼけ
「〜ぼけ」
知り合いに、これと同じ言い方する小学生の子がいたの思い出しました。
育った環境が悪いんですかね。
0690デフォルトの名無しさん
NGNGスレ内容と関係ないこと書き込むなボケ
0691デフォルトの名無しさん
NGNGうっかりさん発見。
0692デフォルトの名無しさん
NGNG#こんどからはもっとよく調べてから質問しろよ。
if (defined(grep (/?Q$filename/, @ex))) {
print "found $filename?n";
} else {
print "not found $filename.?n";
}
0693692
NGNG$filename =~ s/^.*??.(.*)$/$1/;
#を上に追加しといてくれ。
#内容が破壊されるのがいやなら、前もって待避しとけよ!
0694デフォルトの名無しさん
NGNG$_ に含まれた4桁の数字を一行で$numに取得したいのですが、
どのようにしたらいいのでしょうか?
いつもは
$num = $_;
$num =~ s/(\d{4})/$1/;
のように処理しているのですが、もっとPerlらしい「ものぐさ」な方法がありそうなので。
0695694
NGNG$num = $_;
$num =~ s/.*(\d{4}).*/$1/;
でした。
0696デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNGたとえばハッシュの要素を grep するとき
grep(length($hash{$_}), keys %hash)
とかで、空の要素を含まない配列がつくれるけど
これを自分で定義して
mygrep(length($hash{$_}), keys %hash)
sub mygrep { ... }
って出来る?
要は 上の grep の引数内の$_の動きが疑問なんだけど
うん、別物。
第一引数に式を取る形式のgrepはサブルーチンでは再実装できないね。
ただし、プロトタイプを使う事でブロックをとる形式のmygrepは作れるよ。
sub mygrep(&@){
my $code = shift;
my @output;
foreach (@_){
push @output, $_ if $code->();
}
return @output;
}
@dst = mygrep{ length($hash{$_} } @src;
0700デフォルトの名無しさん
NGNGを使ってサブルーチンとメソッドの呼び出し速度を比較しようとしたんですが、
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「ファイルハンドル」はPerlではただのソフトリファレンスされたシンボル。
なので特定のユニークな文字列であればファイルハンドルの変わりに使うこともできる。普通やらんが。
>>700
「メソッド」がどういう仕組みで呼び出されるのか理解できれば、なぜなのか解かるでしょうけど…。
$instance->method(); は
&MyClass::method( $instance ); と実用上はほぼ等価だよ。(クラス継承は出来ないが)
>>701
map や grep を使う手もあるけど、書き方違うだけで遅いことに変わりはない。
むしろハッシュを使ったショートカットを別に用意したほうがはるかに早い。
$member = 0:
$str = 'aaa';
$array[ $hash{$str} = $member ] = $str;
言うまでもなく、これは重複文字列の存在は考慮してないけど。
#LZ法とかを実装するときに使う手。
0703デフォルトの名無しさん
NGNG間違っている個所がわかるツールとかはないでしょうか?
0704デフォルトの名無しさん
NGNGflock(OUT, 2);
print OUT "$_";
flock(OUT,8);
close(OUT);
上記のようにflockを使うとファイルに書き込めませんがどうしてでしょうか?
0705デフォルトの名無しさん
NGNG環境は?
その文法エラーを見れば当たりは付けられると思うんだけど
試しにその文法エラー見せてみ
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変数の推移が分かるように、
1行づつステップインでデバッグできるツールって
ないのでしょうか。
VC++などのデバッグ環境に甘えてしまっているせいか、
「文法エラーはないが思うように動作しない」という状況になると
手の打ちようがなくなってしまうので……。
0708デフォルトの名無しさん
NGNGperl -d
http://www-sampei.ctrl.titech.ac.jp/perldoc/perl_19.html
0710デフォルトの名無しさん
NGNGflock 無しなら問題ないことをチェックした上で、perl -v の出力を
書きましょう。
0711名無しさん@Emacs
NGNGページのデータを収集したいのですがどうすれば良いのでしょうか?
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です。
0713デフォルトの名無しさん
NGNG流せるならば、その方法をご教授お願いします〜。
0714デフォルトの名無しさん
NGNGopen(OUT, ">/dev/dspW");
print OUT $sound_in_raw_format;
あるいは、Audio::Play を使う。
0715713
NGNGですが、私はまだ浅学なので、その文が理解できませんでした、、。
具体的な使用例とか書いて下さるとありがたいんですが〜、お願いします〜。
0716デフォルトの名無しさん
NGNGそういうときは〜CPANで検索〜
http://search.cpan.org/search?query=Audio%3A%3APlay&mode=all
0718デフォルトの名無しさん
NGNG理解してるんですが、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個人的な経験から言えば、perl に附属のドキュメントが一番分かりやすい。
日本語訳は
http://www.harukaze.net/~mishima/perl/man/perlref.1.html
http://perl.infoware.ne.jp/documents/perlboot.ja.html
あたり。
0721夏時間制導入反対
NGNGサマータイムのせいだろ。
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デフォルトの名無しさん
NGNG103 - 4- 6 17 : 59 : 59
103 - 4- 6 18 : 0 : 0
1049562000 = 1049565600
うちではこうなった。(Windows2000/ActivePerl 5.6.1)
0723夏時間制導入反対
NGNG103 - 4- 6 17 : 59 : 59
103 - 4- 6 18 : 0 : 0
timelocalの方も、TZ=Japanならこうなる。
1049562000 = 1049565600
TZ=US/Mountainだと、確かに
1049616000 = 1049619600
になるな。
0724719
NGNGありがとうございます!
確認したら確かにタイムゾーンがUS/Mountainになっていました。
(知人の依頼でCGIを作成していたのですが、サーバがアメリカに
置いてあるレンタルサーバのようです)
サマータイムがlocaltimeでどのように実現されているかは知り
ませんでしたので、全く見当がつかずに困っていました。
お答えいただきありがとうございます。
0725デフォルトの名無しさん
NGNGperl ..\nantoka.pl .\file
fileが .. ディレクトリに移動しちゃうんだけど。
仕様なの? fileは読みこんでるだけです。
0726デフォルトの名無しさん
NGNGみたいに表示させようとして
$a=5;
$b=4;
print "$a[$b]\n";
ってやると、$aが配列と判断されるのは言語的にくさい
0727デフォルトの名無しさん
NGNG漏れは自然だと思うが。
print $a . "[$b]\n"じゃだめなのか?
0728デフォルトの名無しさん
NGNGprint "${a}[$b]\n";
print "$a\[$b]\n";
とか、回避策なんていくらでもあるじゃん
単なるレキシカルアナライザの問題を
言語の問題にすりかえてしまう>>726に乾杯
0729デフォルトの名無しさん
NGNG(プ PHP知らないくせに)
0730デフォルトの名無しさん
NGNGttp://member.nifty.ne.jp/hippo2000/perltips/phpperl.htm
ここ見てこい。
0731デフォルトの名無しさん
NGNGWebでしか使えねーPHPとPerlを一緒にすんな。
いや使えることは使えるが。
つーか、糞エサに食いつくのはやめれ。
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNG目的にもよるが、gethostbyname() などを使う。
あるいは use Socket6 しておいて、
getaddrinfo() や getnameinfo() 使うとか。
こまかいことしたければ Net::DNS http://www.net-dns.org/
0738デフォルトの名無しさん
NGNG単にアドレスを引きたいだけ? なら、gethostbyname()。
0740738
NGNG意外かも知れないが、それを真面目にやろうとすると結構大変(な筈)。
Unix 系の環境で、ホスト名が与えられていると仮定してよいなら
my $hostname;
chomp($hostname = `hostname`);
my @hostent = gethostbyname($hostname);
my @addrs = @hostent[4..$#hostent];
でいい。Net::Interface が使えれば一番いいが、これは 5 年前の
モジュールで今はまともにコンパイルできない。裏技として、手近な
ホストに接続して getsockname() を使う手もあるが、それをやるぐ
らいなら ipconfig (もしくは ifconfig)の出力を解析する方がまし
かな。
0741デフォルトの名無しさん
NGNGていうか、「自分のアドレス」ってのがなんなのか
よく考えてみるんだな。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGなんなのよ
0744デフォルトの名無しさん
NGNGどちらにせよ NAT の内側だったりすると、用途によっては
簡単にはわからない。
0745デフォルトの名無しさん
NGNGつけられるものであって……
コンピュータには、インターフェースをいくつもつけら
れるし……
おまけにひとつのインターフェースにIPアドレスをいく
つもつけられもするし……
0746デフォルトの名無しさん
NGNG統計情報を取りたいのですが、perlで抽出出来ないでしょうか?
123main
234 sub1
345 sub2
456 image
OSはWindows,使用しているメーラーはNetscape7.0です。
抽出したいデータはNetscapeのメール形式です。
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNGDelphiはオブジェクト指向言語
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG区別がめちゃくちゃ。
関数型は lisp とか calm とかだよ。
0752デフォルトの名無しさん
NGNG元は 「関数型言語の C から、オブジェクト指向の C# に変われば生産性があがるのは当たり前」 みたいな文。
知らないで言ったのか釣りだったのかはともかく、以降何度も引き合いに出されている。
0753デフォルトの名無しさん
NGNG関数型を知ってるのかとことん問い詰め末尾再帰
0754デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/digikei/ten.html
∧..∧
キタ━━━━━━( ´Д`) ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
'/ / \ __  ̄ ̄ ̄ ̄ ̄ ̄_____
/ / . \ __ ______
,.,..,.、,,,,/ /、,\ . )..,_ /i
;' ´Д`(ノ,:、,/ /:,.:::: ::`゛:.:゛:`''':,'.´ -‐i  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
'、 ;: ...: ,:. :.:.:.\ \ _;.;;..; :..‐'゛  ̄  ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
`"゛"゛' ''`゛ `'(___)
0755デフォルトの名無しさん
NGNG>Cは関数型じゃないぞ。構造型だ。
んなの初耳だ。
なんだ構造型って。
最近こういう無知が多いのは、春先だからか。
0756デフォルトの名無しさん
NGNG> なんだ構造型って。
検索すれば?
0757デフォルトの名無しさん
NGNGtp://yuzu.ee.uec.ac.jp/natu01/PHe1/activities.html
> 完成作品予想図『機械語(バイナリ)』を根っことしたツリー構造型プログラミング言語年表
ってのはなにか違うと思われ。
0758デフォルトの名無しさん
NGNG凄い進化だな( ´,_ゝ`) プッ
0759デフャHルトの名無しbウん
NGNG[構造化言語 C] でぐぐれ
スレ違いなんでそろそろPerlの話に戻そうかねぇ
6っていつ出るのよ?
0760デフォルトの名無しさん
NGNGしかし、googleしてみると、C言語を関数型だと思い込んでいる向きはけっこう
あるみたいね。「関数」を使うから関数型だと。ぎゃ〜はっはっはっは。
0761デフォルトの名無しさん
NGNGそりゃ、C言語では、擬似構造化プログラミングを行うのが
普通だろうが……
うわ、よく調べてみると、構造化プログラミングのパラダイ
ムをそもそも知らない連中が、C言語は構造化プログラミング
言語だとか言っているみたいだね。
根腐れ起こしてるね〜、プログラミング世界も。
0762デフォルトの名無しさん
NGNG定義も無いまま当てはめないでくださいね
0763デフォルトの名無しさん
NGNG? 「擬似構造化」って用語か?
おまえ、だれかが「擬似昼食」って云ったら、
「そんな用語ありません」って突っ込むのか?
0765デフォルトの名無しさん
NGNGよって擬似構造化プログラミングをできる言語は構造化言語である。
もし構造化言語なんて存在しないなんて考えなら、現実的ではないが
間違っていないことにしてやろう。
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG★その目で確認すべし!!★超おすすめ★
0772デフォルトの名無しさん
NGNGリアルでも痛いやつだな
0773デフォルトの名無しさん
NGNGおさまる訳じゃないし、
プログラミングスタイルが伴っていなければ
何型使っても意味ないだろ。
lisp を手続き型的に使うのは簡単だが、
それじゃ言語の特徴を生かせない。
関数型的思考を身につけないと。
0774デフォルトの名無しさん
NGNGだって遅いもん。リソース食い荒らすもん > elispで関数型なプログラム書くと。
で、これはC言語か〜っていう、笑っちゃうelispのプログラムがそこら中に
満ちあふれているわけ。
パラダイムの他に、フレーバーっていう概念もあったじゃんか、プログラミング
言語/システム/ポリシーなどを特徴づけるものとして。
0775デフォルトの名無しさん
NGNG再帰関数だけが関数型ではないんではないかと。
let でローカル変数いっぱい作って
setq しまくり戻り値を捨てまくりのプログラムが
早いとは思えん。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG胸の大きさで稼いでいるわけではありません。
0778デフォルトの名無しさん
NGNGそれにしても結構悠長にやってるな。>Perl6開発
0779デフォルトの名無しさん
NGNGこういうもんなんですか?
使ってみたのはcygwin付属のperlです。
0780デフォルトの名無しさん
NGNG詳しい説明は省くが、
その行をテキストモードで読みこめ。
0781779
NGNGwhile( <FILE> )
{
chomp;
こんな感じですが、バイナリモードにしてるつもりは無いんで、
テキストモードで読んでるつもりです。
0782デフォルトの名無しさん
NGNGっていうか、みんな期待してるの? Perl6に。
0783デフォルトの名無しさん
NGNGParl5すら使いこなせてないのに、Perl6に期待するなんてめっそうもない!
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG恐ろしいことに、そう教えている教育機関もあるようでつ。
0787デフォルトの名無しさん
NGNG"C言語" "関数型の言語"
とか
"C言語" "関数型言語"
とかをキーワードにして検索すると結構見つかるね。
それもac.jpドメインだったりして。。どうなってるの?
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG適当な解説ページがあればそれも。
あと、perlでネイティブコードを生成する方法を教えてください。
0790デフォルトの名無しさん
NGNGActivePerlをインスコする。
Windows用のperlでのネイティブコードって意味か?
0791デフォルトの名無しさん
NGNGperlcc とか perl2exe(perlexeだっけ?)でぐぐってみそ
0792デフォルトの名無しさん
NGNGs/教育機関/洗脳機関/;
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$/ = "\x0a\x0d";
とか
$/ = ""
としてもダメ?
0795デフォルトの名無しさん
NGNGそれでいいんじゃないかと思うけど、その他の解として
$HASH->{HASH} = { map { $_ => 0 } keys %{$HASH->{HASH}} };
とか。キーの値がA-Zならこうとか。
$HASH->{HASH} = { map { $_ => 0 } 'A' .. 'Z' };
0796793
NGNGありがとうございます。大変勉強になりました。
$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;
上記のように少し深い構造のハッシュになってしまうと、スライスを
どのように取れば良いのかわからないのです。
0797796
NGNG$HASH->{HASH}->{KEY1} = 1;
$HASH->{HASH}->{KEY2} = 2;
$HASH->{HASH}->{KEY3} = 3;
で
$tmp = $HASH->{HASH};
@$tmp{'KEY1', 'KEY3'};
@$tmp{ keys %$tmp };
とかならできるのですが、、
0798デフォルトの名無しさん
NGNGたぶんこれでいけるはず。
@{$HASH->{HASH}}{'KEY1','KEY3'};
@{$HASH->{HASH}}{keys %{$HASH->{HASH}}};
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGwhile (/<b>(.+?)<\/b>/g) {print $1,"\n"}
</b></a>ってのも名前にあげられてしまいます。
0803デフォルトの名無しさん
NGNG$_に何入れてんのさ
0804デフォルトの名無しさん
NGNG.*?
じゃないの。
あと、\/b>はいらないと思われ。
0806言わぬが華かもしれないけど…
NGNG0807デフォルトの名無しさん
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デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGcygwinを使ってないのでよくわからんけど、
その仕様だとwindowsのテキストファイル(改行=CRLF)を
処理するのは面倒そう。
active perl は "\x0d\x0a" = "\n" でつ。
0814デフォルトの名無しさん
NGNGと
.+?
の違いって何ですか??
0815デフォルトの名無しさん
NGNGmy $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 ActivePerl
NGNGuse 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> .*
0文字以上最大マッチ
> .+?
1文字以上最小マッチ
0818779
NGNGただのバグだったのかな?
0819813
NGNG嘘ですた。解説どうもです。
入出力のときにテキストだと "\x0d\x0a" <=> "\x0a" の
変換が自動的に行われるのです。
ですから $/ も "\x0a"でつ。
0820デフォルトの名無しさん
NGNGhttp://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とPerlの区別がつかない人もWEBプログラミング板に行ってください。
って書いてあるのに理解できませんか??
(その上「スレ立てるまでもない」で親切に答えてくれた人がいるってのに・・・)
ってそれだけだとアレですので俺の見解を書いておくと、
「無理です」
Cookie確認CGIに飛ばしたらいい。
Cookieの仕組みとか調べてごらんよ。
ググルで
「netscape cookie specification set-cookie」
とかをキーワードにして検索するんだよ。日本語訳やって公開してるやつもいる
みたいだよ。
0822デフォルトの名無しさん
NGNG次にアクセスした時に、前に渡したCookieを持ってるかどうか
調べたらいいんじゃ?
Cookieはclientがserverに送ってこそ初めて意味があるわけで、
clientが受けとったかどうかなんて知る必要はない。
0823デフォルトの名無しさん
NGNGみわけがつかなくて困る、っていう話なんだろうけど、
そういうのはPerlの話ではなくてWebプログラミングの話なので
そもそも板違いなわけです。
こっちのほうがいいと思うよ。→ http://pc2.2ch.net/php/
0824こういった副作用の定義ってされてるんでしょうか?
NGNGmy $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デフォルトの名無しさん
NGNGTie::Scalar を使ってデバック出力かければ評価されるタイミングが分かるような気がするな
本物のスカラーと、Tie::Scalar は違うかもしれんし
今ちょっと手が離せないんで試せないけど、誰かやってみない?
Perlの内部を探るのが本筋何だろうけど、そこまでは出来ない(^^;
0826デフォルトの名無しさん
NGNGいのでは(&&, || とかを除く)。
0827デフォルトの名無しさん
NGNG左結合の言語もあったような気がするけど手元に資料なし。
0828デフォルトの名無しさん
NGNGttp://sb-online.genki.co.jp/top.html
アップデートするたびにクソゲーになっていくゲームです!
これでよく月々1800円もとれますね!
Supraなどに乗っている写真が張ってあるから行ってみれば
全然話がちがう! Supraなんてどこにもない!
まさに詐欺! 詐欺詐欺詐欺詐欺詐欺詐欺詐欺
とりあえず、上二つはeqが左オペランドを先に、右オペランドを後に評価するという事が分かっていれば問題ないよね。
で、下は、Perlの演算/関数呼び出しの引数が参照で渡されるからこうなるんだよ。
$i eq ++$i
これは、$iの参照がeqの左オペランドになり、++$iも(副作用により値は増加しているものの)$iの参照が右オペランドになる。
左オペランドと右オペランドは共に$iの参照だから値も同じで、だから結果は真になる。
$i eq $i++
この式は、左オペランドは$iの参照で、右オペランドは"$iをインクリメントする前の値"の参照になる。
この時左オペランドの値はこの式を評価する前より増加していて、右オペランドの値はこの式を評価する前の$iの値になるよね。
直感とは異なる結果にはなるけど、参照渡しによってコピーのオーバーヘッドを避ける為に、こういう仕様になっているんだろうね。
0830デフォルトの名無しさん
NGNG自動でコマンドプロンプトが閉じないようにするにはどこで設定すればいんでしょうか?
0831デフォルトの名無しさん
NGNGこれはperlに標準では存在しない関数なのですが。
0832デフォルトの名無しさん
NGNG付いてる、ちょっとバネの強いボタンのことだよ。それを押したときの話。
0833デフォルトの名無しさん
NGNG中身を全部コピーして、bbb.pmにしたら使えました。
b.pmというのは何かとぶつかっているのですか?
環境はv5.8.0 built for MSWin32-x86-multi-threadです
0835デフォルトの名無しさん
NGNG納得
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNGbがサブルーチン定義されてなければ文字列。
されてればその結果。
0838デフォルトの名無しさん
NGNG引数を受け取るbが定義されてたらどうなんだ?
0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGこんにちは!!!!!!!!!!!!!!! だとか
あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお だとか。
0841デフォルトの名無しさん
NGNGsort の話しか思いつかないけど、もしかして他にも罠あったりする?
教えて偉い人
>>840
webプログラミング板逝け。
0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGファイル名のワイルドカード
@c_files = glob("*.c");
とかそんな感じ
0844CGI経験10日の初心者です。
NGNG以下の問題が全く解くことが出来ず困っていている為、質問しました。
<問題>
あるサイトの管理者は、とあるプロバイダからアクセスし、
違反行為を行っている(荒らし行為を行っている)人に大変困っています。
そこでアクセスログを収集してプロバイダ単位で規制を行うことにしました。
HTMLからCGIを読み込み、
そのプロバイダからアクセスされた方に対してはエラーメッセージを表示させなさい。
・・・で、私なりに調べたのですが、
HTMLの方では<!--#exec cgi="拡張子がCGIファイル名"-->
っていうのでCGIのファイルをアクセス出来るのが分かったのですが、
呼ばれたCGI側の処理が全くわかりません。
($ENV{'REMOTE_HOST'}っていうのでプロバイダ名は収集出来るようですが・・・。)
どなたかプログラムのサンプルを書いて頂けませんでしょうか?
大変恐縮なのですが、ご協力して頂けたら嬉しいです。
また、そのような処理が掲載されているサイトがあれば教えて頂けると嬉しいです。
0845デフォルトの名無しさん
NGNGWeb製作板にきくといいよ。
それと、2chはあんまり役に立たないから、
地道に検索して、専門サイトを巡礼した方がいいよ。
0846さちえLOVE
NGNG0847さちえLOVE
NGNG0848デフォルトの名無しさん
NGNG板違い
0849CGI経験10日の初心者です。
NGNGご指摘、ありがとうございます。
今までもgoogleなどの検索サイトで検索を行っていたのですが、
いろいろな複数のキーワードで地道に探してみます。
0850デフォルトの名無しさん
NGNG/:\.____\
|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
http://saitama.gasuki.com/mona/
0851デフォルトの名無しさん
NGNGひとつアドバイスしておくと、REMOTE_HOSTを得られるようにしているところは少ない。
0852デフォルトの名無しさん
NGNGCGIレスキューとかサンプル沢山あるよ。
http://www.rescue.ne.jp/
0853デフォルトの名無しさん
NGNG> CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
> CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
って書いてあるんだけど、見えませんか??
それと、>>844に書いてあるようなのはサーバーの設定でやったほうが楽ですよ。
httpd.confとか.htaccessとかですね。
CGIの話でもPerlの話でもないので、Webプログラミング板に行った方が
いいと思いますよ。
0854デフォルトの名無しさん
NGNGすまんな・・・俺もPerlは電脳を調べたらわかるんだけど
脳内にはないから教えられないよ。
0855デフォルトの名無しさん
NGNG@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ファイルとして上書きする、という部分なのですが。
お願いします。
コピペミスでないなら、まずはperlの入門書を通読
0857855
NGNGお願いだから、教えてくださいよ。
0858デフォルトの名無しさん
NGNGで、$numってのはどこで出てきたの?
0859デフォルトの名無しさん
NGNGできあがったvote.logみりゃすぐわかる。
0860デフォルトの名無しさん
NGNG857=855はなんでそんなにえらそうなんだろう。
0861デフォルトの名無しさん
NGNGよし、初心者の漏れといっしょに考えよう
0862855
NGNGopen(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演算の直後に
$votenum[$num] .= "\n";
って入れてみ。
0865デフォルトの名無しさん
NGNG$votenum[$num] = $votenum[$num] + 0;
$votenum[$num] = $votenum[$num] + 1;
はどうよ。
0867デフォルトの名無しさん
NGNGOOで書かれたサンプルプログラムで分かりやすい解説ついてるのとか
ありませんか?
0868デフォルトの名無しさん
NGNG書き込む処理の前に
$,="\n";
と入れると幸せかもしれません。
0869855
NGNGそう言われるとわかります。で、\n追加して区切ってやると。
perldoc perlbootとか、どうかな。
日本語訳:http://perl.infoware.ne.jp/documents/perlboot.ja.html
0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNGif(条件){$val1=$val2;}
0874デフォルトの名無しさん
NGNGhttp://flex.ee.uec.ac.jp/texi/perl/perl_toc.html
0875デフォルトの名無しさん
NGNGそれだと条件の時のみ代入、じゃないでしょうか?
自分がやりたいのは具体的に・・・
$a = 条件zの一番最初の数字
とした場合
$bに$a以外の条件zを代入、としたいのです。
0876デフォルトの名無しさん
NGNG?
0878デフォルトの名無しさん
NGNG0879875
NGNG$a = $z;
$zに入るべき文字は二つあり、日替わり
$b = $zの$aに代入されていない方;
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGないぽ
0884デフォルトの名無しさん
NGNGなにをいきなり唐突に……
配列であることを変数名で明示してるんじゃない?
Perlでは $r と @r は区別されるから、プログラム的な意味はないけど
あくまで分かりやすさということで。
0885デフォルトの名無しさん
NGNG単純なスカラと勘違いして代入しないよう、念のため。
0886デフォルトの名無しさん
NGNGあ、それ俺もまったく同じ。
配列とかハッシュは目的別に変数名を付けるからちゃんと分かるけど、
リファレンスは区別がつかないからね。
0887デフォルトの名無しさん
NGNG$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デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG言葉がありません。ありがとうございます。
0890デフォルトの名無しさん
NGNGただハッシュにイロイロ代入するだけだろ?
%HASH = (A=>10, B=>20, C=>30, D=>40, E=>50);
0891890
NGNG見にくいけどこんな書きかたも出来る。
%HASH = (A,10, B,20, C,30, D,40, E,50);
AとかBは、クウォートしないとエラるかも。
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNG%in = split(/[&=]/, $ENV{QUERY_STRING});
とかやる。
0894デフォルトの名無しさん
NGNG%hash = qw(A 10 B 20 C 30 D 40 E 50);
0895887
NGNG私は極基本的なことを忘れていたようです。
ハッシュへの代入は
%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でやろうと
していることなのでこのスレに書かせていただきました。
0897デフォルトの名無しさん
NGNG↓のサイトの人なんか詳しいかもね。
赤の館
http://www.55555.to/
0898デフォルトの名無しさん
NGNGman file
0899デフォルトの名無しさん
NGNGただ、一番基本形の書き方は必ず2〜3コくらいあるので忘れないようにしよう。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG0902896
NGNG調べてみたら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が正しい。
0905デフォルトの名無しさん
NGNG考慮していないのなら、考慮すればよい。
よくある解決方法は、前処理として一端データを問題のない文字コードへ変換する。
たとえば日本語EUCやUTF等にだ。
その後必要であれば、元の文字コードへ戻す。
上記の方法が、なんらかの問題により適用できないのであれば
以下の文字コードの後に\を付け加えることにより回避する。
ソ兎浬欺圭構蚕十申會箪貼能表暴予禄噂喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭
−(全角ハイフン)Ы(ロシア文字)�\(ローマ数字の9)
しかし、文字コードを統一せずに処理をしてしまうこと自体に問題があるので
緊急対策的な方法は必ず破綻する。
データを処理する前に、問題の無いデータへ加工することが、最も負担が少なく
(コード別に処理プログラムを作ったり、例外的な分岐を追加せずに済む)また
問題も少なくなる。(コードのみとうしもよくなり、速度も期待できる)
0906903
NGNG早速のアドバイスありがとうございます。
件のツールが処理する元のデータはバイナリ(より正確にはMacのリソース)なんで、
>よくある解決方法は、前処理として一端データを問題のない文字コードへ変換する。
は無理なんです。すみません。
ただ、考え方の方針として「処理前に問題の無いように加工しておく」ってのは
参考になりましたんで、その方向で考え直してみます。
0907デフォルトの名無しさん
NGNGそれって○バイト目で強制的に分割されてるんじゃないの?
ダウト。
=>は左オペランドが識別子であれば、クォートを省略できる。
スレタイもPerlでいいと思うけど?(Perlが正しく、perlは間違い、とまでは思わないけど)
Perl => 言語
perl => Perlの処理系
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNGダウト
>perl => Perlの処理系
あほすぎ
0912デフォルトの名無しさん
NGNG人を阿呆呼ばわりするならその根拠を述べろよな。
0913デフォルトの名無しさん
NGNG反発するまえに調べろよな
0914デフォルトの名無しさん
NGNGなんでだ?perlはPerlの処理系の一つだろ?
昔どっかで読んだ記憶がある。
perl以外にPerlの処理系はなさそうだが。
0915914
NGNGttp://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デフォルトの名無しさん
NGNGShift_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デフォルトの名無しさん
NGNGtr/\n//d
chop は末尾を削るだけ。改行文字を削るなら chomp がよい。
0919デフォルトの名無しさん
NGNGchopした結果をprintしてみるとかいう基本的なことはやらないのかい?
0920デフォルトの名無しさん
NGNGflock関数が使用できないOSがあると聞いてます
こちらはwin98seでcygwinを使っていますが
この関数は使えますか?
0921920
NGNG>>920
の質問は解決しました、どうもすいません
0922デフォルトの名無しさん
NGNG結果を書いてもバチはあたるまいに。
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGEncode.pmを使って文字コード変換したいのですがうまく変換してくれません。
jcode.plでの
&jcode::convert(\$text,"euc");
と同じことをするのは
$text=encode("euc-jp",$text);
ではないのでしょうか?
0925924
NGNG↓みたいにencodeの前にdecodeするとうまくいきました。
$text=decode("shift-jis",$text);
$text=encode("euc-jp",$text);
ただこの場合、decodeの際に元文字コードが分かっていることが
前提になると思うのですが、分からない場合は
元文字コードが何であるかを調べるメソッドってあるのでしょうか?
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG○>>910=>>913の意見が聞きたいところだが。
0928デフォルトの名無しさん
NGNG# /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
0931デフォルトの名無しさん
NGNGlibディレクトリに入っているモジュールのバージョン違いを
自分のディレクトリに入れたのですが、それを優先的に使いたい場合は
どうすればいいのでしょうか?
0932デフォルトの名無しさん
NGNGuse 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デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNGPerlにはそのようなものってありますか?
0936デフォルトの名無しさん
NGNGリファレンス使えばもう何でもあり。
0937デフォルトの名無しさん
NGNG0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNGPerlにはないんですか?
0940デフォルトの名無しさん
NGNGある。
0941デフォルトの名無しさん
NGNGサンプルありますか?
0942デフォルトの名無しさん
NGNGコムソートってなんですか?
0943デフォルトの名無しさん
NGNGcommon sort
0944デフォルトの名無しさん
NGNGあふぉか
comb sort
かなり効率のよいsort
0945デフォルトの名無しさん
NGNG超分かりやすくて情報量が多いページを教えてください。
0946デフォルトの名無しさん
NGNG書 籍 代 を ケ チ る な よ
0947デフォルトの名無しさん
NGNG検索しる!
0948デフォルトの名無しさん
NGNGperlについているのがかなり良い!!
0949デフォルトの名無しさん
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д` ) < 2Get!!!!!!! (決まったか?
/, / \______________
(ぃ9 |
/ /、
/ ∧_二つ
/ /
/ \
/ /~\ \
/ / > )
/ ノ / /
/ / . / ./. (゚д゚) < 兄ちゃんやったね!2ゲットだよ
/ ./ ( ヽ、 ゚( )−
( _) \__つ / >
0950デフォルトの名無しさん
NGNGしいたけの傘の部分を上から見たものに見えます。
しかも調理の際、よく熱が通るようにつけるバッテンの
切込みまでもが本物そっくりです。
これは私個人の推測なのですが、IE の作者は実は食通
で朝食で食べる野菜炒めに必ずしいたけを入れるタイプ
ではないでしょうか?
少なくとも冬場のおでんには入れているはずです。
実は、私も中止ボタンがしいたけに見えて、危うく食べ
そうになり困った経験があります。どなたか同じ経験を
お持ちの方、このスレで熱く語りませんか
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNG明示的に動かせたっけ?
っていうか明示的に動かす必要に迫られたことないような。
0954デフォルトの名無しさん
NGNG明示的には動かせねぇよ。
しかるべきときに勝手に動く。
0955デフォルトの名無しさん
NGNGっていうか明示的に動かしてもしょうがないのでは?
0956デフォルトの名無しさん
NGNGだけ余分なリソースを開放したいとか。
0957デフォルトの名無しさん
NGNG>finalizerを走らせたいとか、
は別にどうでもいいが、
>長時間動くスクリプトでsleepに入る前にできる
のはりソースの厳しいマシンだと嬉しいかも
0958デフォルトの名無しさん
NGNGできませんでした。
search DBD::ODBCしてもリスト出てこなかったよー。
0960 ◆vZrORbBkXs
NGNGprint?? "文字列" -"ファイル名"
だった記憶があるんですが誰か教えて下さい。
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGopen(FILEHANDLENAME, ">filename") || die "Can not open file for output:$!";
binmode(FILEHANDLENAME); # if you output binary data
print FILEHANDLENAME "hogehoge";
close(FILEHANDLENAME);
0963 ◆vZrORbBkXs
NGNGありがとうございます!!
0964 ◆vZrORbBkXs
NGNGファイル書き出しする事に前のファイルの中身が消えてしまうんですけど
前の中身を消さずに追加していく方法はありませんか?
お願いします
0965デフォルトの名無しさん
NGNG0966 ◆vZrORbBkXs
NGNG教えて下さい
0967デフォルトの名無しさん
NGNGまずは、君が調べてみたのか?
調べたのならどう調べたのか書いて見れ
話はそれから
0968 ◆vZrORbBkXs
NGNGここは質問スレですよね?
私がスレ違いならば帰ります
帰ってください。お願いします。
0970 ◆vZrORbBkXs
NGNG>>962さんお願いします
ファイルの中身を消さずに追加していく方法を教えて下さい
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG質問スレだからどうだっていうの?
とりあえずヒントはたくさん与えてもらってるんだから、あとは検索ぐらいできるでしょ。
1から10まで教えてもらってばかりいちゃ、何も身につかないよ。
0973デフォルトの名無しさん
NGNGperldoc -f open or die
0974デフォルトの名無しさん
NGNGでは、教えてあげよう
まず、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おいおまえ!
この前コマンドプロンプトの起動のさせ方覚えたばっかしの初心者に、
そんな難しいこと言うんじゃねぇよ。
そもそも、googleって何だよ?クエリーって外国人の名前か?
専門用語連発するんじゃねぇよ。わけ分からん。
0977デフォルトの名無しさん
NGNG氏ね。>>974は何も間違っちゃいない。
0978デフォルトの名無しさん
NGNG合ってます
0979デフォルトの名無しさん
NGNG演算子の優先度の関係上、 or を使う方がよい。
|| と or は働きは同じだが前者は優先度が非常に高く後者は非常に低い。
open(FILEHANDLENAME, ">>filename") or die "Can not open file for output:$!";
>>975
実行してみればすぐに分かる。おそらく君の意図通り動く。
いずれにせよ、openみたいな基本的なコマンドを
「うっかり忘れました」なんてみえみえの嘘ついてる時点で好感度最悪。
「優しい」解答なんか返ってくるはずがない。
>>976
お前誰?
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNGスレ違いじゃないよ。住む世界が違う。
君にぴったりなのは小学校か中学校だ。大抵優しく教えてくれる。
本当に小・中学生なんだったらすまんな。プログラマの世界は義務教育じゃないんだわ。
0982デフォルトの名無しさん
NGNG「プログラマの世界」なんていうのはそもそもないわけだし。
0983デフォルトの名無しさん
NGNGまあそうなんだけどさ。
プログラムって手取り足取り教えてもらうものか?
それで本当にプログラムができるようになるのか?
自分では一切調べないで人に全部書いてもらってプログラムしてるって言えるのか?
もし他人に全部書いて欲しいんだったら、スレ違いだろ。
WebProg板に改造してもらえるスレとかあった(ような気がする)からそっちじゃないか。
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGサンプルと称して、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> ↓DQN用のスレ。
> WebProg 初心者の質問 Part3
> http://pc2.2ch.net/test/read.cgi/php/1045091733/
ワロタ。すんごい電波がゆんゆん飛んでますな。
0988Mr. Moonlight ◆r0zx1vMqaw
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1048519394/l50
0989デフォルトの名無しさん
NGNGXPのディレクトリ半角スペースあるんすけど、これ%20じゃだめじゃないすか。
どうやったら、マイドキュメント内のCGIファイルの文法チェックできるようになりますか?
0990nobodyさん
NGNG\でエスケープすればいい
0991デフォルトの名無しさん
NGNG0992962
NGNG詳しい解説ありがとう。
0993デフォルトの名無しさん
NGNGうざく無い限りは教えるようにしている。
新人に教えるときにも参考になるしね。
0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1048519394/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。