5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Perlについての質問箱

1 :デフォルトの名無しさん:02/04/02 17:29
全スレ見たけど、Perlのスレッドがないので一応立てます
質問したいこともあるしね、というわけでいきなり質問させてください

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

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



2 :名無しさん@Meadow:02/04/02 17:36
どこ探したんですか?「けんさく」って知ってますか?

3 :デフォルトの名無しさん:02/04/02 17:39
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/

質問の意味がわかりません。

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

5 :hiroyuko:02/04/02 19:12
>>1

しんでください

6 :デフォルトの名無しさん:02/04/02 19:13
>>1
あなたの言う質問箱って、質問するだけなのですか?
だれも答えなくてもいいんですか?
っていうか糞スレですか?

7 :デフォルトの名無しさん:02/04/02 19:15
Web プログラミング板なら Perl スレたくさんありそうだね。
確認してないけど。


8 :デフォルトの名無しさん:02/04/02 19:18
確かにどこからが引用でどこからが自分の文なのかわかりにくいな。

俺Perl知らないんだけど、その引用(らしき)文を読む限りじゃ
メタ文字=ワイルドカードみたいなもん
じゃないの?

9 :hiroyuko:02/04/02 19:19
自分のためにスレ立てやがったのかコノヤロー

10 :デフォルトの名無しさん:02/04/02 19:21
>>1
重複、1 に質問なので糞スレ度 2 に認定しよう。
おそらく、「Perl の質問スレ」 はなかったので立てたと反論するだろうが。

このスレを薦めとく。
CGIに依存しないPerlの話題一般
http://pc.2ch.net/test/read.cgi/php/991313362/

11 :デフォルトの名無しさん:02/04/02 19:23
>>1と糞スレのハーモニー

12 :デフォルトの名無しさん:02/04/02 19:46
ここの板で Perl スレといえば
Perlは結構使えるっぽいけどどうよ?
http://pc.2ch.net/test/read.cgi/tech/991994996/l50
だろ。

全スレ見たってホントですか?>>1

13 :デフォルトの名無しさん:02/04/02 19:48
>>1は嘘をついている!

14 :名無しさん@Emacs:02/04/02 20:18
>>8
このスレとは直接関係ないけどプログラム板に来るような人なら(perlのに限
らず)正規表現はひととおり知っておいた方が便利だよ。

15 :デフォルトの名無しさん:02/04/02 20:27
未だに答えてもらえず悶える>>1を想像してみる。

16 :デフォルトの名無しさん:02/04/02 20:30
Perl.NETが出るって本当ですか?

17 :デフォルトの名無しさん:02/04/02 20:37
ageる前に検索すれ

18 :デフォルトの名無しさん:02/04/02 21:10
s/正規表現/を語ろう/e
http://pc.2ch.net/test/read.cgi/tech/1015398955/

19 :hiro ◆hiroHsTw :02/04/02 22:05
「俺は一歩先行くインターネット
CGIプログラミング入門」ってやつ読んでる
内容は古いけどわかりやすいです

