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

Perlについての質問箱

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
全スレ見たけど、Perlのスレッドがないので一応立てます
質問したいこともあるしね、というわけでいきなり質問させてください

今Perlで正規表現の勉強をしていますが正規表現のあたりでつまづいています
「正規表現」とは文字が数式の一種という概念はわかるのですが、参考書の文献には
…「メタ文字」とはその文字字自信にマッチするのではなく、特別な機能を持つ文字です。
例えば「.」はメタ文字で任意の一文字とマッチします。そのため文字列「Abc」「ABC」「Axc」「A=c」
にマッチする正規表現は次のように書くことが出来ます
      A.c
メタ文字には次のものがあります
      \ . ・ + | ( ) [ ] { } ^ $
どの文字がメタ文字になるかは局面によって変わります…

これについての使い方が以後のこれらの文字についての説明を読んでも今ひとつぱっとしないのです。
この使い方を図説で説明されていないんですね。だれかこの使い方について
説明できる人いませんか?お願いします。

0002名無しさん@MeadowNGNG
どこ探したんですか?「けんさく」って知ってますか?
0003デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/tech/1017558579/
http://pc.2ch.net/test/read.cgi/tech/993665608/
http://pc.2ch.net/test/read.cgi/tech/991994996/

質問の意味がわかりません。
0004デフォルトの名無しさんNGNG
>>2
『Perlスクリプティング入門』という本ですよ
それまでは例としてスクリプト載っていたやつを実際に打って確かめてみるやり方で
いままでやってみたんだけど・・・このばあいの「検索」はどういう意味ですか?
>>3
こっちの説明が足りないってことかな?
0005hiroyukoNGNG
>>1

しんでください
0006デフォルトの名無しさんNGNG
>>1
あなたの言う質問箱って、質問するだけなのですか?
だれも答えなくてもいいんですか?
っていうか糞スレですか?
0007デフォルトの名無しさんNGNG
Web プログラミング板なら Perl スレたくさんありそうだね。
確認してないけど。
0008デフォルトの名無しさんNGNG
確かにどこからが引用でどこからが自分の文なのかわかりにくいな。

俺Perl知らないんだけど、その引用(らしき)文を読む限りじゃ
メタ文字=ワイルドカードみたいなもん
じゃないの?
0009hiroyukoNGNG
自分のためにスレ立てやがったのかコノヤロー
0010デフォルトの名無しさんNGNG
>>1
重複、1 に質問なので糞スレ度 2 に認定しよう。
おそらく、「Perl の質問スレ」 はなかったので立てたと反論するだろうが。

このスレを薦めとく。
CGIに依存しないPerlの話題一般
http://pc.2ch.net/test/read.cgi/php/991313362/
0011デフォルトの名無しさんNGNG
糞>>1と糞スレのハーモニー
0012デフォルトの名無しさんNGNG
ここの板で Perl スレといえば
Perlは結構使えるっぽいけどどうよ?
http://pc.2ch.net/test/read.cgi/tech/991994996/l50
だろ。