20 :デフォルトの名無しさん:02/04/02 23:17
ム板にもPerlスレがかなりあったんだな.
ほとんど糞だが(wara

21 :デフォルトの名無しさん:02/04/03 10:21
パールライスはうまいなぁ。

22 ::02/04/12 11:57
一通り目を通したつもりですが、スレを見落としたかもしれませんね。
でも、これは自分専用ではなくて他の人が使っても構いません。


23 :デフォルトの名無しさん:02/04/12 11:58
ageないでください。誰も使いませんから。

24 :デフォルトの名無しさん:02/04/12 11:59
うるせーハゲ

25 :学者:02/04/12 12:37
賢い恐竜が立てたスレというのはここですか?

26 :ごろさん:02/04/13 20:42
正規表現で、もしも「あいう」という文字列を2回マッチした場合
「2」と表示させたいのですが、どうすればいいのですか?

27 :デフォルトの名無しさん:02/04/13 20:49
検索して調べればいいです。

28 :デフォルトの名無しさん:02/04/14 00:11
$_ = $string;
@Arr = m/あいう/g;
$num = @Arr;

で、いいんじゃねーの?

29 :デフォルトの名無しさん:02/04/21 07:54
>>26はマルチ
http://pc.2ch.net/test/read.cgi/tech/1018698417/

30 :初心者:02/05/11 18:48
windows xp なんですが、perlの入れ方がよくわかりません。
activeperlダウンロードしてインストールしたのに、
うまく入ってないみたい・・・。
どなたか、xpですでにperl入れたよって方、
もしくは入れ方わかるよって方、
簡単にでいいのでやり方を教えてもらえませんか???m(__)m

31 :このスレsageてくれ:02/05/11 18:51
コマンドプロンプトで
>perl -v
って打ってみろ。

32 :初心者:02/05/11 18:53
>31
どうもありがとうございました!

33 :デフォルトの名無しさん:02/05/11 19:11
>>32
それで解決したんですか?(汗

34 :デフォルトの名無しさん:02/05/13 10:46
Windows2000にActivePerlのインストールした時に
インストール先を間違えたので、一端アンインストールしたいのですが、
フォルダを削除する以外に、どこかにpathが書かれていたりしますか?
フォルダ削除だけで良いものか、教えて下さい。



35 :デフォルトの名無しさん:02/05/13 10:46
>>34
素人が調子に乗るな。

36 :デフォルトの名無しさん:02/05/13 10:50
コントロールパネルの「アプリケーションの追加と削除」で消したほうが良いんじゃない?

後は環境変数が追加されてるかな。

37 :34:02/05/13 11:14
documentationにはコントロールパネルの add/remove から削除しろと書いてあったのですが、
追加と削除にActivePealが無かったので焦りました。
AS package をインストールしていたようで、
ActivePerl 5.6.1 Windows MSI 版を上書きインストールして、
そこから削除する事ができました。 (多分 ^^;

>>36さん
どうもありがとうございました。


38 :デフォルトの名無しさん:02/05/13 12:25
s/hoge/piyo/ge;
これは、どう置換されるのですか?

39 :デフォルトの名無しさん:02/05/13 12:29
うーむ、e がついてるけど piyo だから、そのまま置換されるだけ
じゃないかな?


40 :デフォルトの名無しさん:02/05/13 12:43
>>38
最後のeの部分がよくわからないのです。
ふだんPerlは使っていないんですけど、記事の中で使われていたので、どういう意味なのかと。

41 :デフォルトの名無しさん:02/05/13 12:54
>34
「アプリケーションの追加と削除」でアンインストールする。

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

それでもダメならOSから入れなおしてちょ。


42 :34:02/05/13 14:01
>>41
アンインストール無しのバージョンを入れてしまったので、
アンインストール有りのモノを同じディレクトリに上書きインストールして
その後、「アプリケーションの追加と削除」からアンインストールしました。

アドバイスありがとうございます。

43 :とんちんかん:02/05/20 07:08
Perl を使ってあるWin2kのログ ファイルから必要な情報を別のテキスト ファイルに抽出
してるんですが、ちょっとした理由でこのログ ファイルが Unicode 形式になってしまいまいた。
でこのスクリプトで読み込んでみたら案の定白紙のテキスト ファイルを作ってくれました。
Perl で UCS2 のファイルの読み書きってできるんでしょうか?
Jcode.pmとかって使うんですか?
教えて君ですみません。

44 :デフォルトの名無しさん:02/05/20 07:47
KENTのCGI改造し放題

45 :デフォルトの名無しさん:02/05/20 08:17
>>44
ねーストしてあのスクリプトは問題。

46 :デフォルトの名無しさん:02/05/20 10:28
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ならいいと思うのですが・・・

うまくいきません。
どなたかアドバイスを・・

47 :名無しさん@Emacs:02/05/20 10:46
単純に 128 以上かどうか比べればいいんじゃないの。

48 :デフォルトの名無しさん:02/05/20 11:18
普通にビット演算すりゃいいだろ。
つーかpackの使い方分かってませんね。
それ以前に@kanaの中身をしらべるっつーデバッグの基本中の基本もしてませんね。

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



49 :デフォルトの名無しさん:02/05/20 11:21
以下はこちらでどうぞ

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

__END__

50 :質問:02/05/20 20:14
文字列を可逆的に暗号化したいんだけど、
何かいいサブルーチンはないもんかね?

51 :デフォルトの名無しさん:02/05/20 20:16
>>50
適当な値とxor取る。

52 :質問:02/05/20 20:21
文字列を可逆的に暗号化したいんだけど、
何かいいサブルーチンはないもんかね?

53 :質問:02/05/20 20:22
ありがとう。

54 :デフォルトの名無しさん:02/05/20 20:35
正規表現のマッチした部分が入る変数の名前ってなんだっけ?
$@だっけ?

55 :デフォルトの名無しさん:02/05/20 21:13
Perlの万能変数ってどうよ?

56 :デフォルトの名無しさん:02/05/20 21:35
どうよって?

57 :1:02/05/20 22:18
あーウゼェウゼェ
本当は折れのためにだけ立てたスレだったんだが、途中でそれがバレそうになって
うやむやになったけど ほかの奴まで質問してきやがって
 目論見は敗れた このスレは閉鎖する サラバ!(もうあうこともないだろう)


58 :棄教者 ◆witdLTi2 :02/05/20 22:33
>>54
$1 $2 $3 $4 ... $9
>>55
型グロブのこと? いいんじゃないの?

59 :奈々氏:02/05/21 12:42
質問です
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したのはソースを見てもらうためです。

60 :そんじゃ:02/05/21 13:19
sendmail は使えるのか、と。


61 :奈々氏:02/05/21 13:45
>60
使えます
確認しました

62 :デフォルトの名無しさん:02/05/21 14:01
-c では syntax OK だな。
パーミッションは?


63 :デフォルトの名無しさん:02/05/21 14:07
>>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

ではないのか、が気になった。
「パールのパス、・・・・・・・・・は確認しました 」
と、書いてあっても、やっぱり気になる。

64 :デフォルトの名無しさん:02/05/21 20:07
PerlUnitの使い方について知っている方はぜひ教えてください

65 :質問:02/05/22 17:32
全角半角の混じった文字列を、
ブラウザからPOSTやGETで送信されるときと
まったく同じ状態にURLエンコードしたいんだけど、
s/(\W)/'%'.unpack("H2", $1)/ego;を使ったら
%A5%ADじゃなくて%a5%adの様に小文字になってしまうし、
あと半角文字もエンコードされてしまう。
おまえら何かいい方法はありませんか?

66 :デフォルトの名無しさん:02/05/22 17:37
>>59はパーミッションを間違っていたことに気付いて帰ったらしい
挨拶くらいしていけ

67 :デフォルトの名無しさん:02/05/22 17:45
>>65
別に小文字も大文字も意味は同じじゃねーか、ヴォケ。
いやなら大文字にしろ。
半角文字がエンコードされるなんてあたりめーだろ、氏ね。
仕様書読め、糞
uc EXPR
 EXPR を大文字に変換したものを返します。

68 :shige:02/05/22 17:47
ぷっ
なんと程度の低いスレッドだ。

69 :デフォルトの名無しさん:02/05/22 17:52
shige はすっこんでろ。

70 :shige:02/05/22 17:55
なんかいえよ。こら


71 :shige:02/05/22 17:57
生まれてきてごめんなさい
生まれてきてごめんなさい
生まれてきてごめんなさい
生まれてきてごめんなさい


72 :shige:02/05/22 17:58
shige って共通コテハンってほんとですか?

73 :デフォルトの名無しさん:02/05/22 18:02
Rubyを貶すときの共通コテハンです

74 :デフォルトの名無しさん:02/05/22 19:01
関係ないけどさ、CGI::Liteってつかってる?
url_encode() で改行文字とかをエンコードすると
%0a じゃなくて %a に
なって、それをデコードできないという・・。

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




75 :65:02/05/22 20:05
>>67
レスどうも。そうか、ucってすればいいのか。
とりあえず、「意味」が欲しかったわけではなく、
「形」が欲しかったので。

ただ、ブラウザのフォームから送信する場合は、
半角は特別な記号以外はエンコードされないはずだが。
そっちは未解決。

76 :デフォルトの名無しさん:02/05/22 20:11
>>65
$noenc_char = '[^A-Za-z0-9.,エンコードシタクナイモジヲスキナダケドウゾ]';
$str =~ s/($noenc_char)/uc unpack 'H2', $1/ego;


77 :65:02/05/22 20:15
>>67
スマソ、今変換してみたら半角はエンコードされなかった。
まったく
「半角文字がエンコードされるなんてあたりめーだろ、氏ね。 」
だなんて、初心者だと思ってからかうなよ(藁

78 :65:02/05/22 20:16
>>76
あ、こりゃ便利だ。
今度使わせてもらう。

79 :デフォルトの名無しさん:02/05/23 11:17
perl上でz拡張子ファイルをuncompressしたいのですが
やり方を教えてもらえないでしょうか。。。
こういうのに使えるPPMとかってありますか?


80 :デフォルトの名無しさん:02/05/23 11:19
gzipを起動させれば?

81 :デフォルトの名無しさん:02/05/23 11:24
>>79
system関数で。

82 :デフォルトの名無しさん:02/05/23 17:53
拡張子はzね。で、肝心のフォーマットは?

83 :デフォルトの名無しさん:02/05/23 18:28
perl使ってメールを送ることってできますか?

84 :デフォルトの名無しさん:02/05/23 18:31
できますよ。

85 :デフォルトの名無しさん:02/05/23 18:33
perl使ってうんこを送ることってできますか?

86 :デフォルトの名無しさん:02/05/23 18:34
shige はすっこんでろ!!

87 :デフォルトの名無しさん:02/05/23 18:41
>>86
ワロタ

88 :79:02/05/23 21:18
79です。

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

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





89 :デフォルトの名無しさん:02/05/23 21:24
そんな本は窓から投げ捨てとけ。

90 :perlでgzipをダイレクトに扱うには:02/05/24 01:32
テキストをgzipで圧縮してあるファイル(*****.gz)をperlでダイレクトに
アクセスして圧縮解いて文字列処理することってできるんですかね。
やはり一度どこかのテンポラリーに圧縮解凍してからそれを読み込まないと
だめですか?
簡単な方法あったら知りたいのでお願いです。

91 :デフォルトの名無しさん:02/05/24 09:47
>>90
Compress::Zlib

92 :perlでgzipをダイレクトに扱うには:02/05/25 10:56
>91

それ使うとfopenでダイレクトにgzファイルをテキストファイルみたい
に扱うことができるの?
どっか使い方のサンプルとか出てるサイトないですかね?

93 :デフォルトの名無しさん:02/05/25 11:33
>>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

94 :デフォルトの名無しさん:02/05/30 17:14
りんごを英語で何て言うか尋ねるスクリプトを書いたのですが、正解でも不正解でも正解時のコメントが表示されてしまいます。どこがまちがってるか教えていただけないでしょうか?

print "りんごは英語で?: ";
$answer = <STDIN>;
chomp($answer);
if ($answer == apple) {print "ご名答!!\n";}
else {print "ごめんなさいはずれです。\n";}


95 :デフォルトの名無しさん:02/05/30 17:24
Unquoted string "apple" may clash with future reserved word

perl -wc hogehoge.pl ってやると文法チェックしてくれるよ。

96 :94:02/05/30 17:29
ありがとうございました。

97 :94:02/05/30 17:41
すみません・・・やっぱできませんでした。
直した後チェックしてみたのですが、文法は間違ってなさそうです。
どうしてうまくいかないのでしょうか?

98 :デフォルトの名無しさん:02/05/30 17:44
文字列の比較演算子は、
eq(==), gt(>), ge(>=), lt(<), le(<=), cmp(<=>)
になっております。お間違いのないようよろしくお願い致します。

99 :94:02/05/30 17:49
できました!度々すみませんでした。
なるほど文字列は数列と違うのですね。ありがとうございました。

100 :100:02/05/30 18:34
100!!!

101 :棄教者 ◆witdLTi2 :02/05/30 18:35
>>98-99
$answer == "apple" とやると、

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

試しに$answerに空文字列または0を入れてみて下さい。
つぎに0.0を入れてみて下さい。結果がどうなるかを報告して下さい。

102 :94:02/05/30 20:41
>>101
0を入れてみた場合は、0または文字列を入れた場合、正解。
それ以外の数字を入れると不正解となりました。
0.0を入れた場合も空文字列の場合も同様の結果となりました。


103 :デフォルトの名無しさん:02/05/30 22:38
>>101
> $answer に入っている文字は空文字列じゃないので「真」を返します。
> "apple"は空文字列じゃないので真を返します。
> 比較演算子 == は
> 左辺の返り血である「真」と右辺の返り血である「真」を比較して
> 真を返します。そういうわけです。

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

比較演算子 == は左右の値を数値として評価、比較する演算子です。
つまり、$answer に入っている文字は数値として評価します。
しかし、おそらく数値としては意味のない値なので「0」を返します。
"apple"も数値として評価されますが、数値ではないのでで「0」を返します。
左辺の値である「0」と右辺の値である「0」を比較して
真を返します。そういうわけです。
文字列として比較するには>>98に示してあるように "eq" 演算子を使用してください。

104 :デフォルトの名無しさん:02/05/30 22:50
>>棄教者
あたなの知ったかぶりは初心者にとって非常に迷惑です。
誤った情報を与えるよりはこちらに誘導してくださるようお願いします。

WebProg板 【Perl】初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/


105 :デフォルトの名無しさん:02/05/30 22:50
シパーイ
s/あたな/あなた/g

106 :デフォルトの名無しさん:02/05/31 02:36
http://search.cpan.org/
サーチできない。
パーミッションがないみたいだ。
何レベルになったらアクセスできるようになるですか

107 :デフォルトの名無しさん:02/05/31 02:42
サーチできるよ。

108 :デフォルトの名無しさん:02/05/31 02:47
Forbidden
You don't have permission to access /search on this server.


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

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

まじできない。
悪いことしてないのに。
やっぱレベル低いんだ、経験値稼ぎにいこっと。

109 :107:02/05/31 02:49
>>108
何でだろう。まあ、がんばれ(w

110 :デフォルトの名無しさん:02/05/31 02:55
ほかのひとにも頼んでアクセスしてもらったけど
やっぱりできるみたい。
俺だけっぽい、search.cpan.orgが返してるし
なんで俺だけ、なんで俺だけ、うあーんうあーん。

111 :デフォルトの名無しさん:02/06/01 05:11
Tipsがたくさんあるとこ教えて

112 :名無しさん@Emacs:02/06/01 05:47
http://www.google.com/search?q=perl+tips
たくさんあるよ

113 :デフォルトの名無しさん:02/06/01 10:31
PerlでDB作りたいのですが
サンプルソースコードなどあったら
おしえてください

114 :デフォルトの名無しさん:02/06/01 10:43
>>113
腐るほどあると思うが。検索すれば。


115 :デフォルトの名無しさん:02/06/01 12:23
>>113
ほらよ。
http://search.cpan.org/search?dist=DBI
http://search.cpan.org/search?mode=module&query=DBD
商用/フリーDBのクライアントや多様なDBエンジンなど、選り取りみどりですぜ。

116 :デフォルトの名無しさん:02/06/03 22:08
>>115
113 は DBMS を Perl で作りたいんじゃないか?

ナンツテ

117 :デフォルトの名無しさん:02/06/03 23:58
タブ区切りのCSVファイルを読み込むと
全行の最後のレコードに半角スペースと改行がはいるんですが
これを回避する方法ってありますか?

118 :デフォルトの名無しさん:02/06/04 00:06
>>117
chomp

119 :117:02/06/04 00:23
chompしても消えないんです。

120 :デフォルトの名無しさん:02/06/04 10:50
タブ区切りの CSV ファイル?
全行の最後のレコード?

121 :デフォルトの名無しさん:02/06/04 12:54
chop

122 :デフォルトの名無しさん:02/06/04 13:17
print "@table";
とかやってるとしたらアホ

123 :デフォルトの名無しさん:02/06/04 18:14
おいおまえら
ftp://hayabusa.ics.nara-wu.ac.jp/pub/nide/dosutil/sos111.tgz
これ使ってますか?

124 :デフォルトの名無しさん:02/06/04 18:31
>>123
1年程前から使ってます。


125 :117:02/06/04 23:04
>>122
詳しく教えてもらってもいいでしょうか

126 :デフォルトの名無しさん:02/06/05 09:48
>>125
手持ちの参考書読め

127 :デフォルトの名無しさん:02/06/06 01:44
gzipで圧縮されたテキスト読む事できたのかしらん。

128 :デフォルトの名無しさん:02/06/06 04:17
>>127
open(FH,"|zcat $filename");
print <FH>;
とか?

129 :デフォルトの名無しさん:02/06/06 10:30
>>127
http://search.cpan.org/search?dist=IO-Zlib
http://search.cpan.org/search?dist=Compress-Zlib

130 :デフォルトの名無しさん:02/06/06 11:24
>>129
127 がやりたいんじゃないと思うんだけど。
90 くらいで質問したやつが、できたのかどうか書き込んだだけだろ。



131 :129:02/06/06 19:04
>>130
そういえば…と思って見返すと>>93書いたのも俺だという罠

132 :デフォルトの名無しさん:02/06/06 20:08
Compress-Zlibをインストールしてみた。
使い方が分かりませんでした。
gzipで圧縮したテキスト処理について教えてくらさい。

133 :デフォルトの名無しさん:02/06/06 20:10
ポケコン用のPerlはどこでダウンロードできますか?
機種はSHARP PC-G850Sです。

134 :デフォルトの名無しさん:02/06/06 21:12
知るか。
自分でさがせ。

135 :デフォルトの名無しさん:02/06/06 21:20
>>132
use Compress::Zlib qw(compress decompress);

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

>>133
Cコンパイラがあれば動くかもね。

136 :132:02/06/06 23:01
>>135
神さま、ありがとうごぜます。
あなたのおかげで幸せになれそうです♪

137 :132:02/06/06 23:45
>>135
神様駄目っす。
decompressだとエラーでます。
uncompress だと思うんです…。

$plaintext = uncompress($gz);

した後、

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

と通常のファイル読みだすようにしちゃ逝かんのでしょうか?

138 :デフォルトの名無しさん:02/06/07 11:06
>>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
}

139 :デフォルトの名無しさん:02/06/15 13:36
GDBM を windows 環境で使いたいのですが可能でしょうか

140 :デフォルトの名無しさん:02/06/15 16:52
Cのプログラムだと

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

って書くと単純に下位32ビットだけ取り出せますが
Perlではどうして書いたらいいでしょうか?


141 :デフォルトの名無しさん:02/06/15 16:56
>>140
$seed *= 1103515245;
$seed &= 0xFFFFFFFF;
でどう?

142 :Solaris:02/06/17 22:46
はじめての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;
}
}


143 :Solaris:02/06/17 22:49
続き
でも、実行するとこんなエラーがでます。
原因わからないんです。どなたか教えて頂けないでしょうか??

# 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
とだけ書いています。



144 :Solaris:02/06/17 22:50
TABが見えてなくて、見づらい・・・
すいません、逝ってきます。

145 :デフォルトの名無しさん:02/06/18 02:05
$somename =~ s/\w.*//;
(´・ω・`)ショボーン

146 :Solaris:02/06/18 23:52
>>145
そこ、なんかおかしいのですか??

147 :デフォルトの名無しさん:02/06/19 01:40
>>146
$somename =~ s/\w.*//;
の前後に
print "Before : $somename\n";
print "After : $somename\n";
とでもつけてみたら?

それから
if ($name eq "~ /^akira\b/i"){

if ($name =~ /^akira\b/i){
が意図するところだと思うが。


148 :ト−シロ:02/06/19 13:11
自分のやり方なのであってるかわかりませんが
while(<FH>)
if (/マッチさせるもの/)
でマッチングに成功したんですがこの方法だとどうやってマッチ行の文字列
を書き換えていいとおもいますか?
素人なんでできればわかりやすくお願いします。

149 :デフォルトの名無しさん:02/06/20 11:21
> この方法だとどうやってマッチ行の文字列を書き換えていいとおもいますか?
ゴメン、意味がわからない。

150 :デフォルトの名無しさん:02/06/20 20:28
正規表現について質問させてください。
次のような正規表現をマッチさせることができません。
文字コードをEUCにしても駄目でした。
?をとればマッチするのでなんか文字コードの問題かなあとか思ったのですが。
どうやって回避すればいいか教えてください。

#!/usr/bin/perl

$a = "10000あ";

if($a =~ /\d+?あ/){
print "ok\n";
}

151 :デフォルトの名無しさん:02/06/20 21:16
コピペで "ok" 出るよ。
WindowsXP + ActivePerl


152 :150:02/06/20 22:42
すいません当方の環境、Linux + perl 5.6.1です・・・。

153 :A:02/06/20 22:57
\d+?だと、確か最小のマッチになるのではないでしょうか?
最初の"1"にマッチして、その後"あ"がくるか判定する。

"1000あ"もしくは"あ"という意味で、
/(\d+)?あ/を意図していたのでしょうか?


154 :Solaris:02/06/20 23:12
>>147
レスありがとです。
とりあえず、やってみます。
でも、eq は文字列みて、= は数値みるのかと思ってたんですが・・・

155 :デフォルトの名無しさん:02/06/20 23:21
>>154
= と =~ は違うよ。

156 :150:02/06/21 01:05
>153
最小一致とはそういうことではないと思います。
すこし意図がわかりづらかったと思いますが
例えば「あいうあ」と表示させる意図で

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

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

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

?と2バイト文字が重なるとどう問題なんでしょう??

157 :デフォルトの名無しさん:02/06/21 02:10
>>156
だから最小マッチだと・・・。


158 :デフォルトの名無しさん:02/06/21 05:38
>とかいてもマッチしないのです。
マッチしてるだろ。さっきからお前は何をやってんだ。

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

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

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



159 :デフォルトの名無しさん:02/06/25 09:48
>148

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

$_ =~ s/foo/bar/;

とやっている人を見かけるが、デフォルトで$_を置き換えるので左辺はい
らない。まぁあなたはif(//)を書いているので分かってるな。


160 :デフォルトの名無しさん:02/06/25 20:12
IE6ってcookie自ら設定しないと喰わない(記録しない)ようになったよね?
で、そういう風に設定しても、プログラムの関係上全く喰わなくなるなんてあるんすかね?

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

どういうこっちゃ?

161 :デフォルトの名無しさん:02/06/25 20:12
IE6ってcookie自ら設定しないと喰わない(記録しない)ようになったよね?
で、そういう風に設定しても、プログラムの関係上全く喰わなくなるなんてあるんすかね?

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

どういうこっちゃ?

162 :デフォルトの名無しさん:02/06/25 21:34
>>161

プライバシ・ポリシーとかいうのが
関係しているのでは?

163 :デフォルトの名無しさん:02/06/26 19:09
pTk に関する板がなかったので ここで質問します。

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

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

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

やりたいことは カーソル、マウスで適当に移動して過去履歴を再利用可能な
計算機が作りたいのです。

164 :デフォルトの名無しさん:02/06/26 19:24
Perl/Tkと言えば、これなんかすごいよな・・・

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

開発スレ
http://pc.2ch.net/test/read.cgi/php/991966646/

165 :デフォルトの名無しさん:02/06/26 19:51
perlのモジュールで、vmstat/netstat(ツーカ /proc カ?)で取得できる
情報を取得するモジュールってあるでしょうか?

また、モジュール一覧(http://search.cpan.org/ ここ)についての日本語説明のHPってあるでしようか?


166 :デフォルトの名無しさん:02/06/26 20:58
find_msgサブルーチンで、$tgtid 変数の中身が-1だったら0でreturnする

意味はわかるのですが、どうかいていいのかわかりません。
教えて下さい。

167 :名無しさん@カラアゲうまうま:02/06/26 21:00
-1じゃなかったら?

168 :166:02/06/26 22:35
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;

}


169 :名無しさん@カラアゲうまうま:02/06/26 23:13
おまえ、どうすれば166から168が想像できると思う?

170 :名無しさん@カラアゲうまうま:02/06/26 23:17
つーかさ、それほんとに0でreturnでいいの?
見付からなかったら-1を返したいように思えるんだけど、
$tgtidが-1だったら最初に見付かったことにしちゃっていいのか?

171 :166:02/06/26 23:20
いや、まったく言ってる意味がワカンナインですけど。

だからおしえてほしい.....

172 :デフォルトの名無しさん:02/06/26 23:25
>>166
…宿題か何かか?

173 : :02/06/26 23:28
>>162
あのxmlで書くとかいう、プライバシーポリシーのことか?

174 :名無しさん@カラアゲうまうま:02/06/26 23:32
>>171
じゃ>>166のコードの意味は分かってんの?

175 :166:02/06/26 23:36
まったくわからない。なんにも。

176 : :02/06/27 00:01
>>166

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

これでいいはずだよ。
がんばってね!

177 :デフォルトの名無しさん:02/06/27 01:09
>>176
sub find_msg{
  print "(゚Д゚)ハァ?" while(1);
  return -1;
}

178 :名無しさん@カラアゲうまうま:02/06/27 03:38
>>175
>>174>>168の書き間違いだったんだが、こりゃほんとに>>166の意味も分かってないんだろな。

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

return 0 if $tgtid == -1;

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

もうちょっと基本的なところから勉強し直せ。日本語も含めて。


179 :デフォルトの名無しさん:02/06/27 09:41
>>178
あなたやさしいね。

180 :166:02/06/27 12:33
>>178
ありがとう。
わからないけど。

181 :デフォルトの名無しさん:02/06/27 13:18
配列の配列ってどうやって作るんですか?
プログラミングPerlとか読んだら、単配列のデータを ':' で区切って2重配列代わりに
してましたがそれじゃあんまりなので...

182 :デフォルトの名無しさん:02/06/27 13:28
>>181

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

ていうか、気にせず $a[10][2] = 'hoge' とかできるわけだけど。


183 :デフォルトの名無しさん:02/06/27 14:19
>>165

オレは対象のマシンが多いから直接取らないで、各マシンにucd-snmp入れて、Net::SNMPでとってきてるよ。

184 :デフォルトの名無しさん:02/06/27 16:59
>>プログラミングPerlとか読んだら、単配列のデータを ':' で区切って2重配列代わりに してました

もしかしてプログラミングPerl第一版だったりしますか?

185 :名無しさん@カラアゲうまうま:02/06/27 19:42
そういや、ラクダ本の表紙の色って変わったんだよな。

186 :trrh:02/06/27 22:18
while (<file2>){
$file2++;
}
close(file2);

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


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

上記に文を短縮できますか?

187 :デフォルトの名無しさん:02/06/27 22:22
>>186
ゴメン、あなたの日本語が分からない。


188 :デフォルトの名無しさん:02/06/28 00:39
>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();
}

---

189 :みよ:02/06/28 00:47
初心者です.教えていただけませんか?
perlでcgiを書いていて,
system("touch xxx.txt");
としてwebから実行してもxxx.txtが作られません...
どうしてでしょう?

190 :デフォルトの名無しさん:02/06/28 00:49
file*の部分をfactor outしたいということなんでしょう

191 :名無しさん@カラアゲうまうま:02/06/28 00:54
>>189
ありそうなのはカレントディレクトリに書き込めないとか。

192 :デフォルトの名無しさん:02/06/28 01:08
>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;


193 :名無しさん@カラアゲうまうま:02/06/28 01:28
for $i (2..4) {
eval "open(FH,'file$i') or die \$!; map \$file$i++, <FH>; close FH";
}


194 :_gunzip:02/06/28 01:36
>>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";
}
--------------------

195 :デフォルトの名無しさん:02/06/28 01:44
>>189

system("/bin/touch xxx.txt"); としてみる、ってのは
関係ないかな。


196 :デフォルトの名無しさん:02/06/28 01:44
>> 1

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



197 :みよ:02/06/28 02:05
>>195
絶対パスで書いてもできませんでした.
perl xxx.cgi での
system("touch" xxx.txt)は
ちゃんとxxx.txtを作ってくれます.
webにアクセスするたびに新しいファイルを
作成することはできないのでしょうか?

198 :名無しさん@カラアゲうまうま:02/06/28 02:08
open(F,">xxx.txt") or die $!;
だとなんか出るか?

199 :デフォルトの名無しさん:02/06/28 02:15
> 194 ありがと。

  しかし残念ながら要求を満たさないのです。欲しいのはリターン
キーを叩いた時に実際にカーソルのあった位置。例ではカーソルキーで
移動後リターンキーを叩いても なぜか文末を示してしまふ。。。 

200 :デフォルトの名無しさん:02/06/28 02:24
>>197
そこのディレクトリを他人でも書けるようにするとうまくいくとかいう話のような
気がするけどどうかな。


201 :みよ:02/06/28 02:35
>>191
おっしゃられるとおりでした.(汗)
ありがとうございます.
ところで,system("touch ../a/b/xxx.txt")としたら
ファイル作られるのですが,中が空っぽになっています.
カレントディレクトリだときちんと作られるのですが・・・.

202 :名無しさん@カラアゲうまうま:02/06/28 02:47
touchはファイルの更新時刻を変更するコマンドで、
存在しなければ空のファイルを作る。

203 :_gunzip:02/06/28 03:10
>>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();
---------------------------------------


204 :みよ:02/06/28 03:41
>>202
あ,そうですね.説明が足りませんでした.
空のファイルを作成した後,
------------------------
open(XXX, xxx.txt);
print XXX "yyy\n";
close(XXX);
------------------------
とするのですが,yyy\nがxxx.txtに書き込まれません.


205 :デフォルトの名無しさん:02/06/28 03:43
書き込み用に open してない、とかじゃねえだろうな。

206 :デフォルトの名無しさん:02/06/28 08:48
たとえばtelnetで空のファイルを作れば所有者自分・他人は書けない
ファイルになるでしょうね。

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

その空のファイルのパーミッションはどうなっていますか?


207 :名無しさん@カラアゲうまうま:02/06/28 09:10
>>204
書き込むんだったらtouchなんかいらんだろが。

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

もうちょっとまとめて&省略せずに書け。めんどくせー。

208 :デフォルトの名無しさん:02/06/28 09:33
ようするに>>189はファイルシステムやコマンド、およびPerlを全く理解していなかったと。

…まずは適当な本を読んで最低限の知識を身に付けてから質問しろや。

209 :デフォルトの名無しさん:02/06/28 13:50
> 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 する前の座標を取るにはデフォルトバインディングの順番を変えればいい
のでは? と思ったけれど うまくいかず。。。

210 :デフォルトの名無しさん:02/06/29 13:45
perlで「あ」を文字コード(16進)に変換する方法を教えてください。

例:

$test.pl あ

82a0

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

みたいなことをしたいです。

211 :デフォルトの名無しさん:02/06/29 14:05
>>210
1バイト目 + 256 + 2バイト目

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

p.s.単発質問にかんしては、常連の皆様にお詫びいたしますm(_ _)m

213 :japh ◆J.5V8ta6 :02/06/29 16:45
>>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__
チト長すぎるね。スマソ。


214 :デフォルトの名無しさん:02/06/29 16:51
>>212
これはあなたですか?
http://pc.2ch.net/test/read.cgi/tech/1025336220/l50

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

どちらにしろ単発質問スレを立てるなといわれている理由を考えてから出直して来てください。

215 :japh ◆J.5V8ta6 :02/06/29 16:54
うをぃ。p.s.の意味がワカラソ…と思ったらそういうことか!
2chにかぎらず、コミュニティに入り込むなら基本的なルールは身につけてからにしてくれよ…。

216 :新米:02/06/29 16:56
いや、だから、あれは偽者ですって(笑)
メアドにsageって入れたら、確か一覧の上にのぼらないんでしたっけ?
今度からそうやって書き込んでみます。

217 :デフォルトの名無しさん:02/06/29 17:00
はやく削除依頼出してこいよー
スレ削除依頼スレ立ってなかったら立てていいから

218 :デフォルトの名無しさん:02/06/29 17:05
>>216
そういうことならとりあえず自分の立てた単発質問スレの削除以来だして、
その削除依頼の URL を引用するといいかと。
ついでに >>214 のスレの削除依頼も出しておくと好印象。


219 :デフォルトの名無しさん:02/06/29 18:35
perlからcの関数(*.aとかlibの)を使用する方法を教えてください。


220 :デフォルトの名無しさん:02/06/29 21:20
>>219
普通はXSでCのライブラリを呼び出すPerlモジュールを自作します。
perldoc perlxstutでチュートリアルが読めます。
お手軽にCライブラリを呼びたいなら
C::DynaLibなど(WindowsならWin::API?)を使う方法もあるようだけど
そっちは触ったことがないのでよくわかりませぬ。

221 :デフォルトの名無しさん :02/06/30 20:54
うけとった文字列をSJISにエンコードするのはどうやるんでしたっけ?
すみませんがおしえてください。

222 :デフォルトの名無しさん:02/06/30 20:56
>>221
この場合デコードでは?

223 :デフォルトの名無しさん:02/06/30 21:18
ただの変換だろ

224 :デフォルトの名無しさん:02/06/30 22:41
jcode::convert(\hoge, 'sjis')

225 :デフォルトの名無しさん:02/07/01 14:55
>>220

最近の*普通*は「Inlineを使う」だとおもうぞ。

226 :220:02/07/01 15:54
>>225
Inlineてなんじゃろ?つーことでInline.pmを取ってきてみました。
うわー。なにこれー。めっちゃ便利ー。
でもC++の構文が使えないの不便かも…と思ったらInline::CPPがあった。
Inline::AwkとかInline::BASICなんてのもあるのね。落としてないけど。

227 :デフォルトの名無しさん:02/07/01 20:42
>>225
monaloveハケーン

228 :デフォルトの名無しさん:02/07/01 20:58
perlってcursesライブラリは使えるのでしょうか?簡単なゲームできますか?

229 :デフォルトの名無しさん:02/07/01 21:04
>>228 http://pc.2ch.net/test/read.cgi/php/991313362/266


230 :デフォルトの名無しさん:02/07/01 21:11
>>228
いってよし。

231 :228:02/07/01 21:20
おお、ありがとうございます。でも今W3M使ってるからコピペできないや。てへへ

232 :デフォルトの名無しさん:02/07/02 19:58
Win2kでActivePerlを使っているのですが
長くかかる処理をしている間にあるキーを押すと途中で別の
サブルーチンに行くようにしたいのですが可能でしょうか?
もし、方法があればヒントだけでもよろしくお願いします。

233 :228:02/07/02 20:14
curses.pmというのはどこから持って来るのですか?自分でコンパイルするのですか?

234 :名無しさん@カラアゲうまうま:02/07/02 20:19
>>232
「あるキー」ってのがCtrl-Cでよければこうかな。

sub handler
{
...
}
$SIG{'INT'} = \&handler


235 :232:02/07/02 22:31
>>234
その方法でうまくいきました!!!
どうもありがとうございました。m(_ _)m

236 :デフォルトの名無しさん:02/07/03 20:08
すみません!マジ教えてください!!
$rand = int(rand($kazu));
のようにして得られた$randの乱数値を別のサブルーチンに送るにはどうすれば良いのでしょうか?
ネタじゃなくて本気です。超初心者でごめんなさい...

237 :マジレススマソ:02/07/03 20:10
&hoge($rand);

sub hoge{
 $foo=shift;
 print "$foo";
}

238 :デフォルトの名無しさん:02/07/03 20:41
>>237

 my $foo = shift;

とかしないの?

239 :デフォルトの名無しさん:02/07/03 21:39
しないの。

240 :237:02/07/03 21:53
>>238
もっとも簡単な例を挙げたまでですが、何か?

241 :238:02/07/03 22:08
いや、別に。


242 :デフォルトの名無しさん:02/07/05 13:53
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

のようにしたいのですがどうすればよろしいのでしょうか?くだらない質問ですが、何卒ご教授の程よろしくお願い致します。


243 :名無しさん@カラアゲうまうま:02/07/05 13:55
>>242
> $number[0] = $number[0] - 10;
$number[0] = ($number[0] - 10)."\n";


244 :デフォルトの名無しさん:02/07/05 16:02
読み出したときは「文字」として行末にあった改行が変数に残っていたのですが、
計算した途端に「数字」に変換されて改行がとれてしまったのですね。

だから>>243のように行末の改行をつけて計算してやると。

245 :デフォルトの名無しさん:02/07/05 23:51
243様、244様 本当にありがとうございました。よくわかりました。

246 : :02/07/06 00:15
つかchompしろよ

247 :デフォルトの名無しさん:02/07/06 00:41
chomp(@number = <IN>);
print OUT "$_\n" for @number;

ということですね。246さんもご指導ありがとうございました。

248 :デフォルトの名無しさん:02/07/06 20:45
ちょっと既出ですが、リファレンスについて教えてください。

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

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

もしよろしければ、
例を挙げて説明してほしいのです。
また、参考になるwebサイトなどがあれば、教えてください。
できれば日本語のサイトでお願いします。

249 :デフォルトの名無しさん:02/07/06 21:01
>>248
質問はあげで。

でも折れは答えない罠(w

250 :japh ◆J.5V8ta6 :02/07/06 21:03
>>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である。

251 :ありがとう:02/07/06 21:13
>>250
ちょっとわからないものもありましたが、
レスありがとうございました。

これで今日はぐっすり眠れます。
もうちょっと勉強が必要ですね。

252 :ありがとう:02/07/06 21:16
参考リンク先をじっくり読ませてもらいます。

ポケットリファレンスじゃ詳しく書いてないからなぁ・・・。

253 :名無しさん@カラアゲうまうま:02/07/06 21:52
>>250
> $path = $href->{PAHT}; # $hrefと%ENVは何の関係も無い。$pathはundefである。
$ENV{PAHT}もundefという罠。

254 :ありがとう:02/07/06 22:12
>>253
$ENV{PATH}
なんですよね?本当は。

255 :japh ◆J.5V8ta6 :02/07/06 22:16
>>253-254
あう、その通りです。すまん。
しかもよく考えたら$ENV{PATH}なら確実に定義されているとは限らない罠。

256 :名無しさん@カラアゲうまうま:02/07/06 23:00
env -u PATH perl 250.pl
されている罠

257 :デフォルトの名無しさん:02/07/08 12:35
つーかおまえら、
use Env qw(PATH);
してください。


258 :デフォルトの名無しさん:02/07/09 00:59
このスレはプログラム板のPerlスレと考えて宜しいか?

259 : :02/07/09 01:06
>>258
いいよ

260 :デフォルトの名無しさん:02/07/09 01:07
>>258
いいけど。ただ、WebProgの方が活発かな。


261 : :02/07/09 01:10
>>260
webprogが活発・・・ガクガク

262 :デフォルトの名無しさん:02/07/09 01:11
>>261
言いたいことはよーく分かる。

263 :→perl超初心者:02/07/09 16:40
素朴な質問なんですが、perlで書いたプログラムってダウンロードできますか?
自分でやってみたところ、test.cgiを保存しようとしても、そのプログラムの結果が保存されただけでした。
そのプログラムに、データベースファイルにアクセスする命令が書かれているため、ソースごとダウソされるとデータベースファイルの場所、ファイル名が筒抜けになってしまうんで困るんですよ。
もしダウソできるんなら、それ用の対処法なども教えてくれるとありがたいです。

264 :クレール:02/07/09 16:46
セキュリティの関係上、それはできないらしいです。
そのため、Cgiがパスワードなどを使う事ができる。
と、言うわけです。

265 :デフォルトの名無しさん:02/07/09 16:49
>>264
リアルでありがとう。つっかえがなくなりました。
やっぱそうですか。
そんなんできたら2ちゃんのトリップとか解析できちゃいますしね。


266 :デフォルトの名無しさん:02/07/09 16:52
サーバー側の設定だろうよ。

267 :デフォルトの名無しさん:02/07/09 17:20
どっかの某掲示板ではアタックかなんかされてリカバリに失敗して
設定が狂って一時的に*.cgiの中身が丸見えになって……なんていう
楽しい事件があったらしいね。

268 :デフォルトの名無しさん:02/07/10 09:17
>>267
それ2chじゃないの(w

269 :デフォルトの名無しさん:02/07/10 09:57
ユーザ名、IPアドレス等の環境依存のデータをfoo.confとかいう名前のコンフィグ
ファイルから持ってくるってのはありがちな話だと思います。

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

皆さんこういう部分を毎回コーディングしているのでしょうか・・。

270 :デフォルトの名無しさん:02/07/10 10:00
>>269
>皆さんこういう部分を毎回

少なくとも自分形式が出来ればコーディングは一回かと。

271 :269:02/07/10 10:08
AppConfigモジュールってのがありました。解決。
http://www-6.ibm.com/jp/developerworks/linux/010209/j_l-perl3.html

272 :デフォルトの名無しさん:02/07/11 00:07
質問です。
501 Internet Server Errorの詳細を教えてくれる(何行目で引っかかったとか)ようなサーバってありますか?
今、いじってたCGIが単純に切り張りしただけで動かなくなってしまい、二箇所ぐらいしかいじってなかったので本当に不思議な状態です。(いじって直した部分はもう何十回と確かめてはいるんですが)
何行目がおかしいのかだけでも分かりたい…

273 : :02/07/11 00:08
__LINE__じゃだめ?

274 :272:02/07/11 00:16
すみません...マジでないですかね?

275 : :02/07/11 00:19
$SIG{'PIPE'}
$SIG{'INT'}
$SIG{'HUP'}
$SIG{'QUIT'}
$SIG{'TERM'}

つか、ローカルの環境ではテストしたのか?
へんなとこがあれば、>perl srcfileでエラー行出るだろ。


276 :272:02/07/11 00:21
DOSでいじってるのでローカルはメモリ食いすぎて使えんのです…オンラインでは分かりませんか?
レス感謝です☆

277 : :02/07/11 00:27
ほい

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


278 :デフォルトの名無しさん:02/07/11 03:07
CGI:Carpって手もあるよ。

279 :デフォルトの名無しさん:02/07/11 03:07
CGI::Carpね。

280 :デフォルトの名無しさん:02/07/11 12:38
syslog用関数もあるが。syslogが拝めなきゃ意味がないけど。

65 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)