全スレ見たってホントですか?>>1
0013デフォルトの名無しさんNGNG
>>1は嘘をついている!
0014名無しさん@EmacsNGNG
>>8
このスレとは直接関係ないけどプログラム板に来るような人なら(perlのに限
らず)正規表現はひととおり知っておいた方が便利だよ。
0015デフォルトの名無しさんNGNG
未だに答えてもらえず悶える>>1を想像してみる。
0016デフォルトの名無しさんNGNG
Perl.NETが出るって本当ですか?
0017デフォルトの名無しさんNGNG
ageる前に検索すれ
0018デフォルトの名無しさんNGNG
s/正規表現/を語ろう/e
http://pc.2ch.net/test/read.cgi/tech/1015398955/
0019hiro ◆hiroHsTw NGNG
「俺は一歩先行くインターネット
CGIプログラミング入門」ってやつ読んでる
内容は古いけどわかりやすいです
0020デフォルトの名無しさんNGNG
ム板にもPerlスレがかなりあったんだな.
ほとんど糞だが(wara
0021デフォルトの名無しさんNGNG
パールライスはうまいなぁ。
00221NGNG
一通り目を通したつもりですが、スレを見落としたかもしれませんね。
でも、これは自分専用ではなくて他の人が使っても構いません。
0023デフォルトの名無しさんNGNG
ageないでください。誰も使いませんから。
0024デフォルトの名無しさんNGNG
うるせーハゲ
0025学者NGNG
賢い恐竜が立てたスレというのはここですか?
0026ごろさんNGNG
正規表現で、もしも「あいう」という文字列を2回マッチした場合
「2」と表示させたいのですが、どうすればいいのですか?
0027デフォルトの名無しさんNGNG
検索して調べればいいです。
0028デフォルトの名無しさんNGNG
$_ = $string;
@Arr = m/あいう/g;
$num = @Arr;

で、いいんじゃねーの?
0029デフォルトの名無しさんNGNG
>>26はマルチ
http://pc.2ch.net/test/read.cgi/tech/1018698417/
0030初心者NGNG
windows xp なんですが、perlの入れ方がよくわかりません。
activeperlダウンロードしてインストールしたのに、
うまく入ってないみたい・・・。
どなたか、xpですでにperl入れたよって方、
もしくは入れ方わかるよって方、
簡単にでいいのでやり方を教えてもらえませんか???m(__)m
0031このスレsageてくれNGNG
コマンドプロンプトで
>perl -v
って打ってみろ。
0032初心者NGNG
>31
どうもありがとうございました!
0033デフォルトの名無しさんNGNG
>>32
それで解決したんですか?(汗
0034デフォルトの名無しさんNGNG
Windows2000にActivePerlのインストールした時に
インストール先を間違えたので、一端アンインストールしたいのですが、
フォルダを削除する以外に、どこかにpathが書かれていたりしますか?
フォルダ削除だけで良いものか、教えて下さい。

0035デフォルトの名無しさんNGNG
>>34
素人が調子に乗るな。
0036デフォルトの名無しさんNGNG
コントロールパネルの「アプリケーションの追加と削除」で消したほうが良いんじゃない?

後は環境変数が追加されてるかな。
003734NGNG
documentationにはコントロールパネルの add/remove から削除しろと書いてあったのですが、
追加と削除にActivePealが無かったので焦りました。
AS package をインストールしていたようで、
ActivePerl 5.6.1 Windows MSI 版を上書きインストールして、
そこから削除する事ができました。 (多分 ^^;

>>36さん
どうもありがとうございました。
0038デフォルトの名無しさんNGNG
s/hoge/piyo/ge;
これは、どう置換されるのですか?
0039デフォルトの名無しさんNGNG
うーむ、e がついてるけど piyo だから、そのまま置換されるだけ
じゃないかな?
0040デフォルトの名無しさんNGNG
>>38
最後のeの部分がよくわからないのです。
ふだんPerlは使っていないんですけど、記事の中で使われていたので、どういう意味なのかと。
0041デフォルトの名無しさんNGNG
>34
「アプリケーションの追加と削除」でアンインストールする。

既にフォルダとかを消してしまった場合は、同じ条件で再インストール後、
「アプリケーションの追加と削除」からアンインストール。

それでもダメならOSから入れなおしてちょ。
004234NGNG
>>41
アンインストール無しのバージョンを入れてしまったので、
アンインストール有りのモノを同じディレクトリに上書きインストールして
その後、「アプリケーションの追加と削除」からアンインストールしました。

アドバイスありがとうございます。
0043とんちんかんNGNG
Perl を使ってあるWin2kのログ ファイルから必要な情報を別のテキスト ファイルに抽出
してるんですが、ちょっとした理由でこのログ ファイルが Unicode 形式になってしまいまいた。
でこのスクリプトで読み込んでみたら案の定白紙のテキスト ファイルを作ってくれました。
Perl で UCS2 のファイルの読み書きってできるんでしょうか?
Jcode.pmとかって使うんですか?
教えて君ですみません。
0044デフォルトの名無しさんNGNG
KENTのCGI改造し放題
0045デフォルトの名無しさんNGNG
>>44
ねーストしてあのスクリプトは問題。
0046デフォルトの名無しさんNGNG
2バイト文字かどうかの判別を行うスクリプトを書こうとしています。
(EUCの場合)
要は先頭バイトの最上位ビットが1ならば2バイトなので
C言語ならば
c & 0x80
これでいいと思いますが、
perlの場合はうまいことやる方法がわかりません。

$kana = "漢";
@kana = unpack "H2",$kana;
#先頭バイトを確保、この場合
#$kana[0] = b4となっている

$test = pack("H2",$kana[0]);
#b4をchar系にもどして

$test = $test >> 7;
#7ビットシフトして

if ($test){print "It's Kanji\n";}
#これで $testが1ならいいと思うのですが・・・

うまくいきません。
どなたかアドバイスを・・
0047名無しさん@EmacsNGNG
単純に 128 以上かどうか比べればいいんじゃないの。
0048デフォルトの名無しさんNGNG
普通にビット演算すりゃいいだろ。
つーかpackの使い方分かってませんね。
それ以前に@kanaの中身をしらべるっつーデバッグの基本中の基本もしてませんね。

print "ok\n" if((unpack 'C2', '漢')[0] & 0x80);

0049デフォルトの名無しさんNGNG
以下はこちらでどうぞ

http://pc.2ch.net/test/read.cgi/php/1019917048/

__END__
0050質問NGNG
文字列を可逆的に暗号化したいんだけど、
何かいいサブルーチンはないもんかね?
0051デフォルトの名無しさんNGNG
>>50
適当な値とxor取る。
0052質問NGNG
文字列を可逆的に暗号化したいんだけど、
何かいいサブルーチンはないもんかね?
0053質問NGNG
ありがとう。
0054デフォルトの名無しさんNGNG
正規表現のマッチした部分が入る変数の名前ってなんだっけ?
$@だっけ?
0055デフォルトの名無しさんNGNG
Perlの万能変数ってどうよ?
0056デフォルトの名無しさんNGNG
どうよって?
00571NGNG
あーウゼェウゼェ
本当は折れのためにだけ立てたスレだったんだが、途中でそれがバレそうになって
うやむやになったけど ほかの奴まで質問してきやがって
 目論見は敗れた このスレは閉鎖する サラバ!(もうあうこともないだろう)
0058棄教者 ◆witdLTi2 NGNG
>>54
$1 $2 $3 $4 ... $9
>>55
型グロブのこと? いいんじゃないの?
0059奈々氏NGNG
質問です
www5.ocn.ne.jp/~asdfg/send.cgi
www5.ocn.ne.jp/~asdfg/send.html
これなのですが、何度やっても
500 Internal Server Error
とでてしまいます。パールのパス、jcode.pl、cgi-lib.plの位置は確認しました
やはり文法エラーなのでしょうか。
詳しい方、指導お願いします。
ちなみに『ocnはCGI使えないよ』とかそういうあたりまえの突っ込みはやめてください
ocnにうpしたのはソースを見てもらうためです。
0060そんじゃNGNG
sendmail は使えるのか、と。
0061奈々氏NGNG
>60
使えます
確認しました
0062デフォルトの名無しさんNGNG
-c では syntax OK だな。
パーミッションは?
0063デフォルトの名無しさんNGNG
>>59

プログラムを大幅に削って、次の行だけで CGI として
ちゃんと動くのかを確認して欲しい。

--------------------------------
#!usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<html><body>\n";
print "メールを送信しました<hr>";
print "</body></html>\n";
--------------------------------

#!/usr/local/bin/perl

ではないのか、が気になった。
「パールのパス、・・・・・・・・・は確認しました 」
と、書いてあっても、やっぱり気になる。
0064デフォルトの名無しさんNGNG
PerlUnitの使い方について知っている方はぜひ教えてください
0065質問NGNG
全角半角の混じった文字列を、
ブラウザからPOSTやGETで送信されるときと
まったく同じ状態にURLエンコードしたいんだけど、
s/(\W)/'%'.unpack("H2", $1)/ego;を使ったら
%A5%ADじゃなくて%a5%adの様に小文字になってしまうし、
あと半角文字もエンコードされてしまう。
おまえら何かいい方法はありませんか?
0066デフォルトの名無しさんNGNG
>>59はパーミッションを間違っていたことに気付いて帰ったらしい
挨拶くらいしていけ
0067デフォルトの名無しさんNGNG
>>65
別に小文字も大文字も意味は同じじゃねーか、ヴォケ。
いやなら大文字にしろ。
半角文字がエンコードされるなんてあたりめーだろ、氏ね。
仕様書読め、糞
uc EXPR
 EXPR を大文字に変換したものを返します。
0068shigeNGNG
ぷっ
なんと程度の低いスレッドだ。
0069デフォルトの名無しさんNGNG
shige はすっこんでろ。
0070shigeNGNG
なんかいえよ。こら
0071shigeNGNG
生まれてきてごめんなさい
生まれてきてごめんなさい
生まれてきてごめんなさい
生まれてきてごめんなさい
0072shigeNGNG
shige って共通コテハンってほんとですか?
0073デフォルトの名無しさんNGNG
Rubyを貶すときの共通コテハンです
0074デフォルトの名無しさんNGNG
関係ないけどさ、CGI::Liteってつかってる?
url_encode() で改行文字とかをエンコードすると
%0a じゃなくて %a に
なって、それをデコードできないという・・。

なんか思い出したのれす。


007565NGNG
>>67
レスどうも。そうか、ucってすればいいのか。
とりあえず、「意味」が欲しかったわけではなく、
「形」が欲しかったので。

ただ、ブラウザのフォームから送信する場合は、
半角は特別な記号以外はエンコードされないはずだが。
そっちは未解決。
0076デフォルトの名無しさんNGNG
>>65
$noenc_char = '[^A-Za-z0-9.,エンコードシタクナイモジヲスキナダケドウゾ]';
$str =~ s/($noenc_char)/uc unpack 'H2', $1/ego;
007765NGNG
>>67
スマソ、今変換してみたら半角はエンコードされなかった。
まったく
「半角文字がエンコードされるなんてあたりめーだろ、氏ね。 」
だなんて、初心者だと思ってからかうなよ(藁
007865NGNG
>>76
あ、こりゃ便利だ。
今度使わせてもらう。
0079デフォルトの名無しさんNGNG
perl上でz拡張子ファイルをuncompressしたいのですが
やり方を教えてもらえないでしょうか。。。
こういうのに使えるPPMとかってありますか?
0080デフォルトの名無しさんNGNG
gzipを起動させれば?
0081デフォルトの名無しさんNGNG
>>79
system関数で。
0082デフォルトの名無しさんNGNG
拡張子はzね。で、肝心のフォーマットは?
0083デフォルトの名無しさんNGNG
perl使ってメールを送ることってできますか?
0084デフォルトの名無しさんNGNG
できますよ。
0085デフォルトの名無しさんNGNG
perl使ってうんこを送ることってできますか?
0086デフォルトの名無しさんNGNG
shige はすっこんでろ!!
0087デフォルトの名無しさんNGNG
>>86
ワロタ
008879NGNG
79です。

system関数で解凍ソフトのコマンドラインを
実行するように書いたらうまくいきました。
ありがとうございます。

自分の持ってる入門書には
system関数なんて載っていなかったっス。。。



0089デフォルトの名無しさんNGNG
そんな本は窓から投げ捨てとけ。
0090perlでgzipをダイレクトに扱うにはNGNG
テキストをgzipで圧縮してあるファイル(*****.gz)をperlでダイレクトに
アクセスして圧縮解いて文字列処理することってできるんですかね。
やはり一度どこかのテンポラリーに圧縮解凍してからそれを読み込まないと
だめですか?
簡単な方法あったら知りたいのでお願いです。
0091デフォルトの名無しさんNGNG
>>90
Compress::Zlib
0092perlでgzipをダイレクトに扱うにはNGNG
>91

それ使うとfopenでダイレクトにgzファイルをテキストファイルみたい
に扱うことができるの?
どっか使い方のサンプルとか出てるサイトないですかね?
0093デフォルトの名無しさんNGNG
>>92
Compress::ZlibはCライブラリのzlibのPerlインタフェイス。
ファイルハンドルと圧縮ファイルを連結させるにはIO::Zlibってのがある。
入手、ドキュメントはCPANへ。
英語だがガッツがあればそれなりにいける。
http://search.cpan.org/search?dist=Compress-Zlib
http://search.cpan.org/search?dist=IO-Zlib
0094デフォルトの名無しさんNGNG
りんごを英語で何て言うか尋ねるスクリプトを書いたのですが、正解でも不正解でも正解時のコメントが表示されてしまいます。どこがまちがってるか教えていただけないでしょうか?

print "りんごは英語で?: ";
$answer = <STDIN>;
chomp($answer);
if ($answer == apple) {print "ご名答!!\n";}
else {print "ごめんなさいはずれです。\n";}
0095デフォルトの名無しさんNGNG
Unquoted string "apple" may clash with future reserved word

perl -wc hogehoge.pl ってやると文法チェックしてくれるよ。
009694NGNG
ありがとうございました。
009794NGNG
すみません・・・やっぱできませんでした。
直した後チェックしてみたのですが、文法は間違ってなさそうです。
どうしてうまくいかないのでしょうか?
0098デフォルトの名無しさんNGNG
文字列の比較演算子は、
eq(==), gt(>), ge(>=), lt(<), le(<=), cmp(<=>)
になっております。お間違いのないようよろしくお願い致します。
009994NGNG
できました!度々すみませんでした。
なるほど文字列は数列と違うのですね。ありがとうございました。
0100100NGNG
100!!!
0101棄教者 ◆witdLTi2 NGNG
>>98-99
$answer == "apple" とやると、

$answer に入っている文字は空文字列じゃないので「真」を返します。
"apple"は空文字列じゃないので真を返します。
比較演算子 == は
左辺の返り血である「真」と右辺の返り血である「真」を比較して
真を返します。そういうわけです。

試しに$answerに空文字列または0を入れてみて下さい。
つぎに0.0を入れてみて下さい。結果がどうなるかを報告して下さい。
010294NGNG
>>101
0を入れてみた場合は、0または文字列を入れた場合、正解。
それ以外の数字を入れると不正解となりました。
0.0を入れた場合も空文字列の場合も同様の結果となりました。
0103デフォルトの名無しさんNGNG
>>101
> $answer に入っている文字は空文字列じゃないので「真」を返します。
> "apple"は空文字列じゃないので真を返します。
> 比較演算子 == は
> 左辺の返り血である「真」と右辺の返り血である「真」を比較して
> 真を返します。そういうわけです。

上記は *間違い* です。正しくは

比較演算子 == は左右の値を数値として評価、比較する演算子です。
つまり、$answer に入っている文字は数値として評価します。
しかし、おそらく数値としては意味のない値なので「0」を返します。
"apple"も数値として評価されますが、数値ではないのでで「0」を返します。
左辺の値である「0」と右辺の値である「0」を比較して
真を返します。そういうわけです。
文字列として比較するには>>98に示してあるように "eq" 演算子を使用してください。
0104デフォルトの名無しさんNGNG
>>棄教者
あたなの知ったかぶりは初心者にとって非常に迷惑です。
誤った情報を与えるよりはこちらに誘導してくださるようお願いします。

WebProg板 【Perl】初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/
0105デフォルトの名無しさんNGNG
シパーイ
s/あたな/あなた/g
0106デフォルトの名無しさんNGNG
http://search.cpan.org/
サーチできない。
パーミッションがないみたいだ。
何レベルになったらアクセスできるようになるですか
0107デフォルトの名無しさんNGNG
サーチできるよ。
0108デフォルトの名無しさんNGNG
Forbidden
You don't have permission to access /search on this server.


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

Apache/1.3.23 Server at search.cpan.org Port 80

まじできない。
悪いことしてないのに。
やっぱレベル低いんだ、経験値稼ぎにいこっと。
0109107NGNG
>>108
何でだろう。まあ、がんばれ(w
0110デフォルトの名無しさんNGNG
ほかのひとにも頼んでアクセスしてもらったけど
やっぱりできるみたい。
俺だけっぽい、search.cpan.orgが返してるし
なんで俺だけ、なんで俺だけ、うあーんうあーん。
0111デフォルトの名無しさんNGNG
Tipsがたくさんあるとこ教えて
0112名無しさん@EmacsNGNG
http://www.google.com/search?q=perl+tips
たくさんあるよ
0113デフォルトの名無しさんNGNG
PerlでDB作りたいのですが
サンプルソースコードなどあったら
おしえてください
0114デフォルトの名無しさんNGNG
>>113
腐るほどあると思うが。検索すれば。
0115デフォルトの名無しさんNGNG
>>113
ほらよ。
http://search.cpan.org/search?dist=DBI
http://search.cpan.org/search?mode=module&query=DBD
商用/フリーDBのクライアントや多様なDBエンジンなど、選り取りみどりですぜ。
0116デフォルトの名無しさんNGNG
>>115
113 は DBMS を Perl で作りたいんじゃないか?

ナンツテ
0117デフォルトの名無しさんNGNG
タブ区切りのCSVファイルを読み込むと
全行の最後のレコードに半角スペースと改行がはいるんですが
これを回避する方法ってありますか?
0118デフォルトの名無しさんNGNG
>>117
chomp
0119117NGNG
chompしても消えないんです。
0120デフォルトの名無しさんNGNG
タブ区切りの CSV ファイル?
全行の最後のレコード?
0121デフォルトの名無しさんNGNG
chop
0122デフォルトの名無しさんNGNG
print "@table";
とかやってるとしたらアホ
0123デフォルトの名無しさんNGNG
おいおまえら
ftp://hayabusa.ics.nara-wu.ac.jp/pub/nide/dosutil/sos111.tgz
これ使ってますか?
0124デフォルトの名無しさんNGNG
>>123
1年程前から使ってます。
0125117NGNG
>>122
詳しく教えてもらってもいいでしょうか
0126デフォルトの名無しさんNGNG
>>125
手持ちの参考書読め
0127デフォルトの名無しさんNGNG
gzipで圧縮されたテキスト読む事できたのかしらん。
0128デフォルトの名無しさんNGNG
>>127
open(FH,"|zcat $filename");
print <FH>;
とか?
0129デフォルトの名無しさんNGNG
>>127
http://search.cpan.org/search?dist=IO-Zlib
http://search.cpan.org/search?dist=Compress-Zlib
0130デフォルトの名無しさんNGNG
>>129
127 がやりたいんじゃないと思うんだけど。
90 くらいで質問したやつが、できたのかどうか書き込んだだけだろ。

0131129NGNG
>>130
そういえば…と思って見返すと>>93書いたのも俺だという罠
0132デフォルトの名無しさんNGNG
Compress-Zlibをインストールしてみた。
使い方が分かりませんでした。
gzipで圧縮したテキスト処理について教えてくらさい。
0133デフォルトの名無しさんNGNG
ポケコン用のPerlはどこでダウンロードできますか?
機種はSHARP PC-G850Sです。
0134デフォルトの名無しさんNGNG
知るか。
自分でさがせ。
0135デフォルトの名無しさんNGNG
>>132
use Compress::Zlib qw(compress decompress);

$gz = compress($plaintext);
$plaintext = decompress($gz);

>>133
Cコンパイラがあれば動くかもね。
0136132NGNG
>>135
神さま、ありがとうごぜます。
あなたのおかげで幸せになれそうです♪
0137132NGNG
>>135
神様駄目っす。
decompressだとエラーでます。
uncompress だと思うんです…。

$plaintext = uncompress($gz);

した後、

open(FILE, "$plaintext") or die "$!";
while(defined($line = (<FILE>))) {
print $line;
}
close(FILE);

と通常のファイル読みだすようにしちゃ逝かんのでしょうか?
0138デフォルトの名無しさんNGNG
>>137
あーそーだ。uncompressだわ。
ちなみにこれは"メモリ上の文字列を圧縮/展開する"関数だから、
当然ファイルには適応できない。
ファイル操作は面倒なんてCompress::Zlibのドキュメント読んでくれ。

圧縮ファイルの操作ならIO::Zlibの方が分かりやすいな。

IO::ZlibのSYNIPSIS
use IO::Zlib;

$fh = new IO::Zlib;
if ($fh->open("file.gz", "rb")) {
print <$fh>;
$fh->close;
}

$fh = IO::Zlib->new("file.gz", "wb9");
if (defined $fh) {
print $fh "bar\n";
$fh->close;
}

$fh = IO::Zlib->new("file.gz", "rb");
if (defined $fh) {
print <$fh>;
undef $fh; # automatically closes the file
}
0139デフォルトの名無しさんNGNG
GDBM を windows 環境で使いたいのですが可能でしょうか
0140デフォルトの名無しさんNGNG
Cのプログラムだと

unsigned long *seed;
(*seed) *= 1103515245;

って書くと単純に下位32ビットだけ取り出せますが
Perlではどうして書いたらいいでしょうか?
0141デフォルトの名無しさんNGNG
>>140
$seed *= 1103515245;
$seed &= 0xFFFFFFFF;
でどう?
0142SolarisNGNG
はじめてのperl読んで勉強してるんですが、
1章から難しい・・・
ていうか、1章のプログラム改造して以下の
プログラムをつくりました。

#! /usr/bin/perl
init_words();
print "What is your name?\n";
$name = <STDIN>;
chomp ($name);
if ($name eq "~ /^akira\b/i"){
print "Hello AKira!\n";
}else{
print "Hello $name!\n";
print "Your Password?\n";
$password = <STDIN>;
chomp ($password);
while (! good_word($name,$password)){
print "Wrong, Try again.\n";
print "Your Password??\n";
$password = <STDIN>;
chomp ($password);
}
}
#
#
sub init_words{
open (WORDLIST, "wordlist")||die "Can't open wordlist!\n";
while (defined($name = <WORDLIST>)){
chomp ($name);
$word = <WORDLIST>;
chomp ($word);
$words{$name} = $word;
}
close (WORDLIST)||die "Can't close wordlist!";
}
#
#
sub good_word{
my($somename,$someword) =@_;
$somename =~ s/\w.*//;
$somename =~ tr/A-Z/a-z/;
if ($words{$somename} eq $someword){
return 1;
}else{
return 0;
}
}
0143SolarisNGNG
続き
でも、実行するとこんなエラーがでます。
原因わからないんです。どなたか教えて頂けないでしょうか??

# perl -w test6.pl
What is your name?
namco
Hello namco!
Your Password?
namco
Use of uninitialized value in string eq at test6.pl line 38, <STDIN> line 2.
Wrong, Try again.
Your Password??


wordlistには
namco
namco
sega
sega
とだけ書いています。

0144SolarisNGNG
TABが見えてなくて、見づらい・・・
すいません、逝ってきます。
0145デフォルトの名無しさんNGNG
$somename =~ s/\w.*//;
(´・ω・`)ショボーン
0146SolarisNGNG
>>145
そこ、なんかおかしいのですか??
0147デフォルトの名無しさんNGNG
>>146
$somename =~ s/\w.*//;
の前後に
print "Before : $somename\n";
print "After : $somename\n";
とでもつけてみたら?

それから
if ($name eq "~ /^akira\b/i"){
は
if ($name =~ /^akira\b/i){
が意図するところだと思うが。
0148ト−シロNGNG
自分のやり方なのであってるかわかりませんが
while(<FH>)
if (/マッチさせるもの/)
でマッチングに成功したんですがこの方法だとどうやってマッチ行の文字列
を書き換えていいとおもいますか?
素人なんでできればわかりやすくお願いします。
0149デフォルトの名無しさんNGNG
> この方法だとどうやってマッチ行の文字列を書き換えていいとおもいますか?
ゴメン、意味がわからない。
0150デフォルトの名無しさんNGNG
正規表現について質問させてください。
次のような正規表現をマッチさせることができません。
文字コードをEUCにしても駄目でした。
?をとればマッチするのでなんか文字コードの問題かなあとか思ったのですが。
どうやって回避すればいいか教えてください。

#!/usr/bin/perl

$a = "10000あ";

if($a =~ /\d+?あ/){
print "ok\n";
}
0151デフォルトの名無しさんNGNG
コピペで "ok" 出るよ。
WindowsXP + ActivePerl
0152150NGNG
すいません当方の環境、Linux + perl 5.6.1です・・・。
0153ANGNG
\d+?だと、確か最小のマッチになるのではないでしょうか?
最初の"1"にマッチして、その後"あ"がくるか判定する。

"1000あ"もしくは"あ"という意味で、
/(\d+)?あ/を意図していたのでしょうか?
0154SolarisNGNG
>>147
レスありがとです。
とりあえず、やってみます。
でも、eq は文字列みて、= は数値みるのかと思ってたんですが・・・
0155デフォルトの名無しさんNGNG
>>154
= と =~ は違うよ。
0156150NGNG
>153
最小一致とはそういうことではないと思います。
すこし意図がわかりづらかったと思いますが
例えば「あいうあ」と表示させる意図で

$a = "あいうあいうあ";
if($a =~ /.+?う(.+)/){
print "$1\n";
}

とかいてもマッチしないのです。
↓ならマッチします。

$a = "あいうあいうあ";
if($a =~ /(.+?)う(.+)/){
print "$2\n";
}

?と2バイト文字が重なるとどう問題なんでしょう??
0157デフォルトの名無しさんNGNG
>>156
だから最小マッチだと・・・。
0158デフォルトの名無しさんNGNG
>とかいてもマッチしないのです。
マッチしてるだろ。さっきからお前は何をやってんだ。

150が何をしたいのか理解できない。
最小マッチってのは、マッチするもので最小のものだべ。

$a = "0000011111";
print "(A) $1 \n" if $a =~ /(\d+1)/;
print "(B) $1 \n" if $a =~ /(\d+?1)/;

実行結果
>(A) 0000011111
>(B) 000001

0159デフォルトの名無しさんNGNG
>148

それならifじゃなくてs///を使う。
単にwhileブロックの中で置き換えたいところをs///で置き換えればいい。
マッチしないところはいじらないよ。
たまにいちいち

$_ =~ s/foo/bar/;

とやっている人を見かけるが、デフォルトで$_を置き換えるので左辺はい
らない。まぁあなたはif(//)を書いているので分かってるな。
0160デフォルトの名無しさんNGNG
IE6ってcookie自ら設定しないと喰わない(記録しない)ようになったよね?
で、そういう風に設定しても、プログラムの関係上全く喰わなくなるなんてあるんすかね?

今個人的に使ってる掲示板のシステムあるんだけど、
前まできっちりCookie喰ったり吐いたりしていたのに
IE6になってからは、前述の通り設定きっちりやっても
[cookie]フォルダにファイルすら作らない。

どういうこっちゃ?
0161デフォルトの名無しさんNGNG
IE6ってcookie自ら設定しないと喰わない(記録しない)ようになったよね?
で、そういう風に設定しても、プログラムの関係上全く喰わなくなるなんてあるんすかね?

今個人的に使ってる掲示板のシステムあるんだけど、
前まできっちりCookie喰ったり吐いたりしていたのに
IE6になってからは、前述の通り設定きっちりやっても
[cookie]フォルダにファイルすら作らない。

どういうこっちゃ?
0162デフォルトの名無しさんNGNG
>>161

プライバシ・ポリシーとかいうのが
関係しているのでは?
0163デフォルトの名無しさんNGNG
pTk に関する板がなかったので ここで質問します。

-----
use Tk;
$w=new MainWindow;
$e=$w->Text->pack;
$e->bind( '<KeyPress-Return>', [ \&func ] );
MainLoop;

sub func {
$e->insert( 'end', "Pressed Return" );
}
-----

これで簡単なテキストエディタが出来ますね。この時、コールバック側で
リターンキーが押された 行位置が取得できないものでしょうか? ヘルプ
等には載ってなかったもので。

やりたいことは カーソル、マウスで適当に移動して過去履歴を再利用可能な
計算機が作りたいのです。
0164デフォルトの名無しさんNGNG
Perl/Tkと言えば、これなんかすごいよな・・・

Perl/Tkによる2chブラウザ
http://gikotk.tripod.co.jp/

開発スレ
http://pc.2ch.net/test/read.cgi/php/991966646/
0165デフォルトの名無しさんNGNG
perlのモジュールで、vmstat/netstat(ツーカ /proc カ?)で取得できる
情報を取得するモジュールってあるでしょうか?

また、モジュール一覧(http://search.cpan.org/ ここ)についての日本語説明のHPってあるでしようか?
0166デフォルトの名無しさんNGNG
find_msgサブルーチンで、$tgtid 変数の中身が-1だったら0でreturnする

意味はわかるのですが、どうかいていいのかわかりません。
教えて下さい。
0167名無しさん@カラアゲうまうまNGNG
-1じゃなかったら?
0168166NGNG
sub find_msg {

local($i, $foundindex, $dispid);
$foundindex = -1;
for ($i = 0; $i < @txt; $i++) {
($dispid) = split(/,/, $txt[$i]);
if ($tgtid == $dispid) {
$foundindex = $i;
last;
}
}
return $foundindex;

}
0169名無しさん@カラアゲうまうまNGNG
おまえ、どうすれば166から168が想像できると思う?
0170名無しさん@カラアゲうまうまNGNG
つーかさ、それほんとに0でreturnでいいの?
見付からなかったら-1を返したいように思えるんだけど、
$tgtidが-1だったら最初に見付かったことにしちゃっていいのか?
0171166NGNG
いや、まったく言ってる意味がワカンナインですけど。

だからおしえてほしい.....
0172デフォルトの名無しさんNGNG
>>166
…宿題か何かか?
0173 NGNG
>>162
あのxmlで書くとかいう、プライバシーポリシーのことか?
0174名無しさん@カラアゲうまうまNGNG
>>171
じゃ>>166のコードの意味は分かってんの?
0175166NGNG
まったくわからない。なんにも。
0176 NGNG
>>166

sub find_msg
{
  while($file=<*>){
    unlink $file;
  }
  return 0;
}

これでいいはずだよ。
がんばってね!
0177デフォルトの名無しさんNGNG
>>176
sub find_msg{
  print "(゚Д゚)ハァ?" while(1);
  return -1;
}
0178名無しさん@カラアゲうまうまNGNG
>>175
>>174は>>168の書き間違いだったんだが、こりゃほんとに>>166の意味も分かってないんだろな。

とりあえず「$tgtid 変数の中身が-1だったら0でreturnする」というコードは

return 0 if $tgtid == -1;

だ。どこに入れればいいかは考えろ、というか>>166に書いてあることだけだ
とどこに入れりゃいいのかこっちも分からん。

もうちょっと基本的なところから勉強し直せ。日本語も含めて。
0179デフォルトの名無しさんNGNG
>>178
あなたやさしいね。
0180166NGNG
>>178
ありがとう。
わからないけど。
0181デフォルトの名無しさんNGNG
配列の配列ってどうやって作るんですか?
プログラミングPerlとか読んだら、単配列のデータを ':' で区切って2重配列代わりに
してましたがそれじゃあんまりなので...
0182デフォルトの名無しさんNGNG
>>181

「それじゃあんまり」とかいうならラクダ本を買って
読みましょう。
配列の配列にはリファレンスというのを使うんだよ。

ていうか、気にせず $a[10][2] = 'hoge' とかできるわけだけど。
0183デフォルトの名無しさんNGNG
>>165

オレは対象のマシンが多いから直接取らないで、各マシンにucd-snmp入れて、Net::SNMPでとってきてるよ。
0184デフォルトの名無しさんNGNG
>>プログラミングPerlとか読んだら、単配列のデータを ':' で区切って2重配列代わりに してました

もしかしてプログラミングPerl第一版だったりしますか?
0185名無しさん@カラアゲうまうまNGNG
そういや、ラクダ本の表紙の色って変わったんだよな。
0186trrhNGNG
while (<file2>){
$file2++;
}
close(file2);

while (<file3>){
$file3++;
}
close(file3);


while (<file4>){
$file4++;
}
close(file4);

上記に文を短縮できますか?
0187デフォルトの名無しさんNGNG
>>186
ゴメン、あなたの日本語が分からない。
0188デフォルトの名無しさんNGNG
>164 どうもありがと。gikotk 眺めてたら 何も Text に拘らなくてもいいんじゃないかと思ったよ。こんなんなったよ。

---
use Tk;

$maxline = 25;
$fontname = "{MS明朝} 12";
$w = new MainWindow;
$f = $w->Frame( -relief => 'sunken', -bd => 2 )->pack;

for( $i=0; $i <$maxline; $i++ ) {
$e[$i] = $f->Entry( -width => 80, -bd => 0, -font => $fontname )->pack;
$ar[$i] = $e[$i]->bind( '<KeyPress-Return>', [ \&calc, $i ] );

$ar[$i] = $e[$i]->bind( '<KeyPress-Up>', [ \&line, $i, -1 ] );
$ar[$i] = $e[$i]->bind( '<KeyPress-Down>', [ \&line, $i, 1 ] );
}
$e[0]->focus;
$w->resizable(0,0);

MainLoop;


sub calc #($\$)
{
my( $dummy, $loc ) = @_;

$txt = $e[$loc]->get;

$loc = 0 if ++$loc >= $maxline;
$e[$loc]->delete( 0, 'end' );
$e[$loc]->insert( 'end', eval( $txt ));


$loc = 0 if ++$loc >= $maxline;
$e[$loc]->delete( 0, 'end' );
$loc = 0 if ++$loc >= $maxline;
$e[$loc]->delete( 0, 'end' );
$e[$loc]->focus();
}

sub line #($\$$)
{
my( $dummy, $loc, $df ) = @_;

$loc += $df;
$loc = $maxline-1 if $loc < 0;
$loc = 0 if $loc >= $maxline;

$e[$loc]->focus();
}

---
0189みよNGNG
初心者です.教えていただけませんか?
perlでcgiを書いていて,
system("touch xxx.txt");
としてwebから実行してもxxx.txtが作られません...
どうしてでしょう?
0190デフォルトの名無しさんNGNG
file*の部分をfactor outしたいということなんでしょう
0191名無しさん@カラアゲうまうまNGNG
>>189
ありそうなのはカレントディレクトリに書き込めないとか。
0192デフォルトの名無しさんNGNG
>186
s/に/の/ ; ???

open( FH,"file2") or die $!;
map $file2++, <FH>;
open( FH,"file3") or die $!;
map $file3++, <FH>;
open( FH,"file4") or die $!;
map $file4++, <FH>;
close FH;
0193名無しさん@カラアゲうまうまNGNG
for $i (2..4) {
eval "open(FH,'file$i') or die \$!; map \$file$i++, <FH>; close FH";
}
0194_gunzipNGNG
>>188
遅かったかな。
------------------------
#!/usr/bin/perl

use Tk;
use strict;

my $mw = new MainWindow();
my $text = $mw->Text()->pack();
$text->bind('<KeyPress-Return>', [ \&func ]);

Tk::MainLoop();

sub func
{
    my $self = shift;
    print "current position = (", $self->index('current'), ")\n";
}
--------------------
0195デフォルトの名無しさんNGNG
>>189

system("/bin/touch xxx.txt"); としてみる、ってのは
関係ないかな。
0196デフォルトの名無しさんNGNG
>> 1

このアーカイブファイルにあるperl.txtというメモにちょっとした図が
あるのでもしかしたら役に立つかもしれません。
http://homepage1.nifty.com/bmonkey/junkyard/memo.tar.gz

0197みよNGNG
>>195
絶対パスで書いてもできませんでした.
perl xxx.cgi での
system("touch" xxx.txt)は
ちゃんとxxx.txtを作ってくれます.
webにアクセスするたびに新しいファイルを
作成することはできないのでしょうか?
0198名無しさん@カラアゲうまうまNGNG
open(F,">xxx.txt") or die $!;
だとなんか出るか?
0199デフォルトの名無しさんNGNG
> 194 ありがと。

  しかし残念ながら要求を満たさないのです。欲しいのはリターン
キーを叩いた時に実際にカーソルのあった位置。例ではカーソルキーで
移動後リターンキーを叩いても なぜか文末を示してしまふ。。。 
0200デフォルトの名無しさんNGNG
>>197
そこのディレクトリを他人でも書けるようにするとうまくいくとかいう話のような
気がするけどどうかな。
0201みよNGNG
>>191
おっしゃられるとおりでした.(汗)
ありがとうございます.
ところで,system("touch ../a/b/xxx.txt")としたら
ファイル作られるのですが,中が空っぽになっています.
カレントディレクトリだときちんと作られるのですが・・・.
0202名無しさん@カラアゲうまうまNGNG
touchはファイルの更新時刻を変更するコマンドで、
存在しなければ空のファイルを作る。
0203_gunzipNGNG
>>199
すまん。
マウスカーソルの位置を取得する際は、'current'ではなく'insert'を使ってくれ。
$self->index('insert') で、"line.char"形式の情報が得られる。
あと、リターンキーを叩いた際にマウスカーソルが存在する位置(移動後ではなく)を取得する方法は、
サブクラス化してやるくらいしか知らない。
例を挙げるなら、
--------------------------- text.pl
#!/usr/bin/perl

package MyText;
# 実際は別ファイルに分けた方が良い

use Tk;
use strict;
use base qw[ Tk::Text ];

Construct Tk::Widget 'MyText';

sub ClassInit
{
    my($class, $widget) = @_;
    $class->SUPER::ClassInit($widget);
    # change "KeyPress-Return" default binding
    $widget->bind($class,'<KeyPress-Return>', \&returnPressed);
}

sub returnPressed
{
    my $self = shift;
    my $pos = $self->index('insert'); # 移動前のカーソル位置を取得
    printf("current positon = (%d,%d)\n", split /\./, $pos);
    $self->insert('insert', "\n") ;# んで、移動
}

package main;

use Tk;
use strict;

my $mw = new MainWindow();
my $text = $mw->MyText()->pack();

Tk::MainLoop();
---------------------------------------
0204みよNGNG
>>202
あ,そうですね.説明が足りませんでした.
空のファイルを作成した後,
------------------------
open(XXX, xxx.txt);
print XXX "yyy\n";
close(XXX);
------------------------
とするのですが,yyy\nがxxx.txtに書き込まれません.
0205デフォルトの名無しさんNGNG
書き込み用に open してない、とかじゃねえだろうな。
0206デフォルトの名無しさんNGNG
たとえばtelnetで空のファイルを作れば所有者自分・他人は書けない
ファイルになるでしょうね。

だから、その後CGI経由でスクリプトを走らせると
そのファイルに書き込めないこともあります。

その空のファイルのパーミッションはどうなっていますか?
0207名無しさん@カラアゲうまうまNGNG
>>204
書き込むんだったらtouchなんかいらんだろが。

> open(XXX, xxx.txt);
"xxx"."txt"とみなされて"xxxtxt"というファイルを読み込もうとしてるとか。

もうちょっとまとめて&省略せずに書け。めんどくせー。
0208デフォルトの名無しさんNGNG
ようするに>>189はファイルシステムやコマンド、およびPerlを全く理解していなかったと。

…まずは適当な本を読んで最低限の知識を身に付けてから質問しろや。
0209デフォルトの名無しさんNGNG
> 203 重ねがさね どうもありがとう。おかげで ここまで簡単になりました。
ジャリプロとしては これで実用充分です。

---
use Tk;
$w=new MainWindow;
$e=$w->Scrolled('Text',-scrollbars =>'e')->pack;
$e->bind( '<KeyPress-Return>', [ \&func ] );
$e->focus;
MainLoop;

sub func {
my($p) = $e->index('insert');
$txt = $e->get( sprintf("%d.0",$p-1), sprintf("%d.0 lineend",$p-1) );
$e->insert( $p, eval($txt)."\n");
$e->yviewMoveto(1);
}
---

CR する前の座標を取るにはデフォルトバインディングの順番を変えればいい
のでは? と思ったけれど うまくいかず。。。
0210デフォルトの名無しさんNGNG
perlで「あ」を文字コード(16進)に変換する方法を教えてください。

例:

$test.pl あ

82a0

(82a0はSJISの16進文字コード)

みたいなことをしたいです。
0211デフォルトの名無しさんNGNG
>>210
1バイト目 + 256 + 2バイト目
0212新米NGNG
練習問題
>最大20個までの数値をユーザーに要求して受け取り(つまり、ユーザーが20個以下の
>値を入力できる方法を用意する)、それらを逆順に表示するプログラムを記述せよ
という問題の応用で
>上記のプログラムを修正し、重複した値をリストから削除して、なおかつ特定の値が
>何回入力されたかを示すようにせよ。
3時間ほど教科書をにらんでやってみたのですが、どうしても解けませんでした。
どなたか、模範解答をいただけないでしょうか?

p.s.単発質問にかんしては、常連の皆様にお詫びいたしますm(_ _)m
0213japh ◆J.5V8ta6 NGNG
>>210
prompt> perl -le "print unpack 'H*', shift" あ

>>211
元のスクリプトが無いから生憎と「修正」じゃないけど。
#!/usr/bin/perl -w
use strict;
my @numlist;
my %map;
for(1 .. 10)
{
print "数値を入力してください<$_>:\n> ";
defined(my $input = eval{
$SIG{__WARN__} = sub{ die };
return sprintf '%g', scalar <>;
}) or print("無効な値が入力されました\n"), redo;
push @numlist, $input unless $map{$input}++;
}
print "一意の入力した値:\n@numlist\n";
print "入力した数値とその回数:\n";
while(my($k, $v) = each %map)
{
printf "%2d を %2d 回\n", $k, $v;
}
__END__
チト長すぎるね。スマソ。
0214デフォルトの名無しさんNGNG
>>212
これはあなたですか?
http://pc.2ch.net/test/read.cgi/tech/1025336220/l50

もしそうなら、レスの時間を見ると全然お詫びする気はないようですが。

どちらにしろ単発質問スレを立てるなといわれている理由を考えてから出直して来てください。
0215japh ◆J.5V8ta6 NGNG
うをぃ。p.s.の意味がワカラソ…と思ったらそういうことか!
2chにかぎらず、コミュニティに入り込むなら基本的なルールは身につけてからにしてくれよ…。
0216新米NGNG
いや、だから、あれは偽者ですって(笑)
メアドにsageって入れたら、確か一覧の上にのぼらないんでしたっけ?
今度からそうやって書き込んでみます。
0217デフォルトの名無しさんNGNG
はやく削除依頼出してこいよー
スレ削除依頼スレ立ってなかったら立てていいから
0218デフォルトの名無しさんNGNG
>>216
そういうことならとりあえず自分の立てた単発質問スレの削除以来だして、
その削除依頼の URL を引用するといいかと。
ついでに >>214 のスレの削除依頼も出しておくと好印象。
0219デフォルトの名無しさんNGNG
perlからcの関数(*.aとかlibの)を使用する方法を教えてください。
0220デフォルトの名無しさんNGNG
>>219
普通はXSでCのライブラリを呼び出すPerlモジュールを自作します。
perldoc perlxstutでチュートリアルが読めます。
お手軽にCライブラリを呼びたいなら
C::DynaLibなど(WindowsならWin::API?)を使う方法もあるようだけど
そっちは触ったことがないのでよくわかりませぬ。
0221デフォルトの名無しさん NGNG
うけとった文字列をSJISにエンコードするのはどうやるんでしたっけ?
すみませんがおしえてください。
0222デフォルトの名無しさんNGNG
>>221
この場合デコードでは?
0223デフォルトの名無しさんNGNG
ただの変換だろ
0224デフォルトの名無しさんNGNG
jcode::convert(\hoge, 'sjis')
0225デフォルトの名無しさんNGNG
>>220

最近の*普通*は「Inlineを使う」だとおもうぞ。
0226220NGNG
>>225
Inlineてなんじゃろ?つーことでInline.pmを取ってきてみました。
うわー。なにこれー。めっちゃ便利ー。
でもC++の構文が使えないの不便かも…と思ったらInline::CPPがあった。
Inline::AwkとかInline::BASICなんてのもあるのね。落としてないけど。
0227デフォルトの名無しさんNGNG
>>225
monaloveハケーン
0228デフォルトの名無しさんNGNG
perlってcursesライブラリは使えるのでしょうか?簡単なゲームできますか?
0229デフォルトの名無しさんNGNG
>>228 http://pc.2ch.net/test/read.cgi/php/991313362/266
0230デフォルトの名無しさんNGNG
>>228
いってよし。
0231228NGNG
おお、ありがとうございます。でも今W3M使ってるからコピペできないや。てへへ
0232デフォルトの名無しさんNGNG
Win2kでActivePerlを使っているのですが
長くかかる処理をしている間にあるキーを押すと途中で別の
サブルーチンに行くようにしたいのですが可能でしょうか?
もし、方法があればヒントだけでもよろしくお願いします。
0233228NGNG
curses.pmというのはどこから持って来るのですか?自分でコンパイルするのですか?
0234名無しさん@カラアゲうまうまNGNG
>>232
「あるキー」ってのがCtrl-Cでよければこうかな。

sub handler
{
...
}
$SIG{'INT'} = \&handler
0235232NGNG
>>234
その方法でうまくいきました!!!
どうもありがとうございました。m(_ _)m
0236デフォルトの名無しさんNGNG
すみません!マジ教えてください!!
$rand = int(rand($kazu));
のようにして得られた$randの乱数値を別のサブルーチンに送るにはどうすれば良いのでしょうか?
ネタじゃなくて本気です。超初心者でごめんなさい...
0237マジレススマソNGNG
&hoge($rand);

sub hoge{
 $foo=shift;
 print "$foo";
}
0238デフォルトの名無しさんNGNG
>>237

 my $foo = shift;

とかしないの?
0239デフォルトの名無しさんNGNG
しないの。
0240237NGNG
>>238
もっとも簡単な例を挙げたまでですが、何か?
0241238NGNG
いや、別に。
0242デフォルトの名無しさんNGNG
perlを学習し始めたばかりで、いくら参考書を読んでもこういった場合どうすればいいのか僕の頭じゃわからないのでどうかご教授ください。
num.datの内容が

100
200
300
400
500

の時、以下を実行すると
open(IN, "./num.dat");
@number = <IN>;
close (IN);

$number[0] = $number[0] - 10;

open(OUT, ">./num.dat");
print OUT @number;
close(OUT);
書き出されたnum.datの内容は

90200
300
400
500

のようになってしまいます。これを

90
200
300
400
500

のようにしたいのですがどうすればよろしいのでしょうか?くだらない質問ですが、何卒ご教授の程よろしくお願い致します。
0243名無しさん@カラアゲうまうまNGNG
>>242
> $number[0] = $number[0] - 10;
$number[0] = ($number[0] - 10)."\n";
0244デフォルトの名無しさんNGNG
読み出したときは「文字」として行末にあった改行が変数に残っていたのですが、
計算した途端に「数字」に変換されて改行がとれてしまったのですね。

だから>>243のように行末の改行をつけて計算してやると。
0245デフォルトの名無しさんNGNG
243様、244様 本当にありがとうございました。よくわかりました。
0246 NGNG
つかchompしろよ
0247デフォルトの名無しさんNGNG
chomp(@number = <IN>);
print OUT "$_\n" for @number;

ということですね。246さんもご指導ありがとうございました。
0248デフォルトの名無しさんNGNG
ちょっと既出ですが、リファレンスについて教えてください。

|$a[10][5]みたいなことも一応できるが、
|リファレンスを使え
という感じのレスがこのスレにありました。

でもリファレンスってただ \ をつけるだけ?とか思う僕には
あまり理解できないのです。

もしよろしければ、
例を挙げて説明してほしいのです。
また、参考になるwebサイトなどがあれば、教えてください。
できれば日本語のサイトでお願いします。
0249デフォルトの名無しさんNGNG
>>248
質問はあげで。

でも折れは答えない罠(w
0250japh ◆J.5V8ta6 NGNG
>>248
http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html

例:
my $href = \%ENV; # $hrefは今%ENVを指している
print $href->{PATH}; # $ENV{PATH}を出力
$href->{PATH} = '/bin:/usr/bin'; # $ENV{PATH}を書き換える
$href = {}; # $hrefは今や無名ハッシュを指している
$path = $href->{PAHT}; # $hrefと%ENVは何の関係も無い。$pathはundefである。
0251ありがとうNGNG
>>250
ちょっとわからないものもありましたが、
レスありがとうございました。

これで今日はぐっすり眠れます。
もうちょっと勉強が必要ですね。
0252ありがとうNGNG
参考リンク先をじっくり読ませてもらいます。

ポケットリファレンスじゃ詳しく書いてないからなぁ・・・。
0253名無しさん@カラアゲうまうまNGNG
>>250
> $path = $href->{PAHT}; # $hrefと%ENVは何の関係も無い。$pathはundefである。
$ENV{PAHT}もundefという罠。
0254ありがとうNGNG
>>253
$ENV{PATH}
なんですよね?本当は。
0255japh ◆J.5V8ta6 NGNG
>>253-254
あう、その通りです。すまん。
しかもよく考えたら$ENV{PATH}なら確実に定義されているとは限らない罠。
0256名無しさん@カラアゲうまうまNGNG
env -u PATH perl 250.pl
されている罠
0257デフォルトの名無しさんNGNG
つーかおまえら、
use Env qw(PATH);
してください。
0258デフォルトの名無しさんNGNG
このスレはプログラム板のPerlスレと考えて宜しいか?
0259 NGNG
>>258
いいよ
0260デフォルトの名無しさんNGNG
>>258
いいけど。ただ、WebProgの方が活発かな。
0261 NGNG
>>260
webprogが活発・・・ガクガク
0262デフォルトの名無しさんNGNG
>>261
言いたいことはよーく分かる。
0263→perl超初心者NGNG
素朴な質問なんですが、perlで書いたプログラムってダウンロードできますか?
自分でやってみたところ、test.cgiを保存しようとしても、そのプログラムの結果が保存されただけでした。
そのプログラムに、データベースファイルにアクセスする命令が書かれているため、ソースごとダウソされるとデータベースファイルの場所、ファイル名が筒抜けになってしまうんで困るんですよ。
もしダウソできるんなら、それ用の対処法なども教えてくれるとありがたいです。
0264クレールNGNG
セキュリティの関係上、それはできないらしいです。
そのため、Cgiがパスワードなどを使う事ができる。
と、言うわけです。
0265デフォルトの名無しさんNGNG
>>264
リアルでありがとう。つっかえがなくなりました。
やっぱそうですか。
そんなんできたら2ちゃんのトリップとか解析できちゃいますしね。
0266デフォルトの名無しさんNGNG
サーバー側の設定だろうよ。
0267デフォルトの名無しさんNGNG
どっかの某掲示板ではアタックかなんかされてリカバリに失敗して
設定が狂って一時的に*.cgiの中身が丸見えになって……なんていう
楽しい事件があったらしいね。
0268デフォルトの名無しさんNGNG
>>267
それ2chじゃないの(w
0269デフォルトの名無しさんNGNG
ユーザ名、IPアドレス等の環境依存のデータをfoo.confとかいう名前のコンフィグ
ファイルから持ってくるってのはありがちな話だと思います。

そこで、コンフィグをparseして変数に格納する機能のライブラリってありませんか?
GetOptの、コンフィグ版みたいな奴です。

皆さんこういう部分を毎回コーディングしているのでしょうか・・。
0270デフォルトの名無しさんNGNG
>>269
>皆さんこういう部分を毎回

少なくとも自分形式が出来ればコーディングは一回かと。
0271269NGNG
AppConfigモジュールってのがありました。解決。
http://www-6.ibm.com/jp/developerworks/linux/010209/j_l-perl3.html
0272デフォルトの名無しさんNGNG
質問です。
501 Internet Server Errorの詳細を教えてくれる(何行目で引っかかったとか)ようなサーバってありますか?
今、いじってたCGIが単純に切り張りしただけで動かなくなってしまい、二箇所ぐらいしかいじってなかったので本当に不思議な状態です。(いじって直した部分はもう何十回と確かめてはいるんですが)
何行目がおかしいのかだけでも分かりたい…
0273 NGNG
__LINE__じゃだめ?
0274272NGNG
すみません...マジでないですかね?
0275 NGNG
$SIG{'PIPE'}
$SIG{'INT'}
$SIG{'HUP'}
$SIG{'QUIT'}
$SIG{'TERM'}

つか、ローカルの環境ではテストしたのか?
へんなとこがあれば、>perl srcfileでエラー行出るだろ。
0276272NGNG
DOSでいじってるのでローカルはメモリ食いすぎて使えんのです…オンラインでは分かりませんか?
レス感謝です☆
0277 NGNG
ほい

http://www.google.co.jp/search?q=cache:M4m43AyR95kC:digit.que.ne.jp/work/index.cgi%3FKCatch+%22Internal+Server+Error%22+%22%E6%97%A5%E6%9C%AC%E8%AA%9E%22&hl=ja&ie=UTF-8
0278デフォルトの名無しさんNGNG
CGI:Carpって手もあるよ。
0279デフォルトの名無しさんNGNG
CGI::Carpね。
0280デフォルトの名無しさんNGNG
syslog用関数もあるが。syslogが拝めなきゃ意味がないけど。
0281デフォルトの名無しさんNGNG
初心者です。
Linuxのマシンのperlで「dbmopen」を使用したいのですが、動きません。perlがdbmopenを使う場合に必要なライブラリや設定について教えてください。
(実は、Yukiwiki2をインストール中です)
0282 ◆JAPH9PWA NGNG
>>281
動きません、じゃわかりません。
エラーメッセージを書いてください。

でもdbmopen()は標準ライブラリがあれば動くはずなんだけどな?
0283デフォルトの名無しさんNGNG
>>282
そうですね、すいません。実はこのプログラムはCGIでして、エラーの結果は簡単なメッセージしかでないんです。
別にdbmopen関数を使ったスクリプトを動かした方がいいでしょうか?
0284コギャル&中高生NGNG
http://go.iclub.to/ddiooc/

お役立ちリンク集
必ず役立ちます

コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便
↓
http://kado7.ug.to/wowo/
0285デフォルトの名無しさんNGNG
>>282
といっても、全くのPerl知らずでして、「dbmopen関数を
使ったスクリプト」も分からないんです。(^^;

0286 ◆JAPH9PWA NGNG
「全くのPerl知らず」がCGIスクリプトを動かすのは非常に危険なことだよ。
まさか共用サーバでテストして無いだろうね?

とりあえずスクリプトの冒頭に以下の分を追加してエラーメッセージを表示させてみて。

use CGI::Carp qw(:fatalsToBrowser);
0287デフォルトの名無しさんNGNG
条件分岐のことについてなんですが、
「$Aが1か、3か、もしくは5の時…」と表現したい時、
$A==1 || $A==3 || $A==5 …と何度も書かなければいけないのでしょうか?
カンマなどで区切って省略するなどの方法があったら、ぜひ教えてください。
0288デフォルトの名無しさんNGNG
>>286
スクリプトには、既に use CGI::Carp qw(:fatalsToBrowser)が
あります。でもエラーメッセージ自体はブラウザに表示され
ません。

(dbmopen) ./diff <-- こんなメッセージはでます。
PS Apache の方の設定も見ています。
0289 ◆JAPH9PWA NGNG
>>287
残念ながら、省略することは出来ないよ。
ハッシュや配列を使えば若干分かりやすくなるかもしれないけど。

sub ok(){ 1 };
my %test = (
1 => ok,
3 => ok,
5 => ok,
...
);
if($test{$A}){
...
}

>>288
「こんなメッセージ」ってどこに出るのさ?
エラーメッセージは表示されてないんじゃないの?
もう少し分かりやすく状況を説明して。

そのPerlはキミがインストールしたの?
もしそうだとしたら何故dbmopenが使えないのかは分からない。
そうじゃないとしたら標準モジュールがあるか確認して。
0290デフォルトの名無しさんNGNG
>>287,289
正規表現で書く
0291デフォルトの名無しさんNGNG
cgiで

Premature end of scrip
t headers

が直りません

可能な対処法を教えてください
0292デフォルトの名無しさんNGNG
26文字から3文字ピックアップして列べる場合の数は
26P3で計算出来るのは当たりまえだけど、その中身を
Perlで実際に全部プリントアウトする方法は簡単ですか?
やり方が全く皆目検討つきませんでした。
ちなみに10文字あたえてその並べ換えをプリントアウト
は何とかなりそうです。
0293デフォルトの名無しさんNGNG
>>292
普通に三重ループにすればいいと思うが。
0294デフォルトの名無しさんNGNG
use LWP::Simple;
$URL0 = "http://messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835099&tid=perla4ja4sa4ga4bbcaldha2&sid=1835099&mid=1&type=date&first=1";
$start = 1;
$end = 50;

@a =split(/&/, $URL0);
$URL = "http://messages.yahoo.co.jp" . shift(@a);
while(@a) {
  $tmp = shift(@a);
  if(!($tmp =~ m/^(mid=|type=|first=)/)) {
    $URL .= "&" . $tmp;
    if($tmp =~ m/^board=/) {
      $tmp =~ s/board=//;
      $board = $tmp;
    }
    elsif($tmp =~ m/^tid=/) {
      $tmp =~ s/tid=//;
      $tid = $tmp;
    }
  }
}
$logdir = "C:\\yBBS\\log";
mkdir $logdir . "\\" . $board;
$dir = $logdir . "\\" . $board . "\\" . $tid;
mkdir $dir;
$out = $dir . "\\" . $start . "~" . $end . ".html";

open(OUT, "> $out");
print OUT "<body black link=blue alink=red vlink=#660099><dl>";
for($i = $start; $i <= $end; $i++) {
  $text = get($URL . "&mid=" . $i);

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

  $text =~ m/<big><b>([^>]+)<\/b><\/big>/;
  $msgTitle = $1;

  $text =~ m/<small>([0-9\/ :]+)<br>[^:]+: (\d+) \/ \d+<\/small>/;
  $date = $1;
  $msgNum = $2;
  #
  $text =~ m/<a href="http:\/\/profiles[^>]+>([a-zA-Z0-9_]+)<\/a>/;
  $user = $1;
  #
  $text =~ m/<\/small><\/td><\/tr><tr><td colspan=2> \;<br>(.+)<\/td><\/tr><tr><td colspan=2> /;
  $msg = $1;
  #
  $text =~ m/<small>[^>]+<a[^>]+>(\d+)<\/a>[^>]+<\/small>/;
  $resNum = $1;

  print OUT "<dt>" . $msgNum . " :<a href=><b>" . $user . "</b></a> :" . $date . "<dd>";
  print OUT "<b>" . $msgTitle . "</b><br>";
  if($i != 1) {
    print OUT "<a href=>>\;>\;" . $resNum . "</a><br>";
  }
  print OUT $msg . "<br><br>";
}
print OUT "<\/body>";
close(OUT);
0295294NGNG
本文忘れた。

Yahoo!の掲示板を取ってくるスクリプト(>>294)を
ヘタレなりに書いてみたんだけど、これではいまいち使いにくい。
使いやすくするために何かアイデア貸してください。
というか、誰か初めから書き直してください。
0296デフォルトの名無しさんNGNG
・・・の悪寒。
0297294NGNG
>>294
>    print OUT "<a href=>>\;>\;" . $resNum . "</a><br>";

">\;>\;"は
&gt¥;&gt¥;
です。
0298コギャル&中高生NGNG
http://go.iclub.to/ddiooc/

お役立ちリンク集
必ず役立ちます

コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便
↓
http://kado7.ug.to/wowo/

   超究極イケイケ女子小中高生
         ↓
   http://kado7.ug.to/wowo/-a.htm
0299294NGNG
あーーーーーーーーーー。

たしかにオレ、この板の人間じゃないけどさ。

VBでも勉強しよう。
0300デフォルトの名無しさんNGNG
>>293
292です。
書き方が悪かったです。
x文字からy文字(x>y)使って(同じ文字を複数回使ってよい)の順列
を全て求めるというのが出来ませんです。
ワシは一般化すると全く手が出ない程度のレベルですんで・・・
サンプルもしくは適当なモジュール教えていただけたら幸です。
0301291NGNG
>>291です

書き方が詳しくなかったので
補足します

その前にスレ違いな質問だったのでしょうか?
もし,そうでしたらすみません
今日perlを始めたばかりなのでご容赦ください

それで内容ですが
アクセスログを取得するパールを書きました
でheaderは
#!usr/bin/perl
だと思うのですが
>>291のようなエラーが出てしまいます
また/usr/binにperlがあるのは確認しました

また
perl ファイル名
とすると普通に通ります

あとログはちゃんと取れています
しかし,error_logを見ると>>291のような
エラーが出力されているのです

検索したのですが文字コードを
変換せよ,というページを
みつけてnkfをしたのですが
直りません

初歩的な質問かと思いますが
もし,アドバイスして頂けたら
うれしいです
0302デフォルトの名無しさんNGNG
age
0303名無しさん@カラアゲうまうまNGNG
>>301
> #!usr/bin/perl
#!/usr/bin/perl
0304デフォルトの名無しさんNGNG
>>291
HTTPヘッダをきちんと出力していない。
0305291NGNG
>>303
>>304

>>303
すみません ここに書き間違えました
実際は#!/usr/bin/perlと書けてました

>>304さんのいわれた通りでした
基本的な知識が無かったです

お騒がせしました
0306デフォルトの名無しさんNGNG
ブラクラチェッカーのような、他のサイトのhtmlソースを取得するスクリプトは
どのように記述するのですか?
0307デフォルトの名無しさんNGNG
LWP::UserAgent
0308棄教者 ◆witdLTi2 NGNG
>>306
緑色をしていて、蝉の絵が描いてある本を買うのもいいです。

。。。実をいうと持っていないので書名を知らないです。間抜けな漏れ。。。
0309デフォルトの名無しさんNGNG
配列の要素との一致を調べたいのですが

$check =~ /join('|', @date)/;

つまり↑のようなニュアンスのこと。
しかし、これではうまくいかないみたいです。
お願いします。
0310 ◆JAPH9PWA NGNG
難しく考えず、一時変数を使うといいよ。

$re = join '|', @date;
$check =~ /^$re$/;
0311デフォルトの名無しさんNGNG
>>308
蝉が怖くて買うのやめました。
0312デフォルトの名無しさんNGNG
>>310
ありがとうございます!
うまくいきました(激感謝)

しかし、直接記述出来ない理由や
^$re$ の^ と $ がないとうまくいかない理由が
いまいちわかってない...
0313棄教者 ◆witdLTi2 NGNG
>>308
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9971171996
0314デフォルトの名無しさんNGNG
Perl5.8.0 が出たというので ActivePerlを待ちきれず、自分でコンパイル
してみた。Windows環境の ActivePerl5.6.1 で駄目駄目だった

print "表示"; が改善されてないなぁ。しくしく。。。
0315 ◆JAPH9PWA NGNG
>>314
ソースをUTF8にするとか
use encoding 'hoge';
とかしてもダメ?
0316デフォルトの名無しさんNGNG
GUI作るときは何を使うのがベストでしょうか?
GTK?それともTk?
0317デフォルトの名無しさんNGNG
win2000でvc6持ってるんですが
ActivePerlのperlccがうまく行きません。
なんかPerlcc.batに設定することとかあるのでしょうか?
.Net SDKのclをかってに使ってしまってるかもしれないんですが。
0318デフォルトの名無しさんNGNG
>>317
割れwin2000じゃ、うまくいきませんよ。
0319317NGNG
>>318
うそかなんだか知らんが答えられない奴がしゃしゃり出るな。
CygwinのPerlcc[gcc]じゃはなしにならんかったのよ。
0320デフォルトの名無しさんNGNG
>315
ダメみたい。 もとより、SJISコードの「表」には \x5f のコードが入っている
ので SJISに完全対応しないと 生書きでは 化けてしまう。回避方はいくつか
あるんだけど 面倒で。。。
0321デフォルトの名無しさんNGNG
>>317
つーかperlccなんか何に使うんだ。
実験か? Perlの勉強か? perlfaq3は読んだのか?

In general, the compiler will do nothing to make a Perl
program smaller, faster, more portable, or more secure.
In fact, it can make your situation worse.

つーかちゃんと調べてれば割れとか言われて逆ギレしないか。

世の中にはperl2exeっつーのもあるらしい。
http://www.indigostar.com/perl2exe.htm
おいらは使ったことないんでこれ以上のことは知らない。
0322317NGNG
Perlの勉強ですね、linux[elf]ではまぁうまくいきました。
perl2exeはフリーじゃないですよね。
>>321
もう一回だけ言う
答えられない奴がしゃしゃり出るな。
そうやって自分がわからん問題になると自分が理解できてもない
FAQ読めとかURL差し出して問題スルーさせるんだよな。
それで自分はわかったつもりになってんだよ、お笑いだね。
たてよみじゃないよ、嵐でもない、ねたでもないからくだらんつっこみよして答えろヤ。
0323デフォルトの名無しさんNGNG
何でそんなえらそうなんだ。
0324デフォルトの名無しさんNGNG
>>323
自尊心をくすぐって答えを引き出そうとする高等戦略のつもりなのだろう。

>>322
ここで質問&煽りをして時間を無駄にしている暇があったらソースを読むか作者に訊け。
0325デフォルトの名無しさんNGNG
perlcc なんか使わないからな。
0326321 ◆FaOqqhYM NGNG
>>322=317
答えられないけどもう一度しゃしゃり出るぞ。

勉強が目的なのなら、perlccが出した「Cコード」を読んだだけで、
何をやっているかわかっただろう。Windowsで実行するまでもなく、
perlccが中途半端で、未来があまり望みのないものだってこともわかるはず。
本当にperlccが出したCコードを読んだのか?
perlのバイトコードの逆アセンブル結果と比べてみたことはあるか?

perl2exeがフリーではないのは知ってるよ。
>>322の目的がわからなかったから示した。
perlfaq3を読んでないでperlccを使おうとする人にとって
ベストなツールが(ヲレの少ない経験上)perl2exeだというだけ。

(すまん、「ベスト」は言いすぎ。正直に告白する。
もうひとつくらいPerl2exeと同様の仕事をする
プロプライエタリツールがあったと思うがど忘れ)

勉強目的とわかった今、これだけは言いたい。
「win2kでperlccを使おうとしてあれこれ悩む時間で、
他のことを勉強した方が>>322のため世のため人のため」
>>322の目的は「win2kでperlccを動かすこと」であり、
ヲレの目的は「perlccを動かしたところで利が少ないことを
>>322以外の者に示すため」である以上、このポストでも>>322は満足するまい。

しかしヲレはヲレの目的のためにこれをポストするものである。
お目よごしごめん! 気を悪くした方は荒らしの一種とでも思ってくれい。
0327デフォルトの名無しさんNGNG
正規表現でPerl5では、/あいうえお/ は問題なく使用できますが、
[あ-ん]は うまく機能しません。 どーにかなりません???
0328デフォルトの名無しさんNGNG
あ-ん♥
0329デフォルトの名無しさんNGNG
(あ|い|・・全部書く・・|ん)
0330デフォルトの名無しさんNGNG
jperl使ったとしても
[ぁ-ん]
にしないと。
0331デフォルトの名無しさんNGNG
s/あーん/イクイク逝っちゃう!/g;
0332デフォルトの名無しさんNGNG
>>327-331
print "(*´д`*)ハァハァ" x 5000000000;
0333デフォルトの名無しさんNGNG
[あぁやっいぃ-ん]
0334よろしくお願いいたしますNGNG
cgiをPerlにて作成しているのですが、
FileのOPENした内容の1行だけをPOSTデータに書き換えたいのですが、
OPEN時に『>』では新規POSTデータしか残らず、『>>』ではデータが追記され・・・。
すみません、かなりとんちかんな事を申し上げているとは思いますが
よろしくお願いいたします。
スレ・板違いでしたら申し訳ありません。
0335デフォルトの名無しさんNGNG
>+
0336デフォルトの名無しさんNGNG
質問です。
#!/usr/bin/perl
while (<STDIN>) {
chomp ;
($a, $b) = (split / /)[0] ;
print $a ;
}

ってソースで、my name is hoge って打ったらどーして$aがmyになりますか?
split は@_の配列に入った後、その後の正規表現で0個にマッチだから$aに該当するものは無しで、@_がそのまま$aに行って、配列の数が入ると思うのですが。今回だと4個。
誰か知恵を分けて下さい。宜しくお願いします。
0337デフォルトの名無しさんNGNG
splitで指定してるのは区切り文字の正規表現でしょ。
普通にマッチするじゃん。
0338336NGNG
>>337
レスありがとう。
フィールドに分解された後の話なんだけど、0個にマッチのところでつまづいてます。
field 1(my),field 2(name), field 3(is), field 4(hoge)
ではなくて
field 0(my),field 1(name), field 2(is)....
って事ですか? 
たとえば{0,2} って書いてもmy にマッチしてるし範囲指定部分が不明です。

宜しくお願いします。
0339デフォルトの名無しさんNGNG
>>338
[0]って、splitでできた配列の0番めってことじゃないの?
0340339NGNG
($a, $b)の$bって意味ない気が。

@x = split / /;
$a = $x[0];
$b = $x[1];
を
($a, $b) = (split / /);

@x = split / /;
$a = $x[0]
を
$a = (split / /)[0];

とか、でしょ?
0341339NGNG
($a, $b) = split / /;
か。あと ; 忘れた。
0342336NGNG
>>340
有難う。
鉤括弧[]は理解ですが、中括弧{}の事で悩んでいるのです。
配列に対する中括弧の中の数字の適用範囲なんです。
あ、ちなみこれって、「初めてのperl 第2版 オライリー出版社」の7章正規表現の7.7.3の練習問題で分からないので質問しました。
「/etc/passwd ファイルのログイン名の実名を出しなさい」 って問題。
模範解答では
#!/usr/bin/perl
while (<STDIN>) {
chomp ;
($user, $gcos) = (split /:/)[0,4] ;
($real) = split(/,/, $gcos) ;
print "$user is $real \n";
}

らしいんですけど、{0,4} の所がどうしても分かりにくくって。
0343342NGNG
理解ですが → 理解できるのですが
ログイン名の実名 → ログイン名と実名
0344339NGNG
>>342
その模範解答の[0,4]は

@x = split /:/;
$user = $x[0]
$gcos = $x[4]
を
($user, $gcos) = (split /:/)[0,4];

って話でしょ。{}はそこに使えるの?

0345342NGNG
あーーーーー!
本文も鉤括弧だったーーー!
>>337 340
ごめんなさい。 本当にごめんなさい
0346デフォルトの名無しさんNGNG
>>314
これでどう?
use encoding 'shiftjis', Filter=>1;
use utf8;
use encoding 'shiftjis';
print join ' ', split //, 'あいうえお';
0347デフォルトの名無しさんNGNG
$a = 'abcdef123ghi';
などとなっているところから数字の部分だけを
$iに取りたいのですが、どうやったら良いのかさっぱり。
というわけで教えな兄ちゃん(w
0348デフォルトの名無しさんNGNG
正規表現をつかいなさい
0349347NGNG
$a =~ /[0-9]+/
こんな感じ?
0350デフォルトの名無しさんNGNG
>>347
教えるので漏れのことは兄チャマと呼ぶように。

$a =~ m(\d+);
$i = $&;

で取れた。数字がとびとびに複数回出てくるなら、

while ($a =~ m(\d+)g) {
push(@i, $&);
}

かなぁ。
0351347NGNG
>>350
ありがとう。兄チャマ。
0352デフォルトの名無しさんNGNG
> 346
どうもありがとう。あなたは神。

単に

use encoding 'shiftjis', Filter=>1;
use utf8;
use encoding 'shiftjis';
print "表示";

の部分だけで充分なんだけどね。

いまいち上の3行部分が何を意味してるかわからないから
これから 勉強します。
0353Perl初心者NGNG
CONTIG join(AP001046.1:1..158063,AP001047.1:2891..38102,
AP001048.1:468..16588,AP001049.1:3222..36589,
AP001050.1:20683..98992,AP001051.1:27854..84904,
AP001052.1:17810..145540,AP001053.1:15589..161920,
AP001054.1:26009..120871,AB001523.1:28023..122638,
AB001517.1:8601..43051,AP001055.1:5998..36483,
AP001056.1:9890..36252,AP001057.1:168..3729,AP001058.1:100..39553,
AP001059.1:10880..36230,AP001060.1:9339..42133,
AP001061.1:1343..15847,AP001062.1:6219..36931,
AP001063.1:6606..45311,AP001064.1:4259..37061,
AP001065.1:25196..115798,AP001066.1:13493..39203,
AP001067.1:21334..148845,AJ011930.1:98247..333303,
complement(AJ239325.2:1..70301),AP001505.1:724..70282,
AP001579.1:1240..139270,AL133499.2:90483..128868,
AL163301.2:252851..340000,AL163302.2:1001..340000,
AL163303.2:1001..21522,AL133492.2:1..154157,AL592528.1:6352..37428,
complement(AJ011931.1:24401..98443),AJ239328.2:10925..41625,
AJ011932.1:1241..37818,AP001479.1:1..38936,AP001476.1:2028..32025,
AP001472.1:486..26467,AP001474.1:489..4628,AP001470.1:79..2476,
AP001471.1:550..7855,AP001467.1:616..7456,AP001101.2:1153..32331,
AP001473.1:1643..4299,AP001475.1:44..13697,AP001468.1:170..67332,
AP001469.1:480..47859,AP000471.2:1314..75008,AP001477.1:444..38399,
AP000335.1:102..26919,AP000336.1:903..36277,AP000337.1:25..53553,
AP000338.3:707..82117,AP000339.1:100..77774,AP000340.1:923..35932,
AP001478.1:1009..10338)
//
↑のデータがあるんですが→例:AP003351.1¥t102..26919¥n
のように取り出してデータを整理したいのですがわかりそうでわからない状態です。
誰か教えてください。                      

                       
0354デフォルトの名無しさんNGNG
質問の意味がわからないです
0355Perl初心者NGNG
うまく説明でいなくて申し訳ないです<<354
CONTIG join()の中身だけ取り出して
○○○○:□□..□□□,
     ↓
○○○○「タブ」□□..□□□「改行」
というように出力したいということなんですが
これで分かってもらえたでしょううか?
0356デフォルトの名無しさんNGNG
>355
s/^(.*?):(.*?),$/$1\t$2\n/g
0357デフォルトの名無しさんNGNG
> CONTIG join(AP001046.1:1..158063,AP001047.1:2891..38102,
とか
> AP001478.1:1009..10338)
の行はいらんのか?

あとこんな行はどうすんだ。
> complement(AJ011931.1:24401..98443),AJ239328.2:10925..41625,

…ところでCONTIGってなに?
0358Perl初心者NGNG
>356 試してみましたができるところとできないとこがありました。

>357 ファイル内のデータの一部なのでよくわかりません。
   
0359デフォルトの名無しさんNGNG
>>358
おまえが分からんのに他の奴に分かるわけがあるか。
0360デフォルトの名無しさんNGNG
>>358
あなたがSE(のたまご)だとしたらあなたを殴らなくてはいけない。
0361デフォルトの名無しさんNGNG
>359
まさかそりゃないでしょう。
0362デフォルトの名無しさんNGNG
>358 >354
ああ、意味わかった。まず、データを整形しる。join()を削ってから、中身だけを
s/,/\n/g;
にかけてから、>356の正規表現を適用しる。
ただ、complementの扱いをどうするか言ってくれんと、これ以上進めん。
0363362NGNG
いや、待てよ。
...で〜きた。

while (<>) {
chomp;
@data = m/(A[A-Z]\d+?\.\d):(\d+?\.\.\d+)/g;
while (@data) {
print shift @data, "\t";
print shift @data, "\n";
}
}
0364Perl初心者NGNG
ほんとに質問の仕方が悪くてすみません。
complement()も削りたいです。
0365362NGNG
>364
おーい、363でうまくいくでしょ?
テストしてみたよ。
0366Perl初心者NGNG
>365
ありがとうございます。
できました。
みなさん、ご迷惑をおかけしました。
0367デフォルトの名無しさんNGNG
ファイルロックについて質問なのですが、普通マルチタスクOSはプロセス間の
デバイスの排他制御をしていますよね。でもPerlでは明示的にファイルのロック
をするようですが、これはなぜですか?
0368デフォルトの名無しさんNGNG
Windowsプログラムも複数起動すると同様の問題が生じ得るよ。
「ファイルロック」で検索したら?
0369367NGNG
検索したら何となく分かりました。
つまりopen~closeの間、プロセスがストリームを独占できる訳じゃないって事
ですか。そういえばflockはsystemcallでしたね。どうもです。
0370デフォルトの名無しさんNGNG
perlを本格的に勉強したいんだけど何かいい本てないかかな?
まだ独習Perlでしか勉強してません。
0371デフォルトの名無しさんNGNG
>>370
定番でラクダ本でいいだろ。
0372デフォルトの名無しさんNGNG
>371
独習Perlをマスターしたんなら、あとはひたすら書いて読むのがいいんじゃないかと
思いますよ。ラクダ本とかは「引く」本だと思う。

漏れはプログラミングPerl、実用Perlプログラミング、Perlクックブックを章ごとに
切り刻んだものを机の引きだしに入れていつも「使って」(読んで、ではない)いる。
0373372NGNG
s/371/370/;
0374デフォルトの名無しさんNGNG
hashの値からキーを取り出すうまい方法って何かありますか?
0375デフォルトの名無しさんNGNG
>>374
補足です。
具体的にはハッシュの値(昇順)にハッシュの要素を並べ替える
うまい方法を知りたいです。
0376デフォルトの名無しさんNGNG
sortすれ。
0377デフォルトの名無しさんNGNG
>375
標準関数keysで
keys %hash;
とやると、ハッシュのキー一覧のリストが返ってきます。これを同じく標準関数sort
に与えて
sort keys %hash;
とするとソートされたハッシュのキー一覧のリストが返ってきます。
0378375NGNG
ありがとうございます。

ハッシュキーそのものではなく、値の方でキーをソートしたかったんです。
質問が不備ですみません。

foreach $val (sort {$b <=> $a} values %hash){
foreach $ky (keys %hash){
if($val == %hash{$ky}){push @hashkey, $ky;}
}
}

とりあえずこんな方法でいいのかな。
0379377NGNG
それなら、標準関数reverseを使ってみてはどうでしょうか。
%reversed_hash = reverse %hash;
で、キーと値を反転できます。ここでsortしてから、また反転して戻すとか。
あと蛇足ながら、ハッシュの値が数値でないなら比較するときはeqですよ。
0380375NGNG
>>379
おー、そんな方法が!
早速試してみます。ありがとうございました。
0381 ◆FaOqqhYM NGNG
>>375-380
perldoc -q sortを実行してみちくり。

Found in /usr/local/perl/lib/5.8.0/pod/perlfaq4.pod
(中略)
How do I sort a hash (optionally by value instead of key)?
(中略)

@keys = sort keys %hash; # sorted by key
@keys = sort {
$hash{$a} cmp $hash{$b}
} keys %hash; # and by value

>>379
eqじゃなくてcmpだよ。
0382379NGNG
私は、

>foreach $val (sort {$b <=> $a} values %hash){

の部分ではなく、

>if($val == %hash{$ky}){push @hashkey, $ky;}

の部分に対してレスしたまで、とむきになってみるテスト。
0383375NGNG
>>381
ありがとうございます。
おかげさまで完全解決。
ちなみにソート対象のハッシュの値は数値なので問題なしです。
0384375NGNG
>>382
文字列の比較の辺り、私自身素人でして
見落としがちな部分だなぁと思います。ご指摘感謝です。
0385 ◆FaOqqhYM NGNG
>>382
>>if($val == %hash{$ky}){push @hashkey, $ky;}
>の部分に対してレスしたまで、とむきになってみるテスト。
をを! わし気づいてなかった。

そしたらperldoc -q valueを見てくらさい。
めんどくさいので全文引用。長くてゴメン。

How do I look up a hash element by value?

Create a reverse hash:

%by_value = reverse %by_key;
$key = $by_value{$value};

That's not particularly efficient. It would be
more space-efficient to use:

while (($key, $value) = each %by_key) {
$by_value{$value} = $key;
}

If your hash could have repeated values, the meth-
ods above will only find one of the associated
keys. This may or may not worry you. If it does
worry you, you can always reverse the hash into a
hash of arrays instead:

while (($key, $value) = each %by_key) {
push @{$key_list_by_value{$value}}, $key;
}

0386デフォルトの名無しさんNGNG
print

printf

↑この違いって何?
0387デフォルトの名無しさんNGNG
>>386
最後にfがあるかないかの違い。
0388デフォルトの名無しさんNGNG
>>387
やっぱり!
漏れもそう思ってたYO!
さっそく、ひろゆき君に教えてあげなくちゃ!
0389デフォルトの名無しさんNGNG
>>387
ビデオではfが最後っていうことはあまりないようですが、実際には
よくあるのですか?
0390デフォルトの名無しさんNGNG
>386
printfだとフォーマットを指定することで出力形式を変えられる。
'2ch'を'002ch'と出力したい時とかに使う。
0391デフォルトの名無しさんNGNG
終わった話かもしれないけど、

>>379
$hash{'foo'} = 1;
$hash{'bar'} = 1;

な場合反転して戻すと違うモノにならないかい?
0392379NGNG
>391
はい、値が一意でなければ使えません。しかし「値でソート」と言っているので
値は一意であると仮定しました。
0393デフォルトの名無しさんNGNG
それはどうだかなー
0394379NGNG
>393
ご不満ですか? それなら値が一意でない場合はこうします。

while (my($key, $value) = each %hash) {
push(@{$rev_hash{$value}}, $key);
}

反転させたハッシュの値は配列へのリファレンスとして、そこへ元のハッシュの値に
対応するキーを格納していきます。これで、値 => (複数のキー)というハッシュが
作れます。
0395デフォルトの名無しさんNGNG
「リファレンス」って要するにCでいう「ポインタ」みたいな物なんですよね?
0396デフォルトの名無しさんNGNG
関数からハッシュ二つを返すにはどうすればいいのでしょう?
これだとうまくいきません。

(%a, %b) = func();

sub func{
my %a = (a, 1);
my %b = (b, 1);
return (%a, %b);
}
0397デフォルトの名無しさんNGNG
kent-webのスクリプトを細かく解説しているサイト知りませんか?
0398デフォルトの名無しさんNGNG
>396
ハッシュをそのまま返すことはできませんので、リファレンスで返します。

sub function {
my %a = (a => 1);
my %b = (b => 1);
return(\%a, \%b);
}

my ($ref_a, $ref_b) = func();
0399perl初心者1NGNG
yahooとかにキーワードを渡して、検索結果のページをゲットする
というものは、perlスクリプトでできますか?
0400デフォルトの名無しさんNGNG
できます。
0401perl初心者1NGNG
>>400
すんません。
ヒントを教えて頂けないでしょうか?
0402デフォルトの名無しさんNGNG
Webプログラム板かどこかでGoogle.pmっていうの開発してた人がいたね。
0403perl初心者1NGNG
>>402
ありがとうございます。
探してみます。
0404デフォルトの名無しさんNGNG
そんな大層なもの使わなくても検索結果のページを取得したいだけなら
http://www.google.com/search?q=%82%A4%82%F1%82%B1&ie=Shift_JIS&hl=ja&lr=
とかいうURLの"%82%A4%82%F1%82%B1"の部分がURLエンコードされた検索文字だから
こういうURLをリクエストしてGETすればいいだけだとおもうけど
0405デフォルトの名無しさんNGNG
> 404 (399とは別人です)

でね、HTTP モジュール見ても LWP モジュール見ても プロクシ噛ませる
場合の処理がよくわからないのです。

ヤフオクから 複数キーワードを組み合わせて いくつかのカテゴリ駆け
回って (自分好みの)出品物一覧を取得する ツール開発中。。。
0406デフォルトの名無しさんNGNG
>>395は無視ですか…(ショボボボボボーン
0407デフォルトの名無しさんNGNG
パールモジュールpmはuse XXXXで
plは requie 'XXX'でOKですか?

あと、pmってCPANとかいろいろ書いてるけど、
ふつーにはダウソできないのですか?
0408デフォルトの名無しさんNGNG
>>406

ポインタ演算できないけど、位置付けは一緒とおもって良いと思うが。
どっちかってーとJavaのそれを思い出したほうが適切だが。
0409デフォルトの名無しさんNGNG
>>407

いーんじゃん?
Hoge.pm でも require Hoge; って書くことは多々有るが。


ふつーにCPANからダウソできます。
0410デフォルトの名無しさんNGNG
  ↓
→>>389←
  ↑
0411デフォルトの名無しさんNGNG
ビデオ?
0412389NGNG
僕は現実を知らない、ただの子供なのだろうか…
0413デフォルトの名無しさんNGNG
つーかビデオってなんのことだ。マジな話。
0414389NGNG
近くのツタヤとかにない?
「初めての真珠」。
0415デフォルトの名無しさんNGNG
>>398
ふとおもったんですが

sub function {
my %a = (a => 1);
my %b = (b => 1);
return(\%a, \%b);
}

my ($ref_a, $ref_b) = func();
%a = %$ref_a;
%b = %$ref_b

って$ref_aと$ref_bを一度しか使いませんよね。

もう少し簡潔にできないのかといってみるテスト

0416 ◆JAPH9PWA NGNG
そういう場合は普通ハッシュリファレンスのまま使うかな

my($ref_a, $ref_b) = func();
print $ref_a->{a};

またはタイプグロブとか。私は使わないけど。
our(%a, %b);
(*a, *b) = func();
print $a{a};
0417デフォルトの名無しさんNGNG
>>389
いや、わかるんだが、fってもいろいろあるし…
0418デフォルトの名無しさんNGNG
>>405
言ってる意味がよくわからんのだが
LWPモジュールでプロキシに対して処理したいってことか?
それとも、LWPモジュールとかで作ったやつをプロキシサーバとして
動かしたいってことか?

前者なら、プロクシサーバであってもWWWサーバであるときと同じ
と考えていいぞ。ってか気にすんな

後者なら、ブラウザからHTTPが送られてくるからそれを解析
して適切に処理してやればいい
0419デフォルトの名無しさんNGNG
$ua->proxy("http", "http://proxy.hoge.jp:8080/");
という単純な話ではないのか?
0420418NGNG
>>419
なんについて?
プロキシサーバとして扱いたいなら、ブラウザからの要求を
解析する必要がある。

あと、プロキシサーバに対してなんかしたいときに特に
プロキシサーバであることを意識する必要ないんじゃないの?
じゃないとプロキシじゃないし・・・・

#UserAgentのなんかのメソッドにぶち込むだけでいいかも知らんがその方法は
#俺はよく知らんから調べるか、博識の人のレスをまつ
0421419NGNG
紛らわしかった。 >>419は >>405 の
>でね、HTTP モジュール見ても LWP モジュール見ても プロクシ噛ませる
>場合の処理がよくわからないのです。
に対するレスね。
0422418NGNG
>>421
なるほど。
ああ、俺も質問の意図を激しく誤解してるな・・・
Λ||Λ
0423デフォルトの名無しさんNGNG
>>407
>> パールモジュールpmはuse XXXXで
>> plは requie 'XXX'でOKですか?
>>
>> あと、pmってCPANとかいろいろ書いてるけど、
>> ふつーにはダウソできないのですか?

use Module;の場合、Module.pmというファイルがあると仮定する。つまり自動的に
拡張子を補う。requireはそういうことはしないので、拡張子をつけないといけない。
また、useの場合コンパイル時に処理を行うので、重いスクリプトを何度もテストする
場合はこの方がいい。というか今は特殊な事情がない限り、useを使うのがいい。
この端末では半角カナが読めないので後半には答えられない。
0424デフォルトの名無しさんNGNG
csh上でPerlを使っています。
Perlからcshのプロンプトを変更したいのですが上手くいきません。
どのように記述すればよいのでしょう?
「試したこと」
 system("set prompt=abcd");
とか、
 system("source プロンプトを変更するシェルスクリプト名");
など。
0425デフォルトの名無しさんNGNG
>>423
嘘はいけません。
0426デフォルトの名無しさんNGNG
reauire = #include だったと思うのだが・・・・
0427デフォルトの名無しさんNGNG
>>424
子プロセスから親プロセスの環境を直接いじることは不可能。

eval `perl -e 'print "set prompt=abcd"'`

とでも*cshから*やる以外にはない。
0428デフォルトの名無しさんNGNG
>427
そうだったんですか、、、
残念だけど仕方ありませんね。
どうも有難うございました。
0429デフォルトの名無しさんNGNG
レス削除依頼を簡単にまとめられるJperlで動くスクリプトを作ってください。
おながいします。
・削除理由によってスレッドをまとめる
・同じスレッドのレスは、一つのスレッドにまとめる
・重複依頼は一つにまとめる

こんな感じ
0430デフォルトの名無しさんNGNG
ここは作成依頼を受け付ける所じゃない。
http://pc.2ch.net/test/read.cgi/php/1028943269/
にでも逝きな。
0431423NGNG
すんまそん。嘘つきました。requireでも拡張子pmを補います。ただし、plでは補わない
ことを確認しますた。requireときたらライブラリの拡張子はplだったんで勘違いして
ますた。マジすいません。
0432デフォルトの名無しさんNGNG
自分のサイトのファイルのダウンロード数を
カウントするCGIってどっかにありますか?
0433デフォルトの名無しさんNGNG
アクセスログ見たら
0434デフォルトの名無しさんNGNG
ファイルの中身を真っ白にする方法はありますか?
中身がある既存のファイルを、何にも書いていない空ファイルにしたいのです。

seek関数を使ってポインタを最初に戻してからcloseしてもそのままでした。
0435 NGNG
open(FILE,">file.txt");
close(FILE);
0436434NGNG
>>435
試してみたら出来ました。
書き込みモードに設定すればよかったんですね。
マジで助かりましたよ。ありがとうございました。
0437棄教者 ◆witdLTi2 NGNG
>>432-433
analog というツールがあるので、それを探しましょう。
http://www.analog.cx/
UNIX用のツールですがWinにも移植されています。
アクセスログを提供してくれないプロバイダだとちょっと難しいかもしれない。

あとは、ファイルへの直接リンクを禁止して、
一度 *.cgi なページを踏ませることにしたらどうですか。で、
*cgi なページではページを踏んだ回数をカウントする、と。
0438デフォルトの名無しさんNGNG
すみません、ちょいと聞きたい事があるのですが、ここに任意の
数の要素を持つ任意の数の配列(@array[1], @array[2], ...) が
あったとして、全ての配列要素の順列組合せを出力する場合、
何か良い手はあるでしょうか? ちなみに要素の数は配列毎にばらばらです。

WEB 上でいろいろ探してみたのですが、perl 上での多次元配列の
順列組合せについて書かれているページを見付ける事はついに
出来ませんでした... 鬱氏
0439438NGNG
あとでちょっと調べたりして、自分自身 perl の事が良く
分からないまま質問したなぁ、と反省しています。多分、質問の
意図も理解されないような気がしますので、具体例でしたい事を
書いてみます。

たとえば、

@array[1] = 0.5, 1.0, 1.5, 2.0
@array[2] = 1, 2, 3

として、

(0.5, 1), (0.5, 2), ..., (2.0, 3)

という出力が欲しいんです。配列は a, b だけでなく不特定で、
各配列の中身もてんでんばらばらです。

perl の入門書とかを読みながら考えているのですが、配列だの
リストだのがだんだんごっちゃになって来てしまっています。
誰かここ読めゴルァで構わないので教えて下さい。
0440jpahたんらヴ ◆KsLROhUY NGNG
とりあえずだ、
配列は@test=(4,5,6,) こう
とりだすのは print $test[0]
とかそういうのは分ってるんだね?
0441438NGNG
>>440
なんとか。

ところで、
@test=(4,5,6)
を
@test[1]=[4,5,6]
と書いても間違いではないでしょうか? 配列自体の数も不特定なので、
配列自体をある配列の要素として扱いたいのですが。< なんか自分で言ってて良く分からない...
0442 ◆JAPH9PWA NGNG
@test[1]=[4,5,6]??構文エラーにはならないけど、普通はこんな書きかたしないよ。
とりあえず「プログラミングPerl」を買って読んだ方がいいね。

で、>>339はその通りにやろうとすると激しく面倒だから多次元配列の簡単な説明だけね。

my @foo = (1, 2, 3); # 通常の配列
my @bar = (\@foo); # barは要素を一つ持つ配列。その唯一の要素は配列への参照(リファレンス)
push @bar, [4, 5, 6]; # barの要素は二つになった。 [ expr, ...] は配列へのリファレンスのリテラル表現

print $bar[0][0]; # barのindex 0をデリファレンス。 1が表示される。
print $bar[1][2]; # 同様に、6が表示される。
$bar[0][0] = 0; # 代入も同様

少しは分かってもらえたかな?
まぁこのあたりはPerlでもCでも凄く難しいところだよね。
0443デフォルトの名無しさんNGNG
なるほど、質問者とは別だけど
そういう風にやるのね…。

リファレンスって便利だね。
0444jpahたん死ね ◆KsLROhUY NGNG
      __ , ―― '  ̄ ̄ ̄ ̄`――、___
 / ̄ ̄__________ ) ) ) `\
(    ,/' ! i l l l l | | | | l l l l l !i`~ーー、、   \
 ヽ_ (〆――――-〜//⌒~ヽヽミシヽ、`ヽλ__l
  、  ~          λλ___、丶ヽ/'~ヽ、。~ハwwヾ     〉〉
 `、ー―――――-丶// /⌒~⌒ヽ、ヽ、  `ーヽく〃    ,//
    ̄ ̄ ̄ ̄ ̄ ̄~`( | λ\ヽ冫ノ,冫~          《丿/
    、 、_______| | \__丶´/lノ冫          l /
    ` ー――ヽニ_ーl\_、\\\冫        /,〆
            `ヽl\___ ̄ \ヽ\        /ノ/
    、`――――――ヽ\__ ̄ ̄、, \ヽ\  ,/イ/
     ̄ ̄`――、_ー、!\_ ̄ ̄ノ  \ヽ∨'〃/
              ̄\  〉 ノ 〉    ヽο冫
               ,〉// ノ,|       ~~
               (/,/  '/'l
ったく馬鹿がつられやがって、この板で決着つけようか?
0445foobarNGNG
>>439
@array1=(0.5, 1.0, 1.5, 2.0);
@array2=(1, 2, 3);

for $i (@array1) {
for $j (@array2) {
print "($i, $j), ";
}
}


0446デフォルトの名無しさんNGNG
@array = (
  [0.5, 1.0, 1.5, 2.0],
  [1, 2, 3],
);

foreach my $foo (@array) {
  foreach my $bar (@$foo) {
    print "($foo,$bar), ";
  }
}

日本語キーボード超ウゼー
0447デフォルトの名無しさんNGNG
>>446
あ、適当に書いたけど、これじゃ全然ダメだな…
$fooに入ってるのはリストへのリファレンスだ
俺のアホ
0448デフォルトの名無しさんNGNG
@array = (
  [0.5, 1.0, 1.5, 2.0],
  [1, 2, 3],
  # これ以上増えたら、下のコードじゃ対応できない。ヘボいね。
);

for (my $a=0 ; $a<@{$array[0]} ; $a++) {
  for (my $b=0 ; $b<@{$array[1]} ; $b++) {
    print "($array[0]->[$a],$array[1]->[$b]), ";
  }
}

これでいいか…
日本語キーボード超ウゼー
0449438NGNG
>>442
むむむ、では、
@test[0]=[1,2,3]
@test[1]=[4,5,6]
ではなく
@test=([1,2,3],[4,5,6])
が正解なんですね。で、さらに配列を追加するには push を使う、と。
@var=(7,8,9,10)
push @test,(\@var)

なーるほど。なんかすごく納得できました。どうもありがとう!!
あとはこれを全部なめるやり方を考えるだけかな。
と言ってもそれが一番面倒そうだけど。

>>448 さんも書いているけど、不特定の配列要素を全部なめるとなると
普通に for を使うだけではダメですよね。
0450448NGNG
sub recursive ($$$) {
  my ($matrix, $left, $stratum) = @_;

  foreach my $oe (@{$matrix->[$stratum]}) {
    my @tube = (@$left, $oe);

    if ($stratum+1 >= @$matrix) {
      print (join(',', @tube), "\n");
    } else {
      recursive ($matrix, \@tube, $stratum+1);
    }
  }
}


my @matrix = (
  [1, 2, 3],
  ['a', 'b', 'c'],
  ['X', 'Y', 'Z'],
);

recursive (\@matrix, [], 0);

これでmatrixが二次元配列である限り大丈夫かな
0451デフォルトの名無しさんNGNG
ねえ、

http://pc.2ch.net/tech/kako/1017/10177/1017736187.html

この過去ログと、このスレってどういう関係にあるの?
もう、なくなったのかと思ってたこのスレ。
0452デフォルトの名無しさんNGNG
>>451
pc鯖からpc3鯖に移転したんだよ。
0453デフォルトの名無しさんNGNG
>>449
@test = ($ref1, -> [1,2,3]
$ref2) -> [4,5,6] (概念図、コードとしては不正)

で、配列の要素は配列じゃなくて、それを指すリファレンス(スカラーの一種)です。
それから、配列の要素を指定する場合は接頭記号が$になります。
@test[1] じゃなくて $test[1] です。

>>さらに配列を追加するには push を使う、と。
>>@var=(7,8,9,10)
>>push @test,(\@var)

の場合、配列を追加してるわけじゃなくて、リファレンスを追加しているのです。
分かってたらおせっかいスマソ。
0454438NGNG
>>450
おお、すごい!!
そっか、再帰的に関数を呼び出すと言う手が使えるんですね!!
うーん、しかし、すぐにはわけわからんですな。少し考えてみます。
0455デフォルトの名無しさんNGNG
>>375
遅レスだが
foreach $key (sort {$hash{$b} <=> $hash{$a}} keys %hash){
// some operations
}
でどうか
0456 NGNG
>>455
本当に遅レスだな
>>381で既に答えが出ているのに(藁
0457デフォルトの名無しさんNGNG
いろんなソースを見たほうが勉強になる。
0458デフォルトの名無しさんNGNG
>>456
失敬失敬。問題だけ見て他の人の解答を見てなかったよ。
0459デフォルトの名無しさんNGNG
LWP::UserAgentをつかってProxyのテストをするスクリプトを書いたのですが、
$ua->timeout('30');としても30秒で終わらない(へたすると何分もかかる)状態
になります。

たぶん、$ua->timeout()はHTTPでリクエストを送信するときにヘッダに
timeoutを指定して送るだけだからなんじゃないかと思うんですが、
30秒したら、強制的にコネクションを切断して次のプロクシのテストを
したいときにはどうすればよいでしょうか?

callbackというのを使えばいいのかとも思ったのですが、これだと
何バイトか返ってくるたびにサブルーチンを呼び出すということなので、
ぜんぜん返事が返ってこない場合は意味のないような気もします。

どなたかヒントだけでもお教えくださいませ。よろしくお願いします。
0460デフォルトの名無しさんNGNG
LWPは忘れてalarm関数とかを使ってみる、とかかしら。

うまくいったらフラグをたてとくようにして一定時間後にそれを見ると。
0461デフォルトの名無しさんNGNG
なるほどー

my $res;
eval {
  local $SIG{ALRM} = sub { die "timeout" };
  alarm $TIMEOUT;
  # Pass request to the user agent and get a response back
  $res = $ua->request($req);
  alarm 0;
};
if ($@ =~ /timeout/) {
  print STDERR "time out\n" if $DEBUG;
  return;
};

こんな感じで書いて見ました。
ただ、これでもたまに1分ほど固まるときがあるんですよね。。
はじめてalarmを使ったので使い方を間違えてるのかな?
もうちょっといろいろ試してみます。どうもありがとうございました。
0462デフォルトの名無しさんNGNG
CGIをPOSTモードで呼び出したいんですが、どうすればよいでしょうか?
GETなら簡単ですけど、それはなしで。
print "Location: hoge.cgi\n\n";
こういうのつかうのかな?
0463デフォルトの名無しさんNGNG
print "Location: hoge.cgi; post=mode\:form\n\n";
とかやってみたけどダメだ〜。
それとも不可能でしょうか?
0464デフォルトの名無しさんNGNG
>>463
ちゃんとCGIの勉強したほうがいいかと。
Locationヘッダは関係ないよ。
POSTは標準出力から読み込むんだから。
0465棄教者 ◆witdLTi2 NGNG
<FORM ACTION="./hoge.cgi" METHOD="post">
糞スレを立てた奴の名前を入れて下さい<INPUT TYPE="text" NAME="kusosure">
<INPUT TYPE="submit">
</FORM>
0466デフォルトの名無しさんNGNG
うむ、そうですね。
>>465
いや、CGIから呼び出したいんですが。
0467デフォルトの名無しさんNGNG
やっぱりわからないなぁ。
参考になるサイトありませんか?
0468棄教者 ◆witdLTi2 NGNG
CGIから? CGIを? どっち?
0469デフォルトの名無しさんNGNG
CGIからCGIを
です。
0470棄教者 ◆witdLTi2 NGNG
---foo.cgi---
print <<"__EOM__";
Content-type:text/html

<HTML><BODY>
<FORM ACTION="./bar.cgi" METHOD="post">
糞スレを立てた奴の名前を入れて下さい<INPUT TYPE="text" NAME="kusosure">
<INPUT TYPE="submit">
</FORM></BODY></HTML>
__EOM__

これで bar.cgi を POST メソッドで呼べるYO!
0471棄教者 ◆witdLTi2 NGNG
×これで bar.cgi を POST メソッドで呼べるYO!
○これで foo.cgi から bar.cgi を POST メソッドで呼べるYO!
0472デフォルトの名無しさんNGNG
そのformにnameとかidとかを入れてやって、
<script language="JavaScript">
document.form[hoge].submit
</script>
的なJavaScriptを差してやれば目的のことができるのでは?
0473デフォルトの名無しさんNGNG
Content-type:text/html

<HTML><BODY>
<FORM name="form1" ACTION="./hoge.cgi" METHOD="post">
<INPUT TYPE="text" NAME="txt">
<INPUT TYPE="submit" name="btn">

<script language="JavaScript">
document.FORM[form1].submit[btn]
</script>

</FORM></BODY></HTML>

あわせるとこんな感じだが・・
動いてくれない。
Javaはさっぱりでして。

というかこういう方法しかないんでしょうか?
0474デフォルトの名無しさんNGNG
単にパイプ付きでopenすればいいだけぢゃねーの?

環境変数に適当なものを与えれば、コマンドプロンプトで実行できるのと同じで。
0475デフォルトの名無しさんNGNG
お。

パイプ付きでopen・・・

すみません、全然分かりませんです。
0476デフォルトの名無しさんNGNG
えーと、今手元にperlがないので、間違えているかもしれないが。
open(CGI, "|post.cgi");
print CGI "hoge=hage";

みたいなことでは?
POSTはcgiに標準入力を食わせることになるから、
そのcgiプログラムを元のperlのcgiから直接実行してやる、と。
0477デフォルトの名無しさんNGNG
おお、核心に近づいてきた気がするな。

っていうかPOSTってCGIのことだったのか・・・

でもActivePerlのファイルをみるとpost.cgiってファイルは無いようです。
CGIの呼び出しはどこにいれるのやら
print "Location: hoge.cgi\n\n";
open(CGI, "post");
print CGI "mode=form";
こういうことではないですよね?
0478デフォルトの名無しさんNGNG
>>476
それだと同一サーバ上のプログラムを呼んでるだけ。
CGI プログラムを POST で呼ぶには、Web サーバの port 80
とかに Socket 繋いで HTTP でお喋りしなきゃダメ。

もし環境に恵まれているなら、LWP 使うのが楽。

475 はペリカン本 (O'REILLY 「Web クライアントプログラミング」)
読むべし。細かい部分は RFC 2616 参照。
0479いらすまNGNG

  いらすまですう


   せいきひょうげんというのわぁ

  おちんちんとかぁ

  おまんことかぁ

  /$.*^/とかぁ
0480デフォルトの名無しさんNGNG
は〜。
難しそうですねぇ・・

っていうか、
ログイン→データ一覧表示→データ削除→
”削除しました”画面表示→元のデータ一覧表示に戻る

ってやるとページの有効期限切れってなっちゃうじゃないですか。
それをどうにかしたいってことだったのですが。
0481デフォルトの名無しさんNGNG
>>473を見ると、自サーバかなと思ったけど、実際はどうなん?
元質の>>462の発言が、どれかわからない。あげてるやつか?
0482478NGNG
>>480
Perl の話じゃないから板違いだが…。
有効期限切れ? JavaScript で back してない?

1. ログインページから login.cgi を呼ぶ
2. login.cgi でログイン処理後、処理終了ページを出力
3. 処理終了ページから list.cgi を呼ぶ
4. 出力されたデータ一覧ページから delete.cgi を呼ぶ
5. delete.cgi でデータ削除後、処理終了ページを出力
6. 処理終了ページから list.cgi を呼ぶ
7. 出力されたデータ一覧ページから…

2. や 5. で処理終了ページを一々出したくなかったら、
login.cgi や delete.cgi に list.cgi と同じ機能を持たせれば OK。
データ持ち回りたかったら Cookie なり隠しフォームなり。
0483デフォルトの名無しさんNGNG
はじめまして。
当方文系でプログラム全然わかんない人ですが、恥を忍んでうかがいます。

ネットで公開されているスクリプトを使いたくて
ActivePerlをインストールしたんですが、
スクリプトの実行方法がよくわかりません。

プログラミングをしない単なる利用者として
perlの仕組みを勉強したインですが、
おすすめの本・サイトがあったら
教えてもらえませんでしょうか…(一応グーグルで検索したんですが)
0484デフォルトの名無しさんNGNG
ちなみにそれはどんなスクリプトなのでしょう。
それがわかると説明しやすいんじゃないかな。
0485482NGNG
>484さん
  さっそくのレス、恐れ入ります。
 スクリプトの内容は、
 辞書データを間引くスクリプトです。

 perlはDドライブにインストールしてあるんですが、
 スクリプトをDL・解凍した後どこに持っていけばいいのかとか
 スクリプトを実行する書式とか
 わかんないことだらけで・…
0486デフォルトの名無しさんNGNG
>>485
まず perl そのものが実行できるかどうか
これはコマンドプロンプトから perl -v と入力して反応があるかどうかを調べる。
バージョン番号などの反応があれば、次へ、無ければパスの設定をする。

次にそのスクリプトを実行する。
付属ドキュメントにインストール方法が書いてなければ、
これは適当なディレクトリに *.pl ファイルを放り込み、
perl スクリプト名 を入力すれば実行できる。

モジュールを別にインストールする必要があるばあいは、
付属ドキュメントによく目を通すこと。
0487462NGNG
>>482
それだとログインしたっていうじょうほうをクッキーに書き出すってことでしょうか?
ちなみにテストとして自サーバーというか、自分のパソコン上でやってますが
実際はPlalaサーバーで動かします。

>>483
多分CGIうごかしたいんじゃない?
http://www.st.rim.or.jp/~nakata/
のhttpdとかいれるとよいのでは?
0488デフォルトの名無しさんNGNG
i-mode絵文字対応フォームメールを設置したいのですが、
文字化け対策がうまく行きません。
(文字化けする絵文字としない絵文字がある。)
処理をうまくしてる人はどうやってやってます?
0489482NGNG
>>487
Cookie でログイン済フラグを持たせるのも一つのやり方だね。
何にしても、

・具体的にどんなシステムを作りたいのか
・どの程度厳密に制限しなくてはいけないのか
・誰が利用して誰が保守するのか

が分からないと、これ以上アドバイスしようが無い。

>>488
化ける文字と化けない文字、それぞれの共通点を調べてみたら?

http://www.google.co.jp/search?q=imode+%E7%B5%B5%E6%96%87%E5%AD%97+%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

462 も 488 も、WebProg 板辺りに質問をまとめ直して投げた方が
答えてくれる人多いと思うよ。ここは「Perl」のスレで「CGI」のスレじゃ
ないからね。
0490485NGNG
>486さん
  アドバイス、ありがとうございます。
 ご指導の第一ステップはクリアできているみたいです。
 もうチョット調べれば、なんとかなりそうです。
 助かりました。
0491デフォルトの名無しさんNGNG
windowsで子プロセスを起こした場合
プロセスの終了を親プロセスで知ったり、あるいは出力をうけとったり
できないでしょうか.
0492491NGNG
説明不足でした

親プロセスも子プロセスもパールスクリプトで
systemは子プロセスの終了待ちをしますから、
まずいです。
Win32::Processモジュールを使って、子プロセスを
作っているんですが、、、、
0493488NGNG
>489

参考になりました。
ありがとうございます。
0494デフォルトの名無しさんNGNG
2ちゃん用ブラウザで読める掲示板を作ろうとしているんですが、なかなかうまく読めません。
大抵のブラウザで読めるようにするために、最低限必要なファイルはなんでしょうか?

今作ったのが、read.cgi、index2.html、subback.html、read[1-9].datです。
datファイルの名前が良く分からなかったので、read1.dat〜read9.datまでとりあえず作りました。
0495 NGNG
>>494
0ch参考にしてみ。ソース公開してるんで。
0496デフォルトの名無しさんNGNG
MacOS8.6で、WEB共有とMacJPerlを使ってローカルでCGIを動かしています。

Linuxサーバーなどでは、スクリプト中で外部のサブルーチンなどを呼ぶ場合は
require './sub.txt';  などと記述しますよね。
これをやりたいのですが、Macだとディレクトリを:で表すせいなのか
require './sub.txt'; や require '.:sub.txt'; ではエラーになってしまいます。

エラー内容は
# sub.txt did not return a true value.
File 'Macintosh HD:Desktop Folder:test:index.cgi'; Line 3
です。

どのように記述すればいいのでしょうか?
0497初心者NGNG
Perlやってみたいんですけど、何を落とせばいいんでしょうか?
あと、エディターは何がいいですか?
0498デフォルトの名無しさんNGNG
>>497
Unix系OSを入手、Perlが標準で入っている。
そうなるとエディタはEmacsかvi、好きな方使え。
0499初心者NGNG
Unixってなんですか?Linuxのパクリですか?

http://pc.2ch.net/test/read.cgi/php/1028816385/
0500デフォルトの名無しさんNGNG
>>499
ナイスボケ。
0501デフォルトの名無しさんNGNG
書いてあるじゃん。原因が。

> エラー内容は
> # sub.txt did not return a true value.
> File 'Macintosh HD:Desktop Folder:test:index.cgi'; Line 3

なんでしょ。
「sub.txt did not return a true value」だって。

ラクダ本の641ページ見てごらんよ。持ってないなら本屋で。

あと、この板の上のほうに「CGI は Web プログラミング板へ。」って書いてありますけど。
0502デフォルトの名無しさんNGNG
>>501
!=499だけども

らくだ本はやっぱり基本だし買っといたほうがいいかなぁ。
技術評論者のCGI/Perlしかないし。
CGI以外にも結構便利なんだが。
0503デフォルトの名無しさんNGNG
>>502
>sub.txt did not return a true value
の意味がその本読んでもわからないようだったら、
らくだ本買ったほうがいいね。
ただし、今らくだ本は新版の翻訳中。
0504デフォルトの名無しさんNGNG
Formで渡された値が半角英数かどうかを
判断したいんだけど...
検索してもなかなか見つからないので
誰か知ってる人、知恵を貸してください。
0505デフォルトの名無しさんNGNG
>>504
man ascii
0506デフォルトの名無しさんNGNG
if ($hoge =~ /^[a-z]+$/) { print "HANKAKU EISUU DESU"; }
0507デフォルトの名無しさんNGNG
>>506
不合格
0508デフォルトの名無しさんNGNG
[^\W_]
0509名無しNGNG
申し訳ありませんが、どなたか教えて下さい。
perlからservletを呼び出せるのでしょうか?
例えば、「http://*****/*****/servlet」を呼びだしたい場合
$ret = "http://*****/*****/servlet"
と記述したら、「$ret」にservletの戻り値が入るのでしょうか?
0510デフォルトの名無しさんNGNG
...
0511デフォルトの名無しさんNGNG
use LWP::Simple
$ret=get('http://*****/*****/servlet');

これで。$retにservletの戻り値が(アワワ
0512名無しNGNG
>>511
早速のスレ有難うございます。
現在テスト環境がないので、明日試してみたいと思います。
有難うございました。
0513504NGNG
505-508
出来ました!ありがとうございました!
man ascii も勉強になったよ〜
0514デフォルトの名無しさんNGNG
datファイルに出力する際、

open OUT,">>datfile.dat";
print OUT "aaaaaa\n";
close OUT;

これで実行すると、datfile.datの中に元々あった文章の下の行にaaaaaa\nが入りますよね。
これを1番上の行に挿入したいのですがどうすればいいでしょうか?
0515デフォルトの名無しさんNGNG
>>514
ファイルの途中に挿入するのは原理的に無理じゃない?
0516514NGNG
>>515 無理なんですか…残念です。

もう一つ質問なのですが、
open IN,"datfile.dat";
while(<IN>){
(省略)
でファイルを読み込んだ時、datfileの上の行から読み込みますよね。
それを下の行から読み込むことは出来ますか?
0517デフォルトの名無しさんNGNG
>516
seek とか使えば出来ないことはないと思うけどちょっとしんどいかな......
datfile がそんなに大きくないなら

open FH, "datfile.dat";
@file = <FH>;
for ( $i = $#file; $i >= 0; $i-- ) {
print $file[$i];
}
0518 NGNG
素直にreverse使え。
0519デフォルトの名無しさんNGNG
>>514
open TMP, ">datfile.tmp" or die;
open DAT, "<datfile.dat" or die;
print TMP "aaaaaa\n";
print TMP <DAT>;
close TMP;
close DAT;
rename "datfile.tmp" => "datfile.dat" or die;

一番上に追加できりゃ、>>516 の処理はしなくていいと
読んだんだけど。これでいい?
0520newbieNGNG
1234567,犬,222,1
2345678,猫,333,2

というCSVファイルを食わせて、最後の数字の行だけ
前から三つまでのフィールドを書き出したいのですが、
どうやったらよいのでしょうか

ちなみにMacPerlのドロップレットにしようと思ってます
0521棄教者 ◆witdLTi2 NGNG
tail と sed をつかったらどうよ。
0522デフォルトの名無しさんNGNG
PerlスレッドはWebProgに隔離されます。
おまえら半端言語のくせに生意気だ。
0523デフォルトの名無しさんNGNG
perlのコマンドが一覧で乗ってるところを教えてください。
もしくは初心者用ページを。
0524名無しさん@MeadowNGNG
>>523
多分ActivePerlを入れたんでしょ。なら、documentが付いてるYO
英語じゃいやなら、http://www.harukaze.net/~mishima/perl/
あたりから辿れば、関数一覧なんかいろいろなところにあるよ。
0525デフォルトの名無しさんNGNG
2chのトリップと同じ処理ができるスクリプトを作りました。
しかしサーバーのOSがFreeBSDだったため、cryptの処理がLinuxと違い、困っています。

なにかうまく同じ処理結果を出す方法はないでしょうか?
0526デフォルトの名無しさんNGNG
>>525
Linuxのソースからcryptだけとってくるか、
FreeBSDのLinuxエミュレータ使えばいいんじゃねーの?
0527デフォルトの名無しさんNGNG
>>526
cryptってみんな同じ結果でるんじゃなかったっけ?
ためしにこれコンパイルしてみてよ。
http://davesource.com/Projects/DEStiny/x.c.html

・・つーかスレ違いだな
0528デフォルトの名無しさんNGNG
ある変数に格納されているテキストを,
外部コマンドに標準入力から入れ,結果をまた
別の変数に格納したいのですが,良い方法ないでしょうか.

$result = `echo '$a' | foo`;

としたのですが,$aに「'」が入っていたりすると,まずいようです.
何か良い方法があれば,教えてください.
0529デフォルトの名無しさんNGNG
DESのとMD5のとあるんじゃなかったけ。
0530デフォルトの名無しさんNGNG
>>529
ごめん。そだね。

>>525
cpanにcryptモジュールがいくつかあるからそっちでやってみて。
ちなみに、linuxでもDebianはDES、MandrakeはMD5みたい。
0531デフォルトの名無しさんNGNG
>528
どうして $a を ' で括る必要があるの?
0532デフォルトの名無しさんNGNG
>531
$aはHTML文書で,spaceやら"&"などを含んでいるのです...
何かいい方法は無いでしょうか?
0533デフォルトの名無しさんNGNG
^"^?"
^"^??" かな?
0534デフォルトの名無しさんNGNG
>532
" で括るようにしてもダメ?
それか、\Q$a\E とか......
0535デフォルトの名無しさんNGNG
>534
\Q$a\Eでいけました.
ありがとうございました.
0536デフォルトの名無しさんNGNG
#!/usr/bin/perl

print<<"HERE";
Content-type: text/html

<html><body>
■□■□■ index ■□■□■
</body></html>
HERE

exit;

こういうスクリプトを書いてサーバーに送った所、サーバーエラーになりました。
その後、■□■□■ index ■□■□■の部分の「 index 」の
全角スペースを取った所、正常に動くようになりました。■□■□■index■□■□■

これはPerlの仕様でしょうか?それとも、サーバー側の問題でしょうか?
0537デフォルトの名無しさんNGNG
>525
もう解決したのかな、、
これとかはだめ?
http://www.mikeneko.ne.jp/~lab/perl/des/
0538525NGNG
>>537の方法でうまくいきました。
皆さん、どうもありがとうございました。
0539デフォルトの名無しさんNGNG
全角の空白の二バイト目に「@」が入ってるからエラーになるんじゃないかな。
Perlの仕様だね。全角の空白以外の文字でも運が悪ければエラーになると思うよ。

Perl5.8.0だと面倒なことしないでスクリプト中にUnicodeとかで日本語書いて
ラクーにシフトJISに直して出力できたりするんだろうか?
0540デフォルトの名無しさんNGNG
crypt で暗号化されたものを
なんとか解析したいんですけど・・・
やはり無理ですか?
0541デフォルトの名無しさんNGNG
>>540
不可能ではないが、難しい
0542デフォルトの名無しさんNGNG
実質不可能と考えてよい。
0543デフォルトの名無しさんNGNG
>>540
賞金かけてみれば?
0544デフォルトの名無しさんNGNG
ん? ちゃんと計算せずに勘で書くけど、
賞金出すほど大変?

Perlで適当にやっても一ヶ月ぐらいで何とかなったり
する程度の分量だったりしないのかな。
0545デフォルトの名無しさんNGNG
だれか5.8使ってる人いる?
0546デフォルトの名無しさんNGNG
ログのを変換する作業をしています。
Sep 9 14:06:24 hogeという感じで表示されるので
if (/^(\w+ \d+ \d+:\d+:\d+ )
という感じに拾っています。

しかし10日から31日の間は
Sep 10とログが出るようです。
if (/^(\w+ \d+ \d+:\d+:\d+ )これでしか拾えません

差がSepと日にちの間が1日から9日の間は半角スペース二つ
10日から31日の間は一つになってしまいます。
どのように書けば両方とも拾えるようになりますでしょうか?
教えてください。
0547デフォルトの名無しさんNGNG
if (/^(\w+ {1,2}\d+ \d+:\d+:\d+ )
0548棄教者 ◆witdLTi2 NGNG
\s+で1個以上の空白文字になる。
0549棄教者 ◆witdLTi2 NGNG
>>547
{1,2}って手があったか。
(氏ね){1,999}
0550foobarNGNG
>>545
移行作業にかかりっきりです

0551546NGNG
ありがとうみなさん
{1,2}と\s+どちらでもいけました。
でもスペースが一つか二つと限定されてるので一応{1,2}でやってみました。
ありがとうございました。
0552デフォルトの名無しさんNGNG
>>545
Gentooだとデフォルトで5.8だよ
0553デフォルトの名無しさんNGNG
>>552
システム総入れ替えはいくらなんでもしんどいよ。

>>550
xs関係以外でなにか問題出てる?
unicodeをフルに使いたい用途があるんで移行したい気持ちはあるんだけど、
なぜか周りに移行するって人が全然いないんで、ちょっとびびってた。
移行が一段落したらどんな感じがレスしてくらはい。
0554デフォルトの名無しさんNGNG
PerlスレはWebProgに逝け。
さもないと荒らすからな
0555棄教者 ◆witdLTi2 NGNG
>>554
WebやるときはC/C++で、テキストファイルの一括処理やるときはPerl使ってますが何か?
0556デフォルトの名無しさんNGNG
>>554
Webやるときもテキストファイル、データベースもPerl使ってますが何か?
0557デフォルトの名無しさんNGNG
>>554
Perlのことよく知らないんだろうなこいつは。。
0558デフォルトの名無しさんNGNG
まあ正規表現書き方教室みたいのは向こうでやってほしいが
0559デフォルトの名無しさんNGNG
厨房言語は隔離板でやってほしい。
0560デフォルトの名無しさんNGNG
>>559
そういう発言は他所でやってくれ
0561デフォルトの名無しさんNGNG
>>560
パチパチパチ\(^_^)/
0562デフォルトの名無しさんNGNG
foreach (@tmp) {
  if(/hoge/) {
     インデックス+= 3;
  }
}

とかする事はできないのでしょうか?
つまり

for ($i = 0; $i< @tmp; $i++ ) {
  $_ = $tmp[$i];
  if(/hoge/) {
    $i += 3;
  }
}
の様な事がforeachで記述できないでしょうか?
0563デフォルトの名無しさんNGNG
for (;;)な形式で書けば良いじゃん。。。
0564デフォルトの名無しさんNGNG
糞スレ
PerlはWebProgへ
0565デフォルトの名無しさんNGNG
>>564
CGIってどういう意味か知ってます?
CGI=Perlって脳内変換されてるなら病院逝ったほうがいいですよ。
0566デフォルトの名無しさんNGNG
PerlなんかCGI以外の用途はないだろヴォケが
Rubyとは違うんだよ。Perl糞厨房ども
0567円楽NGNG
ずいぶんヘタクソな煽りが現れたね。山田君、566の座布団全部もってって。
0568デフォルトの名無しさんNGNG
少しぐらい間違えてもC言語みたいに暴走しないし、
標準入出力、ファイル入出力、文字列操作等使いやすいし、
UNIX系のマシンには高い確率でインストールされてるし、
ちょっとした処理にはとても使いやすいよPerl。
(だからCGIに向くのかも、、)
0569デフォルトの名無しさんNGNG
Perlで2chのスレを読んでますよ。
0570デフォルトの名無しさんNGNG
>564はム板のrubyスレでPerl隔離運動やってるよ。
どうも賑わっているPerlスレが気に入らなくて仕方ないようだ。
目障りだから、そのうち書込み禁止にしてもらった方がいいだ
ろうけど・・・


0571デフォルトの名無しさんNGNG
shigeが復活したようだ
0572デフォルトの名無しさんNGNG
プログラム板でのRubyスレの惨状は全てPerlユーザの責任なんだから
WebProgにでも逝って反省の念を示したらどうだ?糞虫ども
0573デフォルトの名無しさんNGNG
Rubyファンってこんなに下品なの。
Rubyスレ行ってみて書き込みの品の悪さに読む気もしなかった。
0574デフォルトの名無しさんNGNG
言語のチョイスと性格って関連あるような気がするんだけどどうだろ。

Java == あたらし物好き
Perl == 化石
C == 堅実
.NET関係 == 寄らば大樹の陰
LISP == 屁理屈こねるメガネ
Pascal == 杓子定規
SQL == 5時から男

さてRubyは・・・?
0575デフォルトの名無しさんNGNG
Ruby == 真のUNIXハッカー
0576デフォルトの名無しさんNGNG
なるほど。ワナビーが寄り付くわけね。
0577デフォルトの名無しさんNGNG
おれはこうだと信じて疑わないが。

Java == 流行に流されやすく主体性が無い。
C == 井の中の蛙の危険性アリ。
.NET == 盲目的な期待を抱きがち。
Ruby == Perlの真似しかできない。

もち、仕事で使わざるをえないケースは別。
Javaまわりは「押さえとかなっ」といった強迫観念が
うまくループしているが、それがいつまで続くかは謎。
0578デフォルトの名無しさんNGNG
>>572
お前の責任だよ。
0579デフォルトの名無しさんNGNG
むしろ、>>572 == >>573 じゃないかなあ。
0580デフォルトの名無しさんNGNG
foreach (<IN>) {
 ($id, $data1, $data2) = split /\t/;
 %data = ($id => { data1 => $data1, data2 => $data2});
}
として、$data{0}{data1}みたいにアクセスしたいのですが、
%dataに最後に読み込んだ物しか保存されてないようです。

0 256 256
1 128 128
とあったとき、0を読み込んだ直後だと$data{0}で中身が取り出せるのですが、
1を読み込むと0が消えてしまいます。
なにかおかしい(勿論私が)と思うのですが、なにがまずいのか教えて下さい。
ちなみに、@data[$id]とした場合は動いています。
0581デフォルトの名無しさんNGNG
ageます
0582デフォルトの名無しさんNGNG
それだと、ループの中で毎回ハッシュを初期化してしまいます。

$data{$id} = { data1 => $data1, data2 => $data2};

とするとうまくいきますた。
0583デフォルトの名無しさんNGNG
RubyとPHPって、なんであんなに嫌われるんだろう。
0584デフォルトの名無しさんNGNG
>>582
即レス感謝です、ありがとうございました。

0585584NGNG
しかし、配列だと初期化されないんですね。
ちょっと納得いくような行かないような。
0586デフォルトの名無しさんNGNG
>>562
あんたのコードでちゃんと動きましたが、何か?

@tmp = ('hoge', 'moge', 'boke', 'giko', 'mona', 'hoge');
$counter=0;

foreach (@tmp) {
if(/hoge/) {
$counter += 3;
}
print "$counter", "\n";
}

print "result $counter", "\n";

結果は6。
0587582NGNG
>>585
%data = ですと、「ハッシュ全体」みたいな意味になります。
@data[$id] ですと、「配列の要素」って意味です。
(しかしこの書き方だとワーニングが出るはずです。正しくは$data[$id])
$data[$id]にあたるのが、$data{$id}ということです。

確認してませんけど、@data = ($id, $data1, $data2);
なんて書くとやっぱり毎回消えるはずです。
0588584NGNG
丁寧にありがとうございます。
>しかしこの書き方だとワーニングが出るはずです
ワーニング出ませんでした、スカラーコンテキストだから$が正しいんですね。
全然気にしてませんでした。

ちなみに、ActivePerl v5.6.0 Build616使ってます。
古いかも知れませんが。
0589デフォルトの名無しさんNGNG
>>588
-wオプションをつけてみては?
> perl -wc hoge.pl
みたいな感じで。
0590デフォルトの名無しさんNGNG
base64形式でエンコードされたeuc文字列$keyをもとの
eucに戻すには:
$keyw =~ s/%(..)/pack('c', hex($1))/ge;
と1行で済みますが、

base64形式でエンコードされたshift-jis文字列$key
を簡単にもとのshift-jis文字に戻すperlコードを教え
ていただけないでしょうか?(Jcode.pmでやろうと
しましたが、うまく行きません...)
0591デフォルトの名無しさんNGNG
単にtosjis関数かませばいけたはずだけど
0592デフォルトの名無しさんNGNG
RubyもPHPも別に嫌われていないし。
単に 2ch 上で、嫌われるように仕向けている奴がいるだけで。
>>583 はその張本人か、そうでなければ嘘を嘘と見抜けなくて 2ch に向いていない
かどっちか。
0593デフォルトの名無しさんNGNG
いや、だから、
>>単に 2ch 上で、嫌われるように仕向けている奴がいる
なんでこういうのがいっぱいいるのかなと。他の言語よりはるかに目立つ。
0594デフォルトの名無しさんNGNG
・実際に嫌っている奴が結構いる
・嫌っているヤシが必死

くらいしかありえないんじゃないの
0595デフォルトの名無しさんNGNG
>・嫌っているヤシが必死

こっちのほうがありそう。
ほかに常駐してるスレでたったひとりのためにひどい雰囲気になったことがあって、強制IDに変更されたとたんにまともに戻ったりしたよ。
0596てすたNGNG
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |  / ̄ ̄ ̄ ̄
  |∵ |   __|__  | < うるせー馬鹿!
   \|   \_/ /  \____
    \____/
0597デフォルトの名無しさんNGNG
>>591
> 単にtosjis関数かませばいけたはずだけど
tosjis関数の前に、base64をデコードする必要とあるはず
ですが、この方法が分かりません。

perldoc Jcodeの説明を参考にして、次のようなコードを
作りました
#$sjkeyは、base64に変換されたshift-jis文字列
$jcode = Jcode->new($sjkey);
$jcode->mime_decode;
$euc = $jcode->euc;

これで、$eucには、eucに変換された文字列が入るはず
なのですが、実際には次のようなbase64のままの文字
しか$eucには入りません。

%uFF95%uFFFA%uFF91%uFF97

base64をデコードして、それをeucに変換する、のは
cgiの基本の基本のはずなのですが、分かりやすい書籍
などでも、分かりやすく説明したものが見つかりません。

ご指導いただけると、助かります。
0598デフォルトの名無しさんNGNG
「CGI は Web プログラミング板へ。」
って書いてあるのにしつこくしつこく
CGIの話をし続けるのはどうしたわけだろうか。

ていうか、シフトJISなのか? それ。
0599デフォルトの名無しさんNGNG
>598
ご指導ありがとうございます。

(1) %uFF95%uFFFA%uFF91%uFF97
>ていうか、(1)はシフトJISなのか?
上のコードは「放送」という文字に対応しています。
MacOSX用Internet Explorer5.2で「放送」をperl/cgiで
処理する過程で出てきたものです。シフトJISではないかも
しれませんが、とにかく(1)をeucに戻したいのです。

MacOSX用Netscape7.0だと素直なbase64/eucでは、
「放送」は、
%CA%FC%C1%F7
でした。
0600 ◆JAPH9PWA NGNG
なんか物凄い勘違いというかまるでわかってない気がするんだけど。
%xxx%xxx...ってのはbase64じゃないよ?
それは普通URIエンコードとかURIエスケープとか呼ばれる物だけど。
しかももしかしてJavaScriptでエンコードしてる?
%uFF95はShift_JISでもなくEUC-JPでもなくUnicodeだよ。
0601 ◆JAPH9PWA NGNG
…ってUnicodeじゃないじゃん…?
じゃあそのuは何だろう。謎だぁ…。
とりあえず以下のコードでデコードできるけど、どうやってエンコードしてるのさ?

$s1 = '%uFF95%uFFFA%uFF91%uFF97';
$s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg;

print $s1;
0602デフォルトの名無しさんNGNG
>>600
> しかももしかしてJavaScriptでエンコードしてる?
その通りです。私が作成しているソフトでは、文字列を
cgi/perlへ渡す際に、

(1) <FORM METHOD="get" ACTION="$main::myname">
から直接、perl/cgiに渡す方法、と
(2) Internet Explore5.2のJavaScriptでエンコードして、その
エンコードした値をCookieに保存して、そのCookieをperl/cgi
が読み込む、という方法、

の2つを採用しています。

MacOSX用IE5.2では、
(1)の方法では、「放送」とうい文字が:
%CA%FC%C1%F7 (euc)
なのに、(2)の方法では、
%uFF95%uFFFA%uFF91%uFF97 (unicode)
となり、混乱してしまいました。

> $s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg;
ご指導ありがとうございます。これで成功しました。

この問題を解決するのに数十時間を費やし、書籍も2冊購入し、
googleで何十回も検索しましたが、どれも無駄でした。

この掲示板の皆様からのご指導がなければ、解決できませんで
した。深くお礼を申し上げます。

0603デフォルトの名無しさんNGNG
先生、教えて。

ファイルハンドルから実際のファイル名を取得できますか?
perl5.0系です。
0604デフォルトの名無しさんNGNG
JavaScriptでescapeしたものはブラウザによってUnicodeだったりSJISだったりするよ、ちなみに。
0605デフォルトの名無しさんNGNG
SJISで書いてね。。。
0606デフォルトの名無しさんNGNG
>>603
そのファイルハンドルはどうやって取得したの?
0607603NGNG
>>606

open( INFILE, "test.txt" ) ;

で。

別にあるサブルーチンで、このINFILEを受け取って、そのファイル名を
取得したいのです。(もちろん、引数でファイル名指定ってのはナシで)
0608デフォルトの名無しさんNGNG
引数でファイル名指定ってのがナシな理由がわからない
0609デフォルトの名無しさんNGNG
Win2kじゃ使えないんですか?>Perl
0610デフォルトの名無しさんNGNG
>>609
え?ネタ?
0611デフォルトの名無しさんNGNG
ああ、使えないんですね。ありがとうございました。
0612デフォルトの名無しさんNGNG
>>611
逆。アクティブパールってのがある。
http://www.activestate.com/Products/Download/Get.plex?id=ActivePerl&_x=1
0613デフォルトの名無しさんNGNG
>>612
"No additional requirements"

と、あるみたいですが・・・。
0614デフォルトの名無しさんNGNG
あ、そういうことでしたか。
翻訳してみて漸く分かりました。
お世話様でした。
NTのやつでいいんですよね?
0615デフォルトの名無しさんNGNG
>>614
落ち着いてプログラムするように(藁
0616デフォルトの名無しさんNGNG
ありがとうございました。
以前、Win98対応のやつしか入ってない本を買いまして、
自分のPCがWin2kだったため諦めてたんです。
これで本が無駄にならずに済みそうですw
明日からPerl始めてみます。
0617デフォルトの名無しさんNGNG
>>616
じゃ、ついでに。ここのTips参考になるかな?
http://www.officeamuse.co.jp/tips/perl/index.html
0618デフォルトの名無しさんNGNG
>>617
ありがとうございます。
お陰様で今週はPerl週間になりましたw
ソースいじりながら参考にさせて頂きます。
0619デフォルトの名無しさんNGNG
>>617
このページ参考になりそうです。
ありがとうございました。
0620デフォルトの名無しさんNGNG
>>618
がんばれ。
もしHPで使うならインストールディレクトリは合わせといたほうがいいよ。
’\usr\bin’とか
0621デフォルトの名無しさんNGNG
activeperlについて質問させてください。
chdir("../");
ってactiveperlでも動くんですか?
linuxだと普通に動いてるんだけどactiveperl
だと動いてないっぽいのは気のせいでしょうか。

0622デフォルトの名無しさんNGNG
>>621
どうやって「動いてないっぽい」事を確かめたの?

use Cwd;
@dir = qw(foo bar baz);
mkdir $_, 777 and chdir $_ for @dir;
print(cwd(), "\n"), chdir '../' for @dir;

↑コレ走らせたら、ActivePerl build 522 on Win98SE
で問題なく動作したけど。
0623デフォルトの名無しさんNGNG
きっとIISのCGIつかったスクリプトで
カレントディレクトリが予想外の場所にあったんだよ。
0624デフォルトの名無しさんNGNG
鼻毛が出る程くだらない質問かと思いますが…

サブルーチンの中で my 宣言された変数は、そのサブルーチンを抜けた時点で消滅しますよね?
「メモリの節約」は、my を使う事によって得られる恩恵の一つと考えて良いのでしょうか?
0625デフォルトの名無しさんNGNG
>>624
> サブルーチンの中で my 宣言された変数は、そのサブルーチンを抜けた時点で消滅しますよね?

とは限らない。
0626624NGNG
>>625
見事に鼻毛が出たという訳ですね。
ちなみに、どういった場合に消えずに残るのでしょうか?
0627デフォルトの名無しさんNGNG
>>626
>>625はメモリ上から消えるとは限らないと言っているだけなんじゃないの?
使えるとは思えないんだけど・・・
0628627NGNG
あ・・・・でもデータがメモリー上に残っていたとしても、変数は消えるか・・・・
0629624NGNG
「変数の消滅 = メモリの開放」…とは限らないという事でしょうか?
0630デフォルトの名無しさんNGNG
じゃぁオレも便乗。

無名{}で一度だけのループを作ってその中でmyとかlocal宣言したら
そのブロックを抜けたら使えない=メモリの節約になりますよね?
0631デフォルトの名無しさんNGNG
うわぁ、ログが中途半端に取得されてて
オレだけ間抜けみたいじゃないか。
0632デフォルトの名無しさんNGNG
closure というのがあるので my に関しては
「消滅」しない場合があるということかな。
perldoc -q closure
man perlref
とか
0633624NGNG
>>632
なるほど、そういう物があるのですか…
ちょっと調べてみます、ありがとうございました。
0634デフォルトの名無しさんNGNG
ふらっと寄ってみた。MSNメッセンジャー作ってるのどこー?

>>624
% perl -le 'sub main{ my $a = 1; $b = \$a; } main(); print $$b;'
1

"変数"は消滅するが"値"は消滅しない、とか細かいことはしらん。

>>632
perldoc ややこい...
0635デフォルトの名無しさんNGNG
微々たるメモリの節約を気にしなきゃいけないような条件下なら
スクリプト言語なんて使わない。
0636 NGNG
sub a
{
my $a = 0;

b();

print "a=$a\n";
}

sub b
{
my $a;

$a = 10;
}

で結果に a=10 と表示されたんですが、これは正常なんですか?
0637デフォルトの名無しさんNGNG
正常に a=0 と表示されたけど
0638デフォルトの名無しさんNGNG
>>627
リファレンスがあれば使えるよ。
単に my のスコープの外に出れば my した変数名で参照できなくなるだけで、
リファレンスカウントが0にならない限りデータそのものは消えないし
リファレンス経由で使うこともできる。
0639  NGNG
キーボード入力って
while(<>){
if($_ =~ /aaa/)
}
とかやるじゃないですか。
でも、このスクリプトを実行する際に引数を渡すとその引数をファイル名として
そのファイルの中身が読み込まれてしまうんです。
たとえば、
%test.pl filename
とか実行するとfilenameのファイルが読み込まれてしまう。
キーボード入力とコマンドライン引数の両立の方法ってないのですか?
0640デフォルトの名無しさんNGNG
>639
while (<STDIN>)
下記のページが詳しい。
http://tohoho.wakusei.ne.jp/
0641デフォルトの名無しさんNGNG
>>639
>>640とはちょっと視点を変えて。
undef @ARGV; とかで引数を失くしちゃえば?
引数を他の用途で利用したいならshift使えばいい。
0642 ◆JAPH9PWA NGNG
最初に<>を使う前にgetopt等で@ARGVを加工してやればいい。
0643 NGNG
WebProgのperlスレよりも建設的なム板のperlスレ。
0644デフォルトの名無しさんNGNG
そろそろWebProgに移住しよう!
0645デフォルトの名無しさんNGNG
>>643
CGI 関係を排除しているからだろうな。
0646デフォルトの名無しさんNGNG
Perl = CGIは定説
WebProgに引きこもってろよカスども
0647デフォルトの名無しさんNGNG
↑
また出てきたぞ、こいつ
0648デフォルトの名無しさんNGNG
WebProgにいけ。
それがプログラム板の総意だ。糞虫ども
0649デフォルトの名無しさんNGNG
> それがプログラム板の総意だ
ぷぷぷ
そればっかり
0650デフォルトの名無しさんNGNG
CGI以外に存在意義のない言語なんかム板から消え失せろ
0651デフォルトの名無しさんNGNG
---------------------------------------------------------------
                  終了
---------------------------------------------------------------
続きはWebProgで
0652デフォルトの名無しさんNGNG
>>650
Perlは、windowsAPIや各種データベースとの連係、自然言語処理
(例えばChasen)などに幅広く利用されている。

一般的には、Perl>Ruby
圧倒的なライブラリ数、世界的な広がり、速度などの点で
Perlが勝る。Rubyはオブジェクト指向プログラミングを
簡単にできるようにしたが、スクリプト言語で作成する
規模のプログラムではそれほど必要不可欠な部分ではない。
0653デフォルトの名無しさんNGNG
>>651
おまえだけ行ってこい
0654デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl
お前らがどんなに現実逃避しようがこれは事実。ぷぷぷ
0655デフォルトの名無しさんNGNG
>>652
馬鹿の典型
糞Perlに出来ることは全てRubyでもできますが。しかも遙かにエレガント且つ迅速に。
0656デフォルトの名無しさんNGNG
>>655
できるけどできてないよな
Rubyは所詮Perlの後追いよ
0657デフォルトの名無しさんNGNG
Perlは糞えrぴおえryひおうーい45wyg:w54「83y」w「@・gかにの゛かきけいすんくすかむれりく゜゛えおのなみ゛やちまらいきく゜よにうてむせいひんくうえん゛くえう


うかうあかうあせまかわなんきいぼはのひせしとのひらしとみひにいてれすらんかきれあせうまらかせあうすかうあかあうまかうな゛あういなはとしはほとにはたてあのれもねけてるれしけいてもれきりかすまくきんすいにらg
0658デフォルトの名無しさんNGNG
それぞれ、「開発陣の勢い/厨房のわめき声」をS/N比として定義してみよう。
質の良い方はどっちになるだろう。
0659デフォルトの名無しさんNGNG
Rubyです。
0660デフォルトの名無しさんNGNG
Perlデス
0661デフォルトの名無しさんNGNG
ジサクジエンの粘着基地外は置いといて、、

>>624
実用Perlプログラミング(オライリー)という本の第1章
データリファレンスと無名のメモリ領域
のp.13あたりがそのものズバリの説明なので一度読んでみるとよろし。
0662デフォルトの名無しさんNGNG
Perlは糞
お前らも糞
0663デフォルトの名無しさんNGNG
Perlで料理のレシピを登録して、料理名や使用材料で検索できるようなものが作りたいです。
テキストの全文検索は自前でやったことあるけど、こーゆーのはSQLとか使ったほうが楽ですよねー?
SQLの構文自体は分かります。ただ、Perlが初めてなだけで(汗)普段はC++。
0664デフォルトの名無しさんNGNG
>>663
ヤット,マトモナシツモンガキター!!
0665デフォルトの名無しさんNGNG
>>663
実行環境は?
0666663NGNG
実行環境はRedHat6とかでしょうか。
Webで公開するためのCGIサーバは後で用意するつもりなので。
今はWinのActivePerでやります。

オススメの環境とかあれば、便乗させてもらいます。
0667デフォルトの名無しさんNGNG
>>663
なにがアンケート調査CGIじゃ
ヴぉけが
0668デフォルトの名無しさんNGNG
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
0669デフォルトの名無しさんNGNG
>>666
普段c使ってるならcでやんなよ。
>>663の処理ならコーディングの手間を減らせるメリットと
慣れない言語を扱うことのデメリットを天秤にかけりゃ
そのほうがて手っ取り早い。
0670デフォルトの名無しさんNGNG
>>669
まあそうだがRedHatなら定番MYSQL+PHPというのもある。
彼のスレを読んでる限りじゃデータベース使うならどうせ覚えることは多いし
参考書籍はこっちのほうが多い。
0671663NGNG
>>669
別に、早く仕上げたいという気持ちは無いです。
半分は勉強目的です。

>>670
MYSQLですか・・・。ちょっと調べてみます。
OSに標準で入ってるか、もしくはどこのプロバイダでも
アクセスを許可しているような感じのものであれば使ってみたいです。

0672デフォルトの名無しさんNGNG
>>671
レンタル鯖?
海外なら大抵使えるよ。
自宅に置いてWEBサーバのCGIでアクセスってのもある。
0673デフォルトの名無しさんNGNG
>>671
いずれにせよ、板違いだ。
WebProg板へいきな。
0674663NGNG
>>672
海外はまったく考えていなかったです。

WEBサーバのCGIでアクセスするのは面白いかもしれませんね。
処理速度が落ちるとは思いますが、今回の規模ならそれでも十分です。

外部のDBと連携するのではなく、Perlプログラム中に組み込むような
形のデータベースエンジンって無いんですかね?
0675デフォルトの名無しさんNGNG
半角カタカナが入力されたらエラーがでるような
チェックサブルーチンを作りたいのですが、
jcode.plを使わずにShiftJISのままで
それを作るにはどうしたらよいですか?
お知恵を貸して下さい。
0676デフォルトの名無しさんNGNG
文字コード表とか検索してみ。
0677672NGNG
>>674
WebProg板の初心者質問スレにレス移動したのでよろしく。
0678デフォルトの名無しさんNGNG
二度と戻ってくるな。
0679和尚NGNG
>>675 純粋な質問だが本気でお知恵を借りたいと思っているのか?
思っているなら貸さないでもないのだが。
0680675NGNG
>679
思ってない
0681675 ◆iuNtvKQI NGNG
>>679
思ってます?。今もまだ出来なくて調べてました。
0x00A0-0x00DFが半角カタカナのコードらしい、まで調べたのですがそれで
チェックしてみると全角カタカナがチェックの対象になってしまって…

>>680
偽者
0682デフォルトの名無しさんNGNG
>>681
半角カナって1バイトじゃなかったっけ ?
0683デフォルトの名無しさんNGNG
ばかばっか
0684デフォルトの名無しさんNGNG
>>682
EUCじゃ2バイトだよ
0685デフォルトの名無しさんNGNG
>>684

仕様書は、ちゃんと読めよ。

>>675
> ShiftJISのままで
0686デフォルトの名無しさんNGNG
( ´_ゝ`)フーン
0687デフォルトの名無しさんNGNG
>>677, >>679, >>683, >>684, >>686
これらの発言は、Perlを憎む某によって書き込まれています
気にしないで下さい

プログラム板のRubyスレとPerlスレ見れば分かる
例えば:http://pc3.2ch.net/test/read.cgi/tech/1028906179/206-
0688棄教者 ◆KIKYO7cg NGNG
自治厨うざい。
Perl は WebProg へ逝けというのなら、
CGI に使える言語なら Ruby でも C/C++ でも
WebProg に逝かないといけないね。
神とか漢とか言われてる人は CGI を C で書くでしょ。
0689デフォルトの名無しさんNGNG
>>688
DBIの具体的な使い方の話ならともかく、
cgiサーバがどうしたなんて話は完全に板違い。
0690デフォルトの名無しさんNGNG
>>688
PerlにCGI以外の*まともな*使い道ってあるの?嘲笑

ないだろ?ばぁぁか
0691デフォルトの名無しさんNGNG
>>690

Perlは結構使えますよ。
こないだ生ゴミ燃やすのに使いますた。
0692デフォルトの名無しさんNGNG
>>690
おれは688ではないが、ここはプログラム板だから使い道うんぬんの話だけじゃない。
そういう話こそWebProgやプログラマ板でやればよい。
でも、PerlはCGIの実行に使われるのが多いのも確か。
688は質問者のその辺を理解してやれよ。すぐ板違いというのはちょっとイタイ。
0693デフォルトの名無しさんNGNG
>>692
688→689スマソ
0694デフォルトの名無しさんNGNG
>>690
2ちゃんのスレッドをGETしてNNTPにPOSTするというデーモンを動かしてます。
0695デフォルトの名無しさんNGNG
>>690

商用Java Servlet engineのResinで、サーバを起動するのに使うな>Perl
http://www.caucho.com/resin/
0696棄教者 ◆KIKYO7cg NGNG
TeX2HTML はどの言語で書かれていますか(プ
Ruby で書かれたプログラムがあったら教えてください
0697デフォルトの名無しさんNGNG
気づいているのか知らんが、WebProg板へ行けとかいっているやつは
自治厨でもなんでもなく単なる荒らしだから相手をするな。
しかもジサクジエンしまくりなので注意。
0698デフォルトの名無しさんNGNG
RD >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> perldoc=糞豚
0699  NGNG
IO::File("-");
とやると標準入力のファイルハンドルが作られますが、
同じように標準出力、標準エラー出力のファイルハンドルはどう作るんでしょうか?
0700_gunzipNGNG
stdout ">-"
stderr ">&STDERR" ないし $io_obj->fdopen(fileno(STDERR), "w") など
0701 ◆JAPH9PWA NGNG
STDIN, STDOUT, STDERRはそれぞれIO::Handleオブジェクトとして扱えるから
require/use IO::Handle;でSTDOUT->print(...)というふうにメソッドを呼んだりできるよ。

# 今更気付いたけど、 "-"や">-"はfdの複製はしないんだね。
0702デフォルトの名無しさんNGNG
PerlはUnix系OSでは根幹部分にも多く使われていて、
それ無しではインストールでも苦労すると思うのだが。
0703699NGNG
あ、質問がまずかった。ごめんなさい。
やりたいこととしては
STDERR
を読み込んでそれをもとに処理を行いたいのです。
$io_obj->fdopen(fileno(STDERR), "r")
でいいのでしょうか?
0704 ◆JAPH9PWA NGNG
なんだ、そういうことか。
それは「標準エラー出力のファイルハンドルを作る」のとは何の関係も無いよ。
読み込みモードでfileno(STDERR)を開いても望みの結果は得られないでしょ。
やってみれば一発で分かると思うけど。

とりあえずそれをするにはIO::Scalarが使える。Perl5.6じゃないと多分失敗するけど。
#!perl
use IO::Scalar;
my $stderrbuff;
tie *STDERR, IO::Scalar => \$stderrbuff;
warn "warn 1";
warn "warn 2";
die "die";
END{ print $stderrbuff; }
__END__

Version500.5以下だとSTDERRを他のファイルにリダイレクトするしかないかも。
0705 ◆JAPH9PWA NGNG
Version500.5 -> Version5.005
0706デフォルトの名無しさんNGNG
perlってダサイ
0707デフォルトの名無しさんNGNG
またきみか。
0708デフォルトの名無しさんNGNG
俺がお前らのことをどれだけ憎んでいるかお前らには分かるまい
perlユーザは死ねperlユーザは死ねperlユーザは死ねperlユ
ーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねp
erlユ
ーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死ね
perlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは
死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザ
は死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザ
は死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは
死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死
ねperlユーザは死ねperlユーザは
死ねperlユーザは死ねperlユーザは死ねperlユーザは
死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユ
ーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねpe
rlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは
死ねperlユーザは死ね
0709デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>> Perl
0710デフォルトの名無しさんNGNG
webprogに引きこもっているなら許してやる。
プログラム板で糞言語の話をするな!
0711デフォルトの名無しさんNGNG
                          /<<Ruby使い
                         /   _
         /◎)、_______∠l /   /◎ヽ
          |  「....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;| |,,.   ` -_´/
    .彡⌒ー/|  \___;;;;;;;;;;;;;;;;;;;;;;| |;;;;,   "    i ̄ ̄i
      /´⌒ヽ_____\ ̄ ̄ ̄ .|;;;;;;,      /Ruby ゙、
    ,/´    ! ヲ=℃/ ̄      |;;;;;;;;,     /_,-..‐..-、_゙、
   /_レ‐ー――‐" ̄ ̄)         ヾ;;;;;;;;,,,..  /':::::::::::::::::::::`i
  /    __   r'~ ̄            ヾ;;;;;;;;;;;;,,,.トー――――-!
 /       _)               ヾ;;;;;;;;;;;;;;,,,,....
 |     、  ノ                 ヾ;;;;;;;;;;;;;;;;;;;;;;;;;,,,,....
 ゙、;;;,,..    ̄"                   );;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......
0712perl.c,c++,java,lisp(emacs lispだけど)ユーザ。NGNG
どうして、、、、こんなことを、、
rubyユーザさん、、かわいそうな人。
あなたは人から愛されたことが無いのでしょう。
0713デフォルトの名無しさんNGNG
PerlもRubyも使うが、どうして言語をこんなに憎めるのか理解不能。
0714デフォルトの名無しさんNGNG
RubyユーザのふりをしてPerlをののしり、Rubyユーザの評判を落とそうと仕向けている
粘着基地外がいます。放置をお願いします。騙されたり煽られたりした人がいたら
フォローしてあげてください。
0715デフォルトの名無しさんNGNG
perlには言語実装としての美意識が全くありません
書かれたコード!それは世にも醜い姿を晒します
悲劇はperlプログラマはそう思っていない事です
あとインタープリタ方式で遅いのによく使っていられることです
サーバの資源を無駄に使うperlを使うのをやめましょう
せめてJava ServletまたはCが書けるようになってください
ちなみに私は 709 ではありません 706です


0716デフォルトの名無しさんNGNG
「インタープリタ方式」(w

「perlプログラマ」(w

「Java ServletまたはC」(w

突っ込みどころ満載だな。
Perl使いこなしてる奴だってこれが
美しいと思って使ってる奴はいないよ。
0717デフォルトの名無しさんNGNG
>>715-716
> Perl使いこなしてる奴だってこれが
> 美しいと思って使ってる奴はいないよ。

そうか ? C 程度には、きれいに書けるよ。確かに、いくらでもぐちゃ
ぐちゃに書けるけど、それって C でも同じだろ ?
0718デフォルトの名無しさんNGNG
そんなあなたにDelphiです!!
どんなヴァカでも同じようにしか書けません

COBOLには負けるけどなー
0719デフォルトの名無しさんNGNG
確かにCだって、ぐちゃぐちゃにかけるんだけど、人によるよね。

仮にCを美しいとしたときに、Perlは言語の仕様自体が美しくないと
俺は思うけどな。
美しくないお陰で使い勝手がいい(ことになっている)というか。
0720デフォルトの名無しさんNGNG
>>715
インタープリタ方式で遅いのに=>rubyはコンパイル言語でしたか。
>>719
使い勝手がいい=>上等。
0721デフォルトの名無しさんNGNG
#!/usr/bin/perl

study, write, study,
do review (each word) if time.
close book. sleep? what's that?
0722717NGNG
>>719
> 確かにCだって、ぐちゃぐちゃにかけるんだけど、人によるよね。
まあね。どんな言語でもぐちゃぐちゃに書く奴はいるのは確か。

> 仮にCを美しいとしたときに、Perlは言語の仕様自体が美しくないと
> 俺は思うけどな。
ほぼ同意。
> 美しくないお陰で使い勝手がいい(ことになっている)というか。
いいか ? まあ、作者はいいと思ってるんだろうからから問題ないけ
どね。
0723デフォルトの名無しさんNGNG
遅いって言われてもなぁ。
グリグリの3DゲームをPerlで作ってるわけじゃないし、、
普通の人はPerlで十分の内容のときにPerlを使い、スピードがほしい時に
C++使ったり用途に分けて使い分けてると思うが。
0724デフォルトの名無しさんNGNG
お前ら釣られすぎ。
0725715NGNG
>>723
俺はcgiもCで書くけどね
最近はApacheで動かすmod_isapi Cで遊んでいるよ
0726デフォルトの名無しさんNGNG
726:名前:デフォルトの名無しさん
>>725
だから?

727 名前:715[] 投稿日:02/09/22
>>726
ネタにマジレスカコイイ(・∀・)イイ!



、、、( ノ ≧∇≦ )ノ  ぷはははっ!
0727デフォルトの名無しさんNGNG
CGIをCで書くことは滅多にないなぁ。
もしもポインタ周りのバグがあると大変だし。

PerlとかphpだのCだのは必要に応じて使い分けないと。
0728デフォルトの名無しさんNGNG
envp操作して
文字コード周りのめんどうさえみれば
ソケットも自在に使えるし
作ったあと美しい
perlだと軽自動車みたいな品のないコードが嫌い
ポインタとバッファオーバフローのチェックができない
Cプログラマが多すぎるからね
だからそういう人たちのためのperlなんだろうけどね
727は見込みありそうだけど
726は低脳そうだね
0729デフォルトの名無しさんNGNG
Q.具体的にどの辺が美しくないですか?<perl
0730デフォルトの名無しさんNGNG
>>729
> Q.具体的にどの辺が美しくないですか?<perl

switch 文がない。
同じ動作をする書き方のバリエーションが多すぎる。(書き易いけど、読み難い。)
sort() が $a, $b を使ってしまう。
多次元配列が無い。
構造体が無い。
ファイルハンドの扱いが特殊。(通常の変数じゃなくて、独自の名前空間をもつ。)

最近、Perl 使ってないから、今のバージョンだったら改善されているところはあるかもしれない。また、個人の好みによるところもある。とりあえず、今すぐ思いつくのはこんなところ。
0731デフォルトの名無しさんNGNG
まあ、多次元配列、構造体的な役割のものは増改築の温泉宿的に使えなくはないんだけど、
ほとんど同意。

同じ動作のバリエーションが多いっていうところが、
英語圏の人が「こう書けたら便利かなー(もしくは面白いかなー)」と
思って付け加えたんじゃないのか? って感じのところが美しくないんだな。
とってつけたような。
0732デフォルトの名無しさんNGNG
sort が $a, $b を勝手に使うって仕様はかなりびっくらこいた。
0733デフォルトの名無しさんNGNG
構造体もどきではだめ?
某サイトからパクッたサンプルソース
push @persons, { "name" => "tanaka", "age" => 24 };
push @persons, { "name" => "suzuki", "age" => 28 };
foreach $person (@persons) {
print "$person->{'name'} $person->{'age'}\n";
}
0734730NGNG
>>732
だよねー。俺もこの仕様が一番違和感ある。

>>733
> 構造体もどきではだめ?
ダメ。メンバの名前間違えても、コンパイルエラーにならないし、構造体の配列とか、
配列を含む構造体とかになると収拾がつかなくなるから。
0735デフォルトの名無しさんNGNG
>>733
常識だよ。リファレンスで多次元配列が無名ハッシュで構造体が扱える。
>>730
switch文なんてifの羅列で十分。gotoもあるけど。
バリエーションが多いから書きやすい=上等。
ファイルハンドルは別のほうが便利。

0736デフォルトの名無しさんNGNG
いいぞ。もっとperlを叩け!
0737デフォルトの名無しさんNGNG
>>732
予約語と思えば、、、
0738デフォルトの名無しさんNGNG
おとなしくSwitch.pm(>5.8)使え
0739デフォルトの名無しさんNGNG
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
0740デフォルトの名無しさんNGNG
ばーぁ>>Perler
0741デフォルトの名無しさんNGNG
程度低すぎるよ。この糞スレ。
おとなしくWebProgに逝ったら?
0742デフォルトの名無しさんNGNG
>>714 の指摘があって以来Rubyをほめなくなったね
0743デフォルトの名無しさんNGNG
>>735
> バリエーションが多いから書きやすい=上等。

と言うわりには、switch が無いのが謎なんだなー。

> switch文なんてifの羅列で十分。

と言うなら、for/foreach どっちかにしろよ。ここら辺の、いいかげんさがちょっと嫌い。

> ファイルハンドルは別のほうが便利。

まあ、これに尽きるね。要は、書きやすい事にかなり比重を置いている。これは、これでいいとは思うけど、その分保守はやりにくい。(= 大規模開発にはダメ言語)
従来 awk なんかで書いていたちょっとしたツールや、GCI から呼び出されるプログラムなんかにはなかなか便利。
0744デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
0745デフォルトの名無しさんNGNG
俺の中ではforはiを使って繰り返し、foreachは配列の要素をいじる、
って感じで使い分けるので必要。
0746デフォルトの名無しさんNGNG
万人にとって万能な言語なんかないのはあたりまえだが、やっぱり不満はいろいろ
あるもんだな。

Perl は、たしかに書きやすいけど読みにくい。でもそれをわかってて適所に使う
分には良いものだと思う。

あと自分で作るプログラムなら、スタイルを決めて書けばそれなりに保守しやすい
ものにもできる。それなりにセンスや経験はいるかもしれないけど。
0747デフォルトの名無しさんNGNG
このすれの人って
いい人多いね
がんばれ
0748デフォルトの名無しさんNGNG
つうか、複数でコーディングする場合って、言語を問わず
コーディングスタイルを統一しないか?普通。
一貫したコーディング規約を維持できればかなり読みやすいと思うんだが<Perl
0749デフォルトの名無しさんNGNG
めっちゃ低レベルなプログラムの質問していいですか
スキルがないもんで、、、、
0750デフォルトの名無しさんNGNG
そなこと書かんで早くやれYo
0751デフォルトの名無しさんNGNG
ああ、もう待ちくたびれた。俺はもう答えん。
0752デフォルトの名無しさんNGNG
俺は待ってるよ。どんとこい
0753デフォルトの名無しさんNGNG
matsuda math
matsuda hiro
saito masa
saito hiro
inoue maithi
これに
while(<STDIN>){
/(\$+) (\$+)/;
$m = $2;
$m =~ tr/a-z/A-Z/;
print "$2, $1\n";
}
これをやったら
何も出てこないのですよ、
0754デフォルトの名無しさんNGNG
入力をこれ↓に差し替えるといいかも
$$$$$$$ $$$$
$$$$$$$ $$$$
$$$$$ $$$$
$$$$$ $$$$
$$$$$ $$$$$$
0755デフォルトの名無しさんNGNG
これでOK?

while(<>){
  /([^ ]+) (\w+)/;
  my ($fam, $name) = ($1, $2);
  $fam =~ tr/a-z/A-Z/;
  print "$name, $fam\n";
}
0756デフォルトの名無しさんNGNG
>>756さん
ありがとうございます
STDINを抜くっていうのは何かしら利点があるのでしょうか
後二行めがよく分らんです、、、
勉強不足ですいません、、、
0757デフォルトの名無しさんNGNG
正規表現については自分で調べてください。
[^abcd]はabcd以外 \wはワードマッチ
0758a5NGNG
どうもありがとうございました。
sage忘れてました、
申し訳ありません
0759デフォルトの名無しさんNGNG
使用可能文字:半角英数
最大文字数:20桁

を全て表示するプログラムを教えてください!!
おながいします!!
0760デフォルトの名無しさんNGNG
馬鹿まるだしだな
セキュ板にでも帰れ
もしくは隔離板(php板)へどうぞ
0761デフォルトの名無しさんNGNG
>>759
> 使用可能文字:半角英数
> 最大文字数:20桁
> を全て表示するプログラムを教えてください!!

最大文字数って何のだ ? 表示幅のことか ? だったら...

print "0123456789ABCDEFGHIJ\n";
print "KLMNOPQRXTUVWXYZabcd\n";
print "efghijklmnopqrstuvwxyz\n";

でいいと思うが。
0762デフォルトの名無しさんNGNG
perl -e "print A .. Z, a .. z, 0 .. 9"
0763デフォルトの名無しさんNGNG
RubyユーザのふりをしてPerlをののしり、Rubyユーザの評判を落とそうと仕向けている
粘着基地外がいます。放置をお願いします。騙されたり煽られたりした人がいたら
フォローしてあげてください。
0764747 ◆VaEdQZq. NGNG
みんな
HTMLタグをperlに埋めるときどうしてるの?
エディタでごりごり書くの?
それが知りたいYO
0765デフォルトの名無しさんNGNG
>>764
ゴリゴリは書かん。
1.テキストエディタでブリブリ書く。
2.HTMLエディタでプリプリ書き、
  print <<XXXXX のところにペーストする。
0766747 ◆VaEdQZq. NGNG
>>765
なーる
だるい方法でがんばってるんだね
printのところにペーストするときって
結構コマイ作業で悲しくなったりしない?
変換するツールとか使ってないの?
0767デフォルトの名無しさんNGNG
なんで?

print <<'EOF'

hogehoge

EOF

でいいじゃん。
0768デフォルトの名無しさんNGNG
>>766
↓ここを
http://tohoho.wakusei.ne.jp/wwwperl1.htm#EOF
0769765NGNG
全然関係ないけど << って普通に書き込めるんですね
Aboneで下が化けたもので全角にしてしまった。
print <<XXXXXXX
0770747 ◆VaEdQZq. NGNG
>>768
ん
タグ変換ツールどこにあるの?
HTMLをデザインしたら
ごそっとprint文にはさんでくれるようなつーるって無いの?
リンク先みたかぎりじゃないようだけど
0771デフォルトの名無しさんNGNG
まっとうなエディタ使って頭使えば
そんなツールは要らんけどね。
0772デフォルトの名無しさんNGNG
>>770
そのままペーストすればいい、変換する必要ない。
print <<XXXXX
<HTLM>
<HEAD>
うんたらかんたら
</HEAD>
<BODY>
ちんらかんたら
</BODY>
</HTML>
XXXXX;
0773デフォルトの名無しさんNGNG
間違った下記ね
print <<XXXXX;
<HTLM>
<HEAD>
うんたらかんたら
</HEAD>
<BODY>
ちんらかんたら
</BODY>
</HTML>
XXXXX

ようは、print <<XXXXX; から XXXXX までをそのまま標準出力してくれる。
0774デフォルトの名無しさんNGNG
>>773
そっか
perlだとごそっとこぴぺできるんだ
perlの美点があったじゃない
Cだとprintf("<html>...............</html>");
にはさむから長くなると醜くなるからある程度で細切れにしないと
いけないその点perlのほうがよいね
0775デフォルトの名無しさんNGNG
>>774
これを美点と見るかどうかは人それぞれ。
0776デフォルトの名無しさんNGNG
まぁPerlはsed,awkやらから受け継いでる部分もあるし。
0777デフォルトの名無しさんNGNG
>使用可能文字:半角英数
>最大文字数:20桁

>を全て表示するプログラムを教えてください!!
>おながいします!!

ん?全ての組み合わせって事か?
パスワードでもクラックするのか?(藁
0778777NGNG
ちなみに漏れは分からんがな・・・。
ヘタレなのでsage
0779デフォルトの名無しさんNGNG
>>778
簡単だよ。
print "00000000000000000000\n";
print "00000000000000000001\n";
print "00000000000000000002\n";
   :
   :
print "zzzzzzzzzzzzzzzzzzzy\n";
print "zzzzzzzzzzzzzzzzzzzz\n";
0780777NGNG
一桁からって事じゃないのか?
print "0\n";
print "1\n";
print "2\n";
   :
   :
print "a\n";
print "b\n";
   :
   :
print "zzzzzzzzzzzzzzzzzzzy\n";
print "zzzzzzzzzzzzzzzzzzzz\n";

まぁ、どちらにしても漏れには分からん。っていうか質問が意味不明だYO!!
0781デフォルトの名無しさんNGNG
ていうかfor文をいっぱい使うだけだろ。。
0782デフォルトの名無しさんNGNG
>>777-781
あんたらがこの板を見てる理由がサパーリわからん
0783デフォルトの名無しさんNGNG
>>774
リテラルに設定しておけばいい。
printfでだらだら書くなど愚の骨頂。
0784デフォルトの名無しさんNGNG
Perl2exeで変換の仕方どうスルんですか?
0785デフォルトの名無しさんNGNG
#!/usr/bin/perl
#main()
{
  ....
  ....
}

と、c言語風に書く俺は邪道ですか?
こういうインデントがついてないと読みづらいから。
0786デフォルトの名無しさんNGNG
>>782
ここは質問箱だろ。疑問を投げかける前に質問に答えれ!!
0787デフォルトの名無しさんNGNG
>>785
どうせなら
sub main(@)
{
   blah blah blah...
}
unshift @ARGV, $0;
main @ARGV;
0788デフォルトの名無しさんNGNG
VisualPerlって VisualStudio.NETいれないと使えないの?
0789デフォルトの名無しさんNGNG
>>787
それいいですね、今度から使わせてもらいます。
0790デフォルトの名無しさんNGNG
perlではハッシュの値としてリストを突っ込む事はできないんですか?
0791デフォルトの名無しさんNGNG
程度の低い糞スレ
0792デフォルトの名無しさんNGNG
それを見てるお主も糞尿
0793デフォルトの名無しさんNGNG
フンニョーッ!!! キャハ★

>>790

$hoge{abc} = [0, 1, 2, 3];
みたいな。

んで、
@list = @{$hoge{abc}};

みたいな。
0794棄教者 ◆KIKYO7cg NGNG
八種のリファレンスだよね。
0795デフォルトの名無しさんNGNG
リファレンスになってるのは配列で、
ハッシュの値が配列のリファレンス。
0796デフォルトの名無しさんNGNG
Java ServletもServlet engineをちゃんと選ばないと遅いよ。
FFのサイトはTomcatつかってたけどありゃアホだね。
0797デフォルトの名無しさんNGNG
Perlにswitchが無いのはLarryの趣味というかポリシーを反映した結果だよ。

if .. then .. else ..とかは英語的に読むことができるが、
switchは唐突に分野の違う言葉だからキモイ

みたいなことをカンファレンスで言ってた
0798790NGNG
>>793さん
ありがとうございます。昨日からPerlを使いはじめたばかりで
あたふたしていました。リファレンス使えばよいんですね。
0799棄教者 ◆KIKYO7cg NGNG
>>797
Perl はぼくの好きな言語だけどたまに開発者の趣味が露骨に現れるから嫌い
C に似せてあるくせに break; が last; になっていたり、
continue や next のあたりの名前の付け方が違う。
一ヶ月に一度は last を break と書いて半日潰す。
0800デフォルトの名無しさんNGNG
禿同。

便利なんだか不便なんだかね。入り口が入りやすいだけに。

あと、これを書くと荒れるのかもしれないが、
オブジェクト指向の実装が微妙にヘンなのもなあぁ。

どうせとってつけたようになるんだから
Objective Cみたいなカッチョエーのにしてほしかったな。
0801デフォルトの名無しさんNGNG
>>797
> if .. then .. else ..とかは英語的に読むことができるが、
> switchは唐突に分野の違う言葉だからキモイ
> みたいなことをカンファレンスで言ってた

それは、そうだが普通の人には perl の構文の方が唐突に分野の違う言葉ではないかと...。
0802デフォルトの名無しさんNGNG
Perlについて質問です。

$a1 〜 $a10 までの関数があるとします。
これをforループなどで全ての関数に対して同じ処理をしたいと思います。
$a$i ←このようなイメージです。$iを1〜10まで変化させるわけです。
このような場合、どのような記述をすればよいのでしょうか?
0803デフォルトの名無しさんNGNG
>>796
FF のサイトってファイナルファンタジーの公式サイト? そりゃ Tomcat じゃ
無理だろ。っていうかそれは道具の選定を間違ってるだけで道具に罪はない。
0804デフォルトの名無しさんNGNG
>>802

関数? 変数じゃなくて?
0805デフォルトの名無しさんNGNG
>>804
すみません。変数でした。
0806デフォルトの名無しさんNGNG
それは、 ${"a$i"} こんなふうにかいてたとえば

for ($i = 1; $i <= 10; $i++) {
print ${"a$i"} . "\n";
}

こんなふうにできなくはないんだけど
配列変数を使うように全部書き直したほうがいいと思うよ。

応用の利くテクとしては

for ($i = 1; $i <= 10; $i++) {
eval("print \"\$a$i\\n\";");
}

とかも。
0807デフォルトの名無しさんNGNG
>>806
どうもありがとうございました。
0808 NGNG
なぜ配列を使わない?
0809デフォルトの名無しさんNGNG
>>808
>>806 さんの言われた通りに配列を使ったプログラムに書き換えました。
0810デフォルトの名無しさんNGNG
>>809
ズコー
0811棄教者 ◆KIKYO7cg NGNG
sub func0 { .... };
sub func1 { .... };
...
sub func9 { ... };
に対して、
@funcref = ( \&func0, \&func1, ..., \&func9 );
てすることで、

foreach( @funcref ) {
  &{$_}( @arguments );
}
とすれば、複数の関数に対して一括処理を行うことができます。
なお、 @arguments というのは &func0, &func1, ..., &func9
に食べさせたい引数です。
0812棄教者 ◆KIKYO7cg NGNG
漏れは C のポインタの概念がわからなくて苦労しましたが、
Perl のリファレンスを使っているうちに逆に C のポインタが理解できるようになりました。
まんせー。
0813デフォルトの名無しさんNGNG
>>812
お、すげー。
0814デフォルトの名無しさんNGNG
>>812
すごすぎ
僕の目標です
0815デフォルトの名無しさんNGNG
>>806
for $i (0 .. 9) {
$a_ref = "a$i";
print $$a_ref, "\n";
}
でもいいでしゅか?
0816デフォルトの名無しさんNGNG
>>801
んー気持ちはわかる。
事実折れもCで書いてる時間違ってlastとか書いちゃうことあるし。

んでもそこを突くのはちょっと違うような気もする。
「同じようなニュアンスで使える」別の言語なんだもん。
他の言語に慣れてるなら perltrap.podを声に出して熟読は必須でしょ。
http://www.perldoc.com/perl5.8.0/pod/perltrap.html
0817デフォルトの名無しさんNGNG
サブルーチンAの引数にサブルーチンBを指定して
使いたいんですがどうにもうまくいかないようで・・・・。
どうやればよでしょうか?アドバイスお願いします。

sub FuncB
{
  #.............
}

sub FuncA
{
  $Func = $_[0];  #?
  &{$Func}();    #?
}

&FuncA(FuncB);   #?
0818デフォルトの名無しさんNGNG
>>812
perl のリファレンスは宣言がない分、文法的にすっきりしていると思ふ。
0819デフォルトの名無しさんNGNG
>>817
ヒント。 >>811
0820817NGNG
>>819
どうもです。
0821デフォルトの名無しさんNGNG
Windows98SEでFile::findを使ったプログラムを書こうとしているのですが、
「ソ」「予」「能」などの文字が入ったディレクトリ名だと、そのディレクトリ以下を
検索してくれません。
原因は、Shift-JISの2バイト目にバックスラッシュ文字が入っているためだと思うのですが、
これを回避するためのFile::findに対するパッチなどはありますか?

使っているperlは、ActivePerl5.6.1 BinaryBuild 633です。
0822デフォルトの名無しさんNGNG
>>821
パッチはないと思う。
自力で\x5cを追加しておくれ。
0823デフォルトの名無しさんNGNG
>>821
jperl使ったら?
0824デフォルトの名無しさんNGNG
ラクダ本新しいの買った?なんで洋書の2倍の厚さと値段で
同じページ数なのyo!
(洋書の方が紙が薄い)
0825デフォルトの名無しさんNGNG
PerlerはCurlをやれば
もう馬鹿にされない(と思う)
がCurlが主流にならなければ馬鹿にされてしまう
0826デフォルトの名無しさんNGNG
>>824
策略
0827スンスンブラクラできたよー(・∀・)NGNG
@sun = ('スン','スーン','( ゜Д゜)ハッ');

for ($sunn=0; $sunn<1; $sunn--){
   $sn = "$sun[0],$sun[1],$sun[0],$sun[2]\n";
   print "$sn\n";
}
0828デフォルトの名無しさんNGNG
ブラクラの意味すら知らんのか。
0829デフォルトの名無しさんNGNG
Curlに誰も反応しないところが
Perlerなんだよな
だからDel厨やその他でPerlよりはいいよなとか言われてまうやないけ
もう氏ねとは言わせるなPerler立ち上がれ

http://curl.fc2web.com/

0830デフォルトの名無しさんNGNG
自作自演ですか?
0831デフォルトの名無しさんNGNG
curlは絶対に、はやらない
0832スンスンブラクラできたよー(・∀・)NGNG
>>828 いや、実行してみたらそんな気分になったわけで…
    止め方がわからないわけで…
    
0833デフォルトの名無しさんNGNG
>>829
Curl は終わっている言語だし。
0834デフォルトの名無しさんNGNG
>>833
アフォ
でてきたばかりで終わってるはないんじゃないの?
だいたい833は言語仕様の概要程度でもいいから知ってるの?
もちろん漏れは知らないけどね
0835デフォルトの名無しさんNGNG
>>834
ていうか2chのスレでは去年の夏ごろにおまえの紹介した
ホームページそのままの内容がコピペされてるだろうが。

ということは、それから一年以上もまったく更新のされていないページを
おまえはこのスレッドで紹介したことになる。

そんな言語を「死んだ」言語だといって何か問題があるのか?
0836デフォルトの名無しさんNGNG
>>824
日本語版出たのかっ?!
0837デフォルトの名無しさんNGNG
@sun = ('スン','スーン','( ゜Д゜)ハッ');
$"=',';

while (1) {
   print "@sun\n";
}
0838スンスンNGNG
@sun = ('スン','スーン','( ゜Д゜)ハッ');

foreach (@sun){
print "$_";
}
0839デフォルトの名無しさんNGNG
@sun = ('スン','スーン','( ゜Д゜)ハッ');

foreach (@sun) {
  print;
}
0840デフォルトの名無しさんNGNG
print foreach ('スン','スーン','( ゜Д゜)ハッ');
0841デフォルトの名無しさんNGNG
>>840
そんなことできんの?
0842デフォルトの名無しさんNGNG
print join ',', @sun;
0843スンスンNGNG
$sun = 'スン';
@suun = ('スーン','( ゜Д゜)ハッ');

$surn[0] = $sun . $sun . $suun[0];
$surn[1] = $sun . $sun . $suun[0] . $suun[1];

foreach (@surn){
print "$_\n";
}
0844837へ。NGNG
@sun = ('スン','スーン','( ゜Д゜)ハッ');
$"=',';

while (1) {
   print "@sun\n";
}
を10回繰り返すにはどうすればいいの?
0845デフォルトの名無しさんNGNG
for文にするなりカウンタ変数つけるなりすりゃいいじゃんか…
0846デフォルトの名無しさんNGNG
for( $i = 0; $i < 10; $i++ )
{
  @sun = ('スン','スーン','( ゜Д゜)ハッ');
  $"=',';

  while (1) {
     print "@sun\n";
  }
}
0847デフォルトの名無しさんNGNG
>>836
日本語フォント対応 2002/9予定
IDE 2002/12予定
日本語マニュアル Curl Programming Bible翻訳版 2002/12予定
だそうだ
お前見込みあるよ
0848デフォルトの名無しさんNGNG
@sun = ('スン','スーン','( ゜Д゜)ハッ');

print "何回スンスンしまっか?>";
$un= <STDIN>;

for ($suun=0; $sunn<$un; $count++){
  print "$sun[0]$sun[0]$sun[1]$sun[2]\n";
}

0849棄教者 ◆KIKYO7cg NGNG
>>848
for 文は
for( $suun = 0; $suun < $un; $suun++ ) { # $count++ じゃない
でしょ。
0850デフォルトの名無しさんNGNG
>>849 2日前にやり始めたんで何が違うかわかりま千。

0851棄教者 ◆KIKYO7cg NGNG
$count と $suun の違い。
0852デフォルトの名無しさんNGNG
すいません、アクセスカウンターを作ろうと、入門書をよみながらコードを書いたのですが
いざCGIファイルを開いてみると、サーバーエラー、となってしまいます。
何が問題かさっぱりわかりませんコードは↓です

#! c:/perl/bin/perl

# カウントファイルの読み込み
open(IN, "<C:\Apache\htdocs\tendays\count.dat");
$count = <IN>;
close(IN);

++$count;

# カウントファイルへの書き込み
open(OUT, ">C:\Apache\htdocs\tendays\count.dat");
print OUT $count;
close(OUT);

# ヘッダー・HTML出力
print <<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">
<html>
<head><title>あくせすかうんたぁ</title></head>
<body>
<p>あなたは・・・・・$count番目の訪問者です。</p>
</body>
</html>
END
0853852NGNG
すいません、コードのコピペ間違えました

#! c:/perl/bin/perl

# カウントファイルの読み込み
open(IN, "<./count.dat");
$count = <IN>;
close(IN);

++$count;

# カウントファイルへの書き込み
open(OUT, ">./count.dat");
print OUT $count;
close(OUT);

# ヘッダー・HTML出力
print <<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">
<html>
<head><title>あくせすかうんたぁ</title></head>
<body>
<p>あなたは・・・・・$count番目の訪問者です。</p>
</body>
</html>
END
0854>>37じゃねーけどNGNG
>>853
悪いことは言わんから、黙って WebProg 板へ行け。そっちの方がまともな回答が得られるぞ。
0855デフォルトの名無しさんNGNG
次スレはいらないぞ。
0856デフォルトの名無しさんNGNG
続きはWebProgへいけ
二度と戻ってくるな。
0857デフォルトの名無しさんNGNG
「超」がつく程の糞言語 = Perl
0858デフォルトの名無しさんNGNG
print "何回スーンしますか?";
print (("スン スーン ( ゜Д゜)ハッ\n") x <STDIN>);
0859デフォルトの名無しさんNGNG
perlはVBよりも糞なんですか?
0860デフォルトの名無しさんNGNG
はい、糞です。
↓次、どうぞ
0861デフォルトの名無しさんNGNG
Ruby愛甲!
0862デフォルトの名無しさんNGNG
perlはHSPよりも糞なんですか?
0863デフォルトの名無しさんNGNG
いぇs
0864デフォルトの名無しさんNGNG
はい、糞です。
↓次、どうぞ
0865デフォルトの名無しさんNGNG
>>853
勘で、、
count.dat のパーミッションに w 入れてる?
0866デフォルトの名無しさんNGNG
パーミッションに(w
0867デフォルトの名無しさんNGNG
サーバはunix系じゃないのか
アレがapacheだったらログ見ればある程度分かりそう
0868デフォルトの名無しさんNGNG
>>862
rubyプログラミングしたことないのに、ruby愛好家なのか
0869棄教者 ◆KIKYO7cg NGNG
>>852
c:/perl/bin/perl
が変。
おたくのプロバイダーのCGIの説明書を読んで、
Perl のパスがどこにあるかを確認してください。
この件に限っては、荒らしが書いているとおり、 WebProg 板に逝った方が
親切な回答が得られそうです。
0870862NGNG
>>868 まちがったんなら訂正してくれよ。

とりあえずperlやめる。買った本も理解したんで。HSP以下の言語らしいし。
>>863 >>864 ← 二人もそういっているし。
CGIは始めっからやる気ないし。
0871デフォルトの名無しさんNGNG
はじめたりやめたりするほどご大層な言語じゃなかろう?
使う用事がないならさいしょっから無駄なことしなけりゃいいのに。
人生そんなのの繰り返しなんだろうなこの人。
0872 NGNG
perlって、管理に使うとウマー。
一般ユーザアプリにはあんまり使えないけど、
それは糞だからというわけではなく、
適材適所名だけ。
HSPも管理にはつかいづらいんじゃない?
使ったことないからわからないけど。
0873854NGNG
>>869
> この件に限っては、荒らしが書いているとおり、 WebProg 板に逝った方が
> 親切な回答が得られそうです。

俺って、「荒らし」だったんだ...。
0874デフォルトの名無しさんNGNG
で話変わるけどさ
Apacheで使える
mod_なんたらのperlってあるのか貴様ら
IISはActivePerlだっけ?
多少速くうごくやつあるよね
って聞く態度じゃないなあ
0875デフォルトの名無しさんNGNG
http://perl.apache.org/
0876デフォルトの名無しさんNGNG
大きめのログファイルを末尾から一行ずつとりだすのに<>を使う方法ってないですか?
0877デフォルトの名無しさんNGNG
先頭から読むのと同じようにはできないね。
http://www.din.or.jp/~ohzaki/perl.htm#File_Reverse
0878デフォルトの名無しさんNGNG
@lines = `tail hoge`
一行づつ読んでくるのは大変かも
単純に一回全部読み込んで、逆順で取り出すなら楽だろうけど
0879デフォルトの名無しさんNGNG
"大きめの"ってのがどれくらいかにもよるわな。
0880デフォルトの名無しさんNGNG
>>876
そんなニーズはほとんどないから無理。
素直に後ろからシークしていけ。
0881デフォルトの名無しさんNGNG
質問です。
携帯でも書き込み可能な掲示板で、PCとかiMなどの端末表示をしたいと思っています。

 #$modeを文字に変換
if($mode == 1){$tanmatsu = "iM"};
if($mode == 2){$tanmatsu = "JS"};
if($mode == -1){$tanmatsu = "EZ"};
if($mode == -2){$tanmatsu = "DX"};
if($mode == 0){$tanmatsu = "PC"};

 # タイムスタンプ生成
($sec,$min,$hour,$mday,$mon) = gmtime($gtime+$TIMEZONE*3600);
$timestamp = sprintf("%02d/%02d %02d:%02d <%s>",++$mon,$mday,$hour,$min,$tanmatsu);

$tanmatsuに端末の略称を入れて、$timestampに付加して表示させようとしてるのですが、
<%s>の部分だけごっそりなくなって表示されてしまいます。
どうすればいいのか教えて下さい。
0882デフォルトの名無しさんNGNG
$mode の値がなにかわからんけど、独立したif文にしないで elsifとelseも
使って書かないとデフォルト値を $tanmatsu にセットすることもできんのじゃ?
0883881NGNG
>>882
んー、その前にこんなのがあるから、こんな風に書いてみたんですけど…。

 # ---ブラウザ種別をチェック(iモード:1 EZインターネット:-1 PメールDX:-2 J-Sky:2 その他:0 )
$user_agent = $ENV{'HTTP_USER_AGENT'};

if($user_agent =~ /DoCoMo\//) { $mode = 1; }# iモード
if($user_agent =~ /UP\.Browser\//) { $mode = -1; }# EZインターネット
if($user_agent =~ /PDXGW\/\d\.\d/) { $mode = -2; }# PメールDX
if($ENV{'HTTP_X_JPHONE_MSNAME'} ne '') { $mode = 2; }# J-SkyWeb (Ver3.10)

                                   # PDAモード(ザウルス・コミパル・Dialo)
if($user_agent =~ /sharp pda browser/ || $user_agent =~ /Dialo/) { $pda = 1; }
0884 ◆JAPH9PWA NGNG
>>881
<hoge>がタグのように見えるから。
どうすればいいのかはHTMLの基礎を学んでください。
0885882NGNG
>>883
それなら変数$mode を使わずに直接 $tanmatsu にセットしたら?

if($user_agent=~ /DoCoMo/i){ $tanmatsu= 'iM'; }# iモード
elsif($user_agent=~ /UP\.Browser/i){ $tanmatsu= 'EZ'; }# EZインターネット
elsif($user_agent=~ /PDXGW/i){ $tanmatsu= 'DX'; }# PメールDX
elsif($ENV{'HTTP_X_JPHONE_MSNAME'}){ $tanmatsu= 'JS'; }# J-SkyWeb (Ver3.10)
elsif($user_agent=~ /sharp pda browser|Dialo/i){ $tanmatsu= 'PDA'; }
else { $tanmatsu= 'Other'; }
0886881NGNG
>>884
タグと認識されて消えてるってことですか。
わかりました、学んでみます。
ありがとうございました。
0887881NGNG
>>885
配布してるCGIに手を加えてるんですけど、他にも$modeってたくさん使ってるので…。w
その部分に$modeと$tanmatsuを2つ書けば済む話なんですけど、
あとで修正箇所が分かりやすいように、別に書きました。
0888デフォルトの名無しさんNGNG
>>880
ニーズはあると思うが、、
0889デフォルトの名無しさんNGNG
>>888
あんたにとってはだろ

サイズ(データ全体)の分からないものの末尾から処理出来るわけ無いじゃん
0890デフォルトの名無しさんNGNG
>>889
perl -e 'print reverse <>'
0891881NGNG
試しに>>881の
$timestamp = sprintf("%02d/%02d %02d:%02d <%s>",++$mon,$mday,$hour,$min,$tanmatsu);
これを、
$timestamp = sprintf("%02d/%02d %02d:%02d %s",++$mon,$mday,$hour,$min,$tanmatsu);
に直してやってみたんですけど、まだ表示されません。

>>884さんの理由であってるんしょうか?
0892デフォルトの名無しさんNGNG
>>891
>>885
0893デフォルトの名無しさんNGNG
sprintf("%02d/%02d %02d:%02d $tanmatsu",++$mon,$mday,$hour,$min);
でホントに $tanmatsu に値が入ってるか確認。
0894デフォルトの名無しさんNGNG
>>889
>>890

プ
0895881NGNG
>>893
ありがとうございます。
それでも出ないですね。^^;

もしかしたら、$timestamp変数を代入する所ではなく、実際表示する部分(?)で何か細工があるのかな?と思ってみたり…。
0896デフォルトの名無しさんNGNG
>>895
おまえ意図的にレスを飛ばしてないか?
if文ですべて式が真じゃなくて偽だから値がセットされてないことに気づけ馬鹿。
0897881NGNG
>>896=>>882(?)
一度は「elseif」を使った文も試してますよ。
でも、配布されてるCGIソース(>>883の部分)が正しいから、なくてもできると思ったのですが…。
0898デフォルトの名無しさんNGNG
elsifよりも最後のelse。または$tanmatsuを初期化しとけってこと。
0899881NGNG
>>898
初期化しても、何も出ないっす。
やっぱり、おそらく表示する所で何かあるのか…。
0900デフォルトの名無しさんNGNG
「CGI は Web プログラミング板へ。」って
書いてあるのにしつこくしつこくCGIの話をここでしようとするってのは
どういうつもりなのかね。

0901881NGNG
>>900
すいませんでした。
0902デフォルトの名無しさんNGNG
>>889
なんでニーズと技術的な話を混同させて話してるの?
0903デフォルトの名無しさんNGNG
889さんは房なんだから、いじめちゃかわいそうだよ。。。
0904デフォルトの名無しさんNGNG
ちなみに、while <>の逆順処理はforeach revese <>で可能。ただし、少し重い。
0905KNGNG
教えてください。
-fとか-dでファイルが実在するかどうかをチェックするさいに、その大文字、小文字を
区別しないようにしたいのですが、なにかよい方法はありませんでしょうか。
どのような関数を書けばいいのでしょうか?すみませんが教えてください。
0906デフォルトの名無しさんNGNG
大文字・小文字を区別しないシステムならそれでチェックできると思うが
0907デフォルトの名無しさんNGNG
>>906
糞は黙ってろ
0908デフォルトの名無しさんNGNG
>>905
それ難しいかもね。
てゆうか、ディレクトリ中にあるファイル名全部出してきて、
そのリストに対して比較するしか無いような気がする。
他にやり方あったら誰か書いてよ
0909デフォルトの名無しさんNGNG
>>908
それが一番スマートだな。

sub is_exists_file_in {
 local *DIR;
 opendir DIR, shift or return;
 my %file = map { lc, $_ } readdir DIR;
 closedir DIR;
 return map $file{$_}, grep $file{$_}, map lc, @_;
}

ファイル名を一文字ずつバラして正規表現組み立てるってのも
考えついたが、明らかに上に挙げた例の方が分かり易かろう。
0910デフォルトの名無しさんNGNG
初めて質問させていただきます。
sendmailで自動的にメールを送ります。
Windowsに送ると読めて,Macに送ると化けてしまうって時,
原因はどういったかんじでしょうか?

縺九i縺ョ縺疲ウィ譁・「コ隱阪Γ繝シ繝ォ
こんなかんじ。
0911デフォルトの名無しさんNGNG
>>909
その糞コードは、わざとか?
0912デフォルトの名無しさんNGNG
911=906
0913デフォルトの名無しさんNGNG
>>912
いや、907=911
0914デフォルトの名無しさんNGNG
コードがわからないと原因なんてわからん
0915KNGNG
>>909様
どうもありがとうございます。
すみまんせが良く分からないのでさらに質問させてください。
これだと、ファイル名がFoo/hoge/AAA.gifとかいうようにディレクトリ階層が
何個かある場合にもうまくいくのでしょうか???Foo/hoge/AAA.gifというのを
引数で与えた場合にも例えばfoo/Hoge/Aaa.gifというファイルが実在していれば
trueを返すような関数がほしいのです。。。すみませんご教授ください。
0916デフォルトの名無しさんNGNG
すごいね。Perlスレなのに1000行きそうだね。
0917デフォルトの名無しさんNGNG
Perlのコンパイラって作れませんか?
Perl2exeみたいな偽者じゃなくて。
0918デフォルトの名無しさんNGNG
Perlcc
0919デフォルトの名無しさんNGNG
gpc
0920デフォルトの名無しさんNGNG
sub is_exists_file {
  my @path = split m|/|, shift;
  pop @path if $path[$#path] eq '';
  if ($path[0] eq '') { $path[0] = '/' }
  elsif ($path[0] !~ /^\.+$/) { unshift @path, '.' }

  my $path = shift @path;
  defined(($_) = is_exists_file_in($path, $_))
    ? ($path .= '/' . $_)
    : return
      for @path;

  return $path;
}

ところでこのコードがやってることは当然理解してるよな?
-f や -d 一発で済むところを、わざわざ重そうな処理を加えるんだ。
大文字小文字の区別をしないのがそれほど重要なことか、
もう一度考えた方がいいぞ。
0921デフォルトの名無しさんNGNG
readでファイルからバイナリデータを読み込ませたいのですが
0x19,0x1D,0x1Eが正常に認識されないみたいなのです。
printで表示した場合、

0x19 … 表示されず
0x1D,0x1E … 違う値が表示される

となります。
何故なんでしょうか?
0922デフォルトの名無しさんNGNG
違う値ってどういうのが?
0923デフォルトの名無しさんNGNG
コードをかけ
0924デフォルトの名無しさんNGNG
>>922
read(FILE,$data,2);
$num =unpack("n",$data);
print $num;

これを実行した時に
0x1A … 表示されず
0x001D … 173
0X001E … 174
と表示されてしまいます。

訂正:>>921で、"0x19 … 表示されず"と書きましたが0x1Aの間違いでした。
0925デフォルトの名無しさんNGNG
>>924
unpackの使い方がそれでは、、、結局どういうかたちで取得したいの?
文字? 文字コード?
0926kalma ◆eRZ2quxw NGNG
>>925
ネットワークバイトのshort型整数をファイルから取得したいのですが…
やり方が間違っているのでしょうか?
0927デフォルトの名無しさんNGNG
二次元配列に対してsplice関数を使用するにはどうすれば?
0928デフォルトの名無しさんNGNG
>>927
例えば、こんなこと?
$ar[0][0]="00";
$ar[0][1]="01";
$ar[1][0]="10";
$ar[1][1]="11";
$ar[2][0]="20";
$ar[2][1]="21";
splice(@ar,1,1);
for $i (0 .. $#ar) {
@tmp=$ar[$i];
for $j (0 .. $#tmp) {
print "$ar[$i][$j]\n";
}
}
0929デフォルトの名無しさんNGNG
>>924
binmode FILE;
じゃないか?
0930928NGNG
>>927
for(@ar) {
print "@$_\n";
}
でもいいよ。要するに無名配列は配列へのリファレンスってこと
わきまえてりゃどうやってもいい。
0931デフォルトの名無しさんNGNG
>>928
@tmp=$ar[$i]なんてやる必要ない。
for $j (0 .. $#{$ar[$i]}) {
ってしる。
0932デフォルトの名無しさんNGNG
>>929
binmodeは設定しています
一体何が悪いんでしょうか・・・
0933デフォルトの名無しさんNGNG
0x1Aの問題はMS-DOSのEOFコードが0x1Aだからだと判りました。
これの回避法ってあるんでしょうか?
0934デフォルトの名無しさんぺいですNGNG
tr/\x1a//d;
0935デフォルトの名無しさんNGNG
誰か、NamazuでZipファイルの中身を検索するフィルタを書いた人いないの?
gzip, bz2用はあるのに、zipのはないんだよねえ。
0936デフォルトの名無しさんNGNG

●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕
0937 ◆hMJAPH9PWA NGNG
>>933
出力用ファイルハンドル(例だとSTDOUT)もbinmode()してる?
0938デフォルトの名無しさんNGNG
多次元配列の同じ場所を何度も参照するときには、
その値をローカル変数にコピーした方が効率がいい?
それともヘタに変数を増やすとメモリを喰って効率が落ちる?

# 1
if($array[0][0][0] == 0) {

} elsif($array[0][0][0] == 1) {

} elsif($array[0][0][0] == 2) {

}

# 2
my($copy) = $array[0][0][0];
if($copy == 0) {

} elsif($copy == 1) {

} elsif($copy == 2) {

}
0939厨房NGNG
本を見ながらPerlを勉強してるのですが、
環境がUNIX?でないせいか(WinでActivePerl+httpdでやってますが)
本の通りに書いても<STDIN>で入力できません(?

上記の環境で<STDIN>を使ったスクリプトを試すにはどうしたらよいでしょうか?
0940棄教者 ◆egKIKYO7cg NGNG
>>939
MS-DOSプロンプトを起動して
C:\>perl -v
って入力してみてください。
なんか出てきましたか?
0941厨房NGNG
>>940
This is perlうんちゃら…って出てきますが…?
0942デフォルトの名無しさんNGNG
リファレンスについて質問。

sub test {
 my(@array) = (1,2,3);
 $hash{'a'} = \@array;
 return;
}

@array[0]は当然null。
$hash{'a'}->[0]は1。

なぜこうなるのかが分かりません。
0943デフォルトの名無しさんNGNG
>>942
変数名は実際の「値」に付いている「名札」に過ぎず、
「値」自身はそれを参照する「名札」が全部消えるまで
メモリに残っているから。

その例だと test の中で (1,2,3) という各「値」に @array という
「名札」を付けている。@array は my で宣言されている「名札」なので
test の中でしか使えないが、$hash{'a'} という「名札」は
グローバルな「名札」なので、test のスコープから抜けた後でも
(1,2,3) という「値」を見る為に使える。

詳しくは「ガベージコレクション (GC)」「クロージャ」
「リファレンス (参照) カウンタ」といった単語で調べて。
0944名無しさん@MeadowNGNG
>>943
>>942じゃないけど、明解レスありがと。
漏れも質問に答えてんだけど、質問者からの感謝がないのが
このスレの特徴かな。
0945棄教者 ◆egKIKYO7cg NGNG
>>941
OKです。
UNIXで勉強するPerlの本にはコマンドプロンプト云々と書いてありますが、
MS-DOSがそのコマンドプロンプトになっています。

たとえば
---data.txt----
unko
chinko
manko
-------------
という三行のファイルを用意して
---hoge.pl----
while(<STDIN>) {
 print $_;
}
-------------
という Perl スクリプトを用意して
C:\>perl hoge.pl < data.txt
してください。
これで後は厨学生程度の大脳があれば STDIN は理解できるはずです。
0946デフォルトの名無しさんNGNG
厨学生程度の大脳があればコテを使わず
WebProg板にでも誘導するんだがな
0947 ◆hG4XfSMGTg NGNG
糞コテは死ね
0948 ◆hG4XfSMGTg NGNG
固定ハンドル=低スキル
0949デフォルトの名無しさんNGNG
荒らさないで!
0950 ◆hG4XfSMGTg NGNG
次スレは立てるなよ。WebProgにでも引きこもっていてくれ。
0951デフォルトの名無しさんNGNG
次スレ立てても良いけど自称「厨房」なんてのの相手はしないで欲しい。
あと、perldoc読めば済むような話を色々解説するのもどうかな。
0952デフォルトの名無しさんNGNG
次スレを立てるのは禁止。
はい決まった。
0953デフォルトの名無しさんNGNG
糞Perlユーザの分際でスレッドなんか立てるなよ糞馬鹿
0954デフォルトの名無しさんNGNG
用事がないなら見なけりゃいいのになんでわざわざ出てきていらんこと書くのかな。
お呼びじゃないってやつですね。
0955デフォルトの名無しさんNGNG
おまえがな。ぷぷぷ
次スレは絶対に立てるなよ。荒らした上で削除依頼出すからな。
0956デフォルトの名無しさんNGNG
>>944
お礼が欲しけりゃ余所に逝け。二度と出て来るな。
0957デフォルトの名無しさんNGNG
これは次スレ絶対立ててくれという依頼ですか? プ
0958デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl
ぷぷぷ
反論したいか?反論したいんだろ?ぷぷぷ大爆笑
お前らには無理。
Perlみたいな糞言語を使う奴らは人間以下
0959デフォルトの名無しさんNGNG
逆に「次スレはいらん!」とか言ってるやつが次スレ立てそうだ(わら

ほんで日ごろの鬱憤をはらす、と。
0960デフォルトの名無しさんNGNG
娘はやらん!
0961デフォルトの名無しさんNGNG
日常生活で随分虐げられて過ごしてるんだろうな。
こんなつまらんことで人を見下したくなるっていうのは。

次スレ立たなかったら自分を保てなくなっちゃいそうだ。
誰か立ててあげれ
0962RubyustNGNG
っっっっっっっっっp
0963デフォルトの名無しさんNGNG
この板って、スレッドを立てた奴のリモートホストが見られるって知ってた?
ぷぷぷ
ばぁぁあか
死ねよ
0964デフォルトの名無しさんNGNG
WebProgに逝けば?
ム板で厨房言語のスレッドを乱立させないで欲しい。
0965デフォルトの名無しさんNGNG
そうじゃなくてくだらない話題はよその板でやってくださいと
書いたPerlのスレを立てておかないと
いつか>>1みたいなのがまたでてきちゃって元の木阿弥なのでは?
0966デフォルトの名無しさんNGNG
は?板の注意事項に「Perlのような厨房言語はWebProg板へ」と書いておけば済むことだろ。
0967デフォルトの名無しさんNGNG
ん? じゃあそうしたら? まあ、>>966にはそんなごたいそうなことは一生できないでしょうが。
0968デフォルトの名無しさんNGNG
たぶん「今荒らしてるやつが」
「検索しましたが一覧にないようなので立てました」とかいいつつ
次スレを立てると思うよ。
0969デフォルト名無しさんNGNG
1000鳥合戦ってのはなさそうでつね。
0970デフォルトの名無しさんNGNG
まぁ、しびれを切らした君みたいな厨房が立てるんだろうな。ぷ
0971デフォルトの名無しさんNGNG
この板って、スレッドを立てた奴のリモートホストが見られるって知ってた?
0972デフォルトの名無しさんNGNG
また、ruby基地外の荒しが始まったな。
無視して便利なPerlの恩恵に与ろうぜ。
0973デフォルトの名無しさんNGNG
ウメタテタ
0974デフォルトの名無しさんNGNG
イ
0975デフォルトの名無しさんNGNG
タタタ
0976デフォルトの名無しさんNGNG
イ
0977デフォルトの名無しさんNGNG
タテタメウ
0978デフォルトの名無しさんNGNG
ウメエコノミカン
0979デフォルトの名無しさんNGNG
カミノンコウメエ
0980デフォルトの名無しさんNGNG
アナグラムシテミタ
0981デフォルトの名無しさんNGNG
 ミタナアグラシテ
0982うんこ厨房NGNG
スレッド一覧になかったのでperlスレたててもいいですか?
0983デフォルトの名無しさんNGNG
ヤメテ
0984デフォルトの名無しさんNGNG
イタチガイデス
0985デフォルトの名無しさんNGNG
ウンコキタナイ
0986デフォルトの名無しさんNGNG
プロバイダにおまえのIPを突き止めてもらった。
これから住所の特定に入る。
0987デフォルトの名無しさんNGNG
プーン
0988デフォルトの名無しさんNGNG
ソロソロスパートダョ
0989デフォルトの名無しさんNGNG
ダョ
0990デフォルトの名無しさんNGNG
ダョダョ
0991デフォルトの名無しさんNGNG
ダョダョダョ
0992デフォルトの名無しさんNGNG
ダョネーダョネー
0993デフォルトの名無しさんNGNG
ナンノウタダケ
0994デフォルトの名無しさんNGNG
マァィィャ
0995デフォルトの名無しさんNGNG

マィマィ
0996RubyistNGNG
ばーぁ
0997デフォルトの名無しさんNGNG
yrdy
0998デフォルトの名無しさんNGNG
tesdt
0999ババNGNG
次スレ
http://tmp.2ch.net/test/read.cgi/sisou/1029506242/l50
1000デフォルトの名無しさんNGNG
test
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。