> ただ、/newhomeと/homeが両方存在しています。/newhome は > 消しても構わないと判断できるでしょうか。 多分よいと思いますが、df -k して、別パーティションで あることを確認して下さい。また、本当にコピーできたか どうか du や diff などで確認して下さい。 > `mkdir /home`は不要だったか? /dev/hda2 を /home にする、ということなのでマウントポイント /home はマウントする前に mkdir で作成しなければなりません。 なお、マシンが手元にあるなら、シングルユーザモードで起動してから 作業をするのが正しいやり方です。 > perlやCによるプログラムでヘッダやフッターを処理したメールを、 > SMTPサーバーで送信しているのか、それともSMTPサーバーのどこかで、 > ヘッダやフッターを設定できるのかな、と思いまして。 SMTP サーバがヘッダやフッタに関与することはないと思います (そういうサーバが世の中に絶対ないとは言い切れませんが)。 ちなみにメーリングリストサーバの fml なんかは、ポリシー として、フッタを付けるような機能は実装しない方針だった ように思います (今はどうか知りません)。 |
はじめまして。 pl(cgi)で $A="abc"; この$Aに入っている“abc”をクリプト化したいのですが どのようにすればよろしいですか? |
Xwindowのソフト開発をやらなければいけません。が、まったく分かっていない状態だと思います。 サンプルプロを入力して起動させると、画面は表示されないままだんまり状態になります。 fputsのstdoutで処理通過点を表示させると、XtMainLoop()のところでだんまりになってる様です。 しかし、どのように原因を究明していいのか、ディバッグツールは何があるのか全く分かりません。 古いUNIXの本にadbと言うディバッグツールが乗っていたのでmanで説明を見て(と言っても英文なので見たつもり) いろいろ表示させて見ましたが、内容を見ても分からない状態です。 一体何をどうすれば、いやいや、何からどう始めれば、はたまたどんなマニュアルを購入すれば、少しはましな状態になるでしょうか? どうかお願いします。どんなヒントでもいいので教えてください。 順序が後先になりましたが、OSはSolaris7、言語はC、マシンはSUNです。 掲示板に書き込むのは初めてなのですが、これでよろしいでしょうか? でれでは・・・。 |
> この$Aに入っている“abc”をクリプト化したいのですが お望みのものかどうかわかりませんけど、 http://X68000.startshop.co.jp/~68user/webcgi/cryptogram.html など。 > fputsのstdoutで処理通過点を表示させると、 > XtMainLoop()のところでだんまりになってる様です。 僕は Xt のプログラムを作ったことがないのですけど、 XtMainLoop で戻ってこないのは正しいのではないですか? その中でイベント待ちをしているわけだから。 |
お返事どうもありがとうございます。 確かにおっしゃる通りです。正確に自分のQを伝えていません。ごめんなさい。 XtMainLoopでだんまりになっているのに、画面が表示されないのです。 色々悩んでリソースファイルと言う物が間違っているのかとか思うのですか・・ 自分が起動かけてる状態で、どのリソースファイルを見にいってるのかも分からないんです。 だから、本当にリソースファイルが問題なのかどうかも??? マニュアルによると、/usr/lib/X11/app−defaults と言うファイルだと書いてありますが/usr/libの下にはX11なるディレクトリはありません。 ではapp−defaultsはというと、いくつものフォルダーに存在しています。(ざっと40個位) はたしてどのファイルなのやら・・・・ こんな状態ではいつになったらソフトが完成するのやら・・と思うと気がめいってきます。 が、やらねば。 何かヒントをお願いします。 |
「僕の血の半分は地球人の血です!僕の父は地球人です!」「目を覚ませ!エイジ!」「基地の中には僕と同じ位の年の人もいるのです!」・・・レイズナーは一部が面白かったですね。エイジが全裸でカプセルに閉じ込められてる姿はドキドキものでした!二部のエイジはなんかオヤジっぽくてイマイチだと思ったのは私だけ? |
> レイズナービデオに取って見ていた女 すいません、おそらく あなたが見たコンテンツは SEGA BBS の過去ログです。 SEGA BBS は http://www.sega.co.jp/sega/p_cafe/bbs.html でやってますので、 そこに書き込んでみて下さい。 > XtMainLoopでだんまりになっているのに、画面が表示されないのです。 つまり、ボタンなどの簡単な部品を表示するだけのプログラムが 動作しない、と解釈していいですか? ソースが短いなら、見せて もらえばわかるかもしれませんが、わからないかもしれません。 > 自分が起動かけてる状態で、どのリソースファイルを見に > いってるのかも分からないんです。 truss コマンドで、どのファイルを open(2) しているか わかるでしょう。 > /usr/libの下にはX11なるディレクトリはありません。 ディレクトリは環境依存なので /usr/X11R6/lib/X11、/usr/X/lib/X11 など に置いてある場合もあります。 > ではapp−defaultsはというと、いくつものフォルダーに > 存在しています。(ざっと40個位) はたしてどのファイルなのやら・・・・ app-defaults/KTerm は何のファイルかご存知ですか? kterm が 起動時に読み込むリソースファイルです。 なんで kterm が app-defaults/KTerm を読むかというと、kterm の クラス名が KTerm だからです。そのクラス名というのは、 XtAppInitialize (古い Xt なら XtInitialize) の引数で指定します。 なので、「app-defaults/あなたの作ったプログラムのクラス名」という ファイルが存在すればそれが読み込まれますし、存在しなければリソースが 空になるだけです。 > はたまたどんなマニュアルを購入すれば Xt の本は結構あります。秋葉原などが近いなら、ちょっと覗いてみれば 結構見付かります。ただし、古い本が多いので、既に obsolete な関数 (例えばさっきの XtInitialize とか) を紹介していたりするのが難点。 あと、少し前の UNIX USER で、数回 Xt の説明が載ってました。 |
> XtAppInitialize (古い Xt なら XtInitialize) 違った。XtAppInitialize も obsolete でした。少なくとも X11R6.3 なら XtOpenApplication を使いましょう。 # From XtOpenApplication(3Xt) # XtAppInitialize and XtVaAppInitialize have been superceded # by XtOpenApplication and XtVaOpenApplication respectively. # # be supereded ≒ be obsolete と解釈してよいのだろうか? |
毎日どうもありがとうございます。感謝感謝です。 たくさんのコメントどうもです。 まず、app-defaultsファイルの件はtrussと言うコマンドで分かりました。 次に、XtOpenApplicationを使ってコーディングしてみましたが、(以下) disp=XtOpenApplication(app1,"xmfonts",NULL,0,&argc,argv,NULL, applicationShellWidgetClass,NULL,0); パラメータの値がよく分かりません。でもこれでコンパイルしたところ 以下のようなエラーでコンパイル出来ません。 内のX11のバージョンは分かりません。 cc /export/home1/sakou/srclib/cstlib/xmfonts.c -c -g -I /usr/openwin/include -I /usr/dt/include "/export/home1/sakou/srclib/cstlib/xmfonts.c", line 78: warning: improper pointer/integer combination: op "=" cc -o xmfonts xmfonts.o -lXm -lXt -lX11 -lm Undefined first referenced symbol in file XtOpenApplication xmfonts.o ld: fatal: Symbol referencing errors. No output written to xmfonts *** エラーコード 1 make: 致命的エラー: ターゲット `xmfonts' の構築用コマンドが失敗しました。 最後に、マニュアルは、地方にいるので書店にいってもX-windowsのマニュアル なんてほとんど皆無です。 どんなマニュアルがあるかも分からないのでネット上で一生懸命探しているのですが 内容が分からないのと、価格がPCの物と比べて高価なのとでなかなか 自分では決められない状況です。 もう一つ、自分の無知さがまた一つ分かりました。 X-windowsのプログラムはXlibだけでもコーディング出来るのですか? XツールキットとかMotifルーチンとかが無くても出来るのですか? XツールキットとかMotifルーチンは簡単にコーディングするための ライブラリーなのですか? ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く 分かっていない事が分かりました。(今まではすべて使って初めてプログラムが 完成する。と思っていました。それなのにサンプルプロは様々な関数を 使ってあるのでなぜ???って) ではまた。byebye。です。 |
すいません、Xt のつもりで書いてました。Motif なんですよね。 Xt* のくだりは無視して下さい。その他は後ほどまた書きます。 |
> X-windowsのプログラムはXlibだけでもコーディング出来るのですか? > XツールキットとかMotifルーチンとかが無くても出来るのですか? > XツールキットとかMotifルーチンは簡単にコーディングするための > ライブラリーなのですか? 答えは全て YES です。Xt も Motif も最終的には Xlib の API を呼びます。 http://www.ainet.or.jp/~inoue/im/basic.html#api が参考になるでしょうか。ただし、Xlib だけでやろうとすると 入力フォーム一つ作るのにも相当苦労するでしょう。 # この方のページはとても質が高いので、UNIX を使う人は # 一通り目を通しておいた方がよいと思います。 ちなみに、 > 極端な話、Xlibを使わずソケットプログラミングで直接 X protocol を > 話すXクライアントアプリケーションを作ることも原理的には可能です。 というのは、/tmp/.X11-unix/X0 に対して UNIX ドメインソケット経由で X プロトコルを話すとか、ポート 6000 に対して X プロトコルを話す、 ということです。 > ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く 僕もわかってません。なので、偉い人に聞いてきました。 http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000610.html の (Jun 10 00:26)[go] を読んで下さい。 # …全然わかってなかったんだなぁ。 あと、OpenGL は 3D を描画するためのライブラリです。 > 最後に、マニュアルは、地方にいるので書店にいってもX-windowsの > マニュアルなんてほとんど皆無です。 こっちも http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000611.html をどうぞ (6/11 07:00 あたりにならないと作成されません)。 > 次に、XtOpenApplicationを使ってコーディングしてみましたが やはり Motif であっても XtOpenApplication を使うべきだとは 思いますが、お使いの openwin が X11R6.3 より古い規格に準拠して いるのではないかと思います。 > 内のX11のバージョンは分かりません。 man X とすると、最後に X Version 11 Release 6.3 などと書いてあると思います。 以下、ひとりごと。Perl/Tk 800.xxx 系の日本語化パッチ。 http://opinion.nucba.ac.jp/~tsutomu/perltk/jp-patch.html やっと見付けられた…。 |
グラデゥウスの基盤手に入ったがどうしても無敵技で来ません 教えてください 4面でフォースフィールドつけながらクリアーして そのあとまたはりなおすんですか?? |
私は課題研究という授業で ゲーム業界についてというテーマで いろいろ調べています。 その中で、ここが検索に引っかかりました。 日付から見てかなり前のものだったようですが、 中古ゲーム販売についての論争、 とても参考になりました。 当然、こんなテーマで調べているのですから 私自身ゲームもやりますし、 中古店も利用しています。 いろいろ考えさせられました。 参考といってもあの内容をそのまま引用したり するわけではありません。 調べる範囲に中古市場を加えることを 視野に入れて・・・変な文章・・ とにかく、それを加えることを決めました。 報告書作成まで、日にちが余りないのですが がんばってみようと思います。 勝手ながら少しばかりご挨拶をさせて いただきました。 |
おひさしぶりです。いつぞやは、お世話になり、ありがとうございます。 早速ですが、質問がございます。 echo-3.htmlには、 > このように SOMAXCONN を指定すると、 OS が許す最大値を意味します。 とあって、且つ、 > FreeBSD2.2.7 では /usr/include/sys/socket.h で > #define SOMAXCONN 128 >と定義されているので、 とあります。 で、以下の1)と2)のどちらに解釈していいのか悩んでいます。 1) この例の128は、クライアントや言語に依らず(?)、OSによって 一意に決定されるもの。 2) この例の128は、クライアントや言語に依って、決定されるもの。 (∵128と書くということは、減らすのはもちろん、増やすのも可能?) (これが真なら、いじる方法はありうるでしょうか?) なぜ、このような質問をするかというと、 a) 事の発端は、自作proxy( http://henika.virtualave.net/view.cgi?0 ) で、 http://henika.virtualave.net/japanese/browsers.htm を (厳密に言うとローカルマシン上でテストしてます)見に行くと、画像の 枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。 b) でも、自作proxyを経由しないと、ちゃんと表示される。 c) そこで、SOMAXCONNをいじれないか? と、思ったからです。 多分、いじれそうにないな、とは思っているのですが、もし、いじる 方法(perlのコンパイルを除く)をご存知でしたら、ご教授願いたく、 よろしくお願いします。 因みに、環境はwindows98, perl -vでは、 This is perl, version 5.005_03 built for MSWin32-x86-object と表示されます(失礼ながら、windowsをご存知ではないのは、過去ログ から、承知しておりますので、perlでいじれる方法、ということで、 お願いします)。 ・・・とかいいつつ、delegateのように、delimiter(但し/-_-ではなく/)で imgタグをproxy経由させないように改定してしまいましたが、気になって 気になって仕方がない・・・ |
すいません、先の自作proxyは、あれ単体では動作しないので、 もし、眺めるのでしたら、お手数ですが、 http://henika.virtualave.net/view.cgi?0 を適当な名前に、 http://henika.virtualave.net/view.cgi?1 をfilter.plに、 http://henika.virtualave.net/view.cgi?2 をhtrans.plに してください。 宜しくお願いいたします。 参照 http://henika.virtualave.net/japanese/proxy.htm |
> グラデゥウスの基盤手に入ったがどうしても無敵技で来ません わからないです。というか、無敵技があったのか。 # ちなみに基盤じゃなくて基板です。 > 参考になりました。 と言っても、僕が書いた文章ではないので扱いには お気をつけ下さい。まぁ、 > 参考といってもあの内容をそのまま引用したりするわけではありません。 ということなので、心配はしておりませんけど。 > 1) この例の128は、クライアントや言語に依らず(?)、OSによって > 一意に決定されるもの。 です。 (FreeBSD では) この数はカーネル内部に書かれており、動的に数を 変更する仕組みもないので、一般ユーザでも root でも変えられません。 どうしてもというならカーネルの再コンパイルでしょうか。 とはいえ、他の UNIX 系 OS では動的に変更できたりする *可能性* はあります。 # ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。 > 画像の枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。 なお、FreeBSD では SOMAXCONN は128で、128*1.5=192 なので、待たせて おけるクライアント数は最大 192 になります。しかし、本当にそれくらいの コネクションが張られているのでしょうか? netstat で見ると ESTABLISHED に なっているのが そんなにたくさんありますか? あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん 接続してみればわかると思います。 なお、http://X68000.startshop.co.jp/~68user/net/echo-3.html には > もし backlog 以上のクライアントが同時に connect してきた場合は、 > サーバは接続を拒否するか、何もレスポンスを返しません。 とありますが、おそらくこれは間違いで、拒否することはありません。 カーネルレベルで無視するだけで、サーバプログラム側はクライアントが やってきたことすら検知できません。 一方クライアントからは TCP の 3way handshake の1発目の SYN に対する 返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。 |
> ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。 ioctl はありえないですね。デバイスじゃないんだから。 |
ご回答、ご指導、どうもありがとうございます。 >カーネルの再コンパイルでしょうか。 こ、この時点で、止めが刺された気がしました。A^^; 多分、windowsでもあてはまるのでしょう。 >しかし、本当にそれくらいのコネクションが張られているのでしょうか? > netstat で見ると ESTABLISHED になっているのが そんなにたくさんありますか? 早速、試してみました。 netstatで、ESTABLISHEDとなった本数(数回やった場合の最大)を以下に示します。 Local Address = n:80 は、 2 Local Address = n:8080 は、 5 Local Address = n:15xx は、 7 (15xx=1500番台) http://henika.virtualave.net/japanese/browsers.htm には、このページ+36枚画像 あるので、ブラウザと思われる1500番台が、想像ですが、20近くないとおかしいような 気がします。この時点で、SOMAXCONNの値は1桁台と推測しました。 この時点で、自動的に、 >あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん >接続してみればわかると思います。 を、満たしてしまっているような気がします・・・ 因みに、SOMAXCONNをperlで表示させると、 5 でした(以下を実行)。 use IO::Socket; print SOMAXCONN; (思いつきで試したので、あまり意味がないかもしれません・・・) これが正しければ、待たせておけるクライアント数は、5+alphaで、先の推測には 合致してるなぁ、と思い込んでいます。 う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。 >カーネルレベルで無視するだけで、サーバプログラム側はクライアントが >やってきたことすら検知できません。 なるほど。windowsでも同様であれば、当方の現象(全ての要求を受付てくれない) も納得いきます(logにクライアントから要求されるはずのイメージ・ファイルが 要求されていないようになっている)。 >一方クライアントからは TCP の 3way handshake の1発目の SYN に対する >返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。 申し訳ないのですが、このあたりは、まだよくわからないので、確かめられません。 今後の課題・勉強材料とさせてください。 |
> これが正しければ、待たせておけるクライアント数は、5+alphaで、 > ... > う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。 うーん、ちょっとうそっぽいですねぇ。いくらなんでも一桁ってのは…。 SOMAXOCNN が誤って5になってしまったから、それ以上接続できない という可能性はないですか? backlog に 10 や 100 を渡すと どうなりますか? 僕はこれ以上わかりませんが、もし Winsock に詳しい方が おられましたら教えて下さい。 |
お久しぶり(?)です。 色々情報をもらって少し頑張って見たつもりですが、もーイヤ!と言う感じです。 やっぱり自分にはX−windowのプログラム作成は無理なんでしょうか? そんなに簡単に出来るとは思っていませんが、でもいまの状態では全く持って・・ でも一つだけ決めた事があります。それは、Xlibだけで作成するのはやめよう と言う事。馬鹿げた事を、と思わないでください。この結論を出すのもとっても 大変な位にX−windowに関して無知なんです。 まだ迷っているのはMotifを使うか使わないかと言う事。 で、とりあえず何かを始めないと、と思い、XtとMotifをこだわらずに( これがまた問題なのですが)サンプルプロをアレンジして、自分の作りたいアプリ に近づけようと努力しました。が、もーイヤと言うかダメと言う感じです。 Xlibだけを使用したサンプルプロにイベント処理(具体的にはPointerMotionMask) があったので、そのサンプルを加工して、画面に現在のカーソル座標を表示させる 所はOKになったのです。でもXtで作り直そうと思って関数を探して(これも 大変な作業です 自分には)XtAddCallback、XtAddEventHandlerを使おうと思ったまでは 良かったのですが、パラメータ中のイベントマスク名が何を見ても一部しか載って いないのです。PointerMotionMaskに相当するベントマスク名が・・・・・・・!! これじゃー全然はかどらないよ!!って訳です。 やっぱり絶対にマニュアル不足ですかね? それともマニュアル以前の問題ですかね? どう思われます? 率直な意見を教えてください。 (でも「あなたには無理です」と言う究極の意見は勘弁してください。首が かかっているんです) 愚痴になってしまいました。ごめんなさい。 ここしか頼るところ無くって、申し訳無いと思っているのについ書かずに いられないんです。 また来週元気出して頑張るぞ!! じゃあまたネ!! |
はじめまして。 ずっとROMオンリーだったのですが、書きこんでみます:) @へにかさん >因みに、SOMAXCONNをperlで表示させると、 5 でした winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。 winsock-ver2になってはじめて0x7fffffffになりました。 思うに、perlはwinsock-ver1のヘッダを使っているのではないでしょうか。 さらに、テストされているブラウザはIEかネスケだと思いますが、 どうもブラウザ側が、5より多くのコネクションを張らないようですね。 これはおそらく、前述のwinsock-ver1にも対応させるためだと思われます。 #自信は無いです(笑 なので、プロキシ側でいくらbacklogを増やしても、 ブラウザ側が接続しに来てくれないんだと思います。 @jamesさん XとMotifを使っての開発は、かなり昔にHPとSolarisで行った事があるのみなのですが、 #もうほとんど忘れています(苦笑 その時に非常に役に立った書籍として、 ・日刊工業新聞社「X-Window Ver.11 プログラミング」 ・日刊工業新聞社「OSF/Motifプログラミング 」 の2冊をあげてみます。 見た目がかなり初心者向けっぽいのですが、 なにもわからなかった頃から、だいぶ理解できてきた頃まで、 ずっと役に立ってくれました。 オススメです。 #ちょっと検索かけたら片方だけでてきました↓ #http://www.pro.or.jp/~fuji/computerbooks/unix-x/osfmotif.nikkan.html @68userさん どうも、はじめまして。 いきなりでアレなのですが、:) httpサーバがContent-Lengthを返してくれないコンテンツには、 クライアント側からどのように対処するべきでしょうか。 現状の自作proxy(この書き込みもコレ経由です)では、 サーバ側からの切断を待っている状態ですが、 どうもこちら側から切らなければいけないようで、 毎回タイムアウトで自分から切るハメになっています。 #例えば、下でへにかさんが示しておられるURLから示されているGIF画像もそうですね。 IEやらネスケやらのブラウザはやってくれているようなので方法はあると思うのですが、 探し方が悪かったのか見つかりませんでした。 なにか、普通こうするだろ、って言うような方法というのは有るのでしょうか? もし知っていらっしゃったら、ぜひ教えてください。 よろしくおねがいします。 ・・・でも、画像ファイルの中を見て長さを取得してたりしたらイヤだなぁ(笑 |
68user様、hsj様、ご教授、どうもありがとうございます。 68user様>backlog に 10 や 100 を渡すとどうなりますか? backlogを、思い切って128に増やして、netstat 1 で、1秒刻みで出力した結果を 以下に示します。 前回、netstatを、(間抜けなことに)手動で何回も実行した結果を示しましたが、 そのためか、前回とは異なる結果になってしまいました。すみません・・・ backlog = 128 Local Address = n:80 は、 7 Local Address = n:8080 は、 5 Local Address = n:14xx は、 12 (14xx=1400番台) backlog = SOMAXCONN Local Address = n:80 は、 8 Local Address = n:8080 は、 5 Local Address = n:15xx は、 12 (15xx=1500番台) Local Address = n:ingreslock は、 1 (←ほとんど出ない) 上記の結果から、backlogを増やしても、大差ないみたいです。 hsj様のご示唆から考えて、proxyを経由しない場合を調査しましたので、以下に 示します(上記の結果に対応しています)。 Local Address = n:80 は、 5 Local Address = n:16xx は、 5 (16xx=1600番台) (但し、Netscape3.0) 確かに、おっしゃるとおり、 hsj様> 5より多くのコネクションを張らない ようですね。 でも、proxy経由しないほうが、ちゃんと画像が表示されるので、今、僕は 混乱の極みです(今までも混乱してますが)。 proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、 backlogが怪しいわけではない??? となると、proxyが黒ですね。 hsj様>httpサーバがContent-Lengthを返してくれないコンテンツには、 hsj様>クライアント側からどのように対処するべきでしょうか。 このご質問が、良い示唆になって、ありがたいです。ここを対処すれば、 >へにか@箇条書き [URL] 2000/06/14 (水) 23:02:08 >a) 事の発端は、 {略} >全ての要求を受付てくれない(logで確認済み)。 が、うまく解決できそうな予感がします。 追伸1: だんだん、わかってきたような気がして(実際にわかってるかどうかはおいといて)、 嬉しいです。こちらの掲示板でお世話になって、よかった、と思っています。 追伸2: 明日(日曜)から、1週間(弱?)程度、出張に行ってきますので、書き込みが 遅れるかも知れません。色々アドバイス頂いているのに、大変申し訳ないです。 |
@james さん > それは、Xlibだけで作成するのはやめようと言う事。 賢明な選択でしょう。 > やっぱり絶対にマニュアル不足ですかね? だと思います。この前のチャットのログや hsj さんの情報を 元にして何か本を買わないと苦しいと思います。 UNIX で GUI アプリを作るなら、Gtk+、Qt、Perl/Tk などの 選択肢もあります。入門書は結構出てます。ただ「困っても その本を読めば絶対にわかる」といったレベルまで 徹底的に 解説した本はないですね。 ただ、仕事に使えるほど熟成しているかというと、ちょっと不安ですが。 # Gtk+ や Qt って、もう API の仕様は固まったのかしら? @hsj さん > winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。 > winsock-ver2になってはじめて0x7fffffffになりました。 なるほど。どうもです。 > サーバ側からの切断を待っている状態ですが、 > どうもこちら側から切らなければいけないようで、 HTTP/1.0 なら常にサーバ側から切ってくれますので、 while (<SOCKET>){ print } でいけるはずです。 マルチスレッドなら select で待って、 $len = read(SOCKET,$buf,8192); if ( ! $buf ){ 切断された } # $len==0 の方が better かな? てな感じでどうでしょうか。 @へにかさん > proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、 > backlogが怪しいわけではない??? となると、proxyが黒ですね。 ですね。本来、proxy がやってきたクライアントをさくさく accept していれば、SOMAXCONN が 1 でも影響は出ないはずですから。 うまくマルチスレッド化できているかどうか調べてみて下さい。 なお、 > Local Address = n:8080 は、 5 というのは accept 済のコネクションと accept 前の OS がキューイング しているコネクション、両方の合計が 5 ということです。なので、 この調べ方はあくまでも目安にしかなりません。念のため。 厳密に調べたければ > あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん > 接続してみればわかると思います。 をやってみてください。 |
@68userさん >HTTP/1.0 なら常にサーバ側から切ってくれますので はい、そのハズなのでそれを待っているのですが、 #ちなみにCでつくっています どうも、なかなか切ってくれないようなのです・・・ ・・・というのが疑問だったのですが、解決しました:) つくった機能のうち、環境変数の追加と削除で、 深い考え無しに、「Connection: Keep-Alive」を追加していました。 さらに追い撃ちで、HTTP/1.0にもかかわらず、 httpdによってはコレを解釈してくれているようで。 基本に戻ってrfc2616ながめてて気が付きました・・・あぁマヌケ。 そこで、この環境変数を「Connection: close」に修正したところ、 期待通り、httpd側からサクサク切ってくれるようになりました。 なにはともあれ、ありがとうございました。 @へにかさん もしかして、へにかさんのおっしゃっておられる、 「プロキシを通すとコネクションが張られっぱなしになる」というのも、 この辺りと関係がないでしょうか? |
はじめて書き込みます.UNIX初心者のものです. ソース環境がひとつで2つのアプリを作っているのですが, 毎回できたオブジェクトを手作業で退避・圧縮しています. この作業をmakefileに記述したいのですが,次の記述でよい でしょうか. BAKDIR2 = /tmp/backup2/ test2.o.gz: test2.o cp -p test2.o $(BAKDIR2) gzip $(BAKDIR)/test2.o ご指導よろしくお願いします. |
> 深い考え無しに、「Connection: Keep-Alive」を追加していました。 なるほど。HTTP/1.1 まわりではまるのは よくありますよね。 # Host ヘッダを付けず HTTP/1.1 を使ってはまるとか。 > この作業をmakefileに記述したいのですが,次の記述でよいでしょうか. よいように見えますが、そちらではうまく動いていないんですか? |
どっかのホームページを読み込んできて タグ以外と、コメントを削除する ということをやりたいんですが、 http://www.din.or.jp/~ohzaki/perl.htm で タグを削除する というのがあったので、これをタグ以外を削除 にしてみたのですが、 コメントタグが消えてくれません、、 <!-- -->で囲まれている中身と、<!--、-->も消えてほしい。。 消したいんですが、どのように改造するといいで しょうか? ---ソース--- $tag_regex_ = q{[^"'>]*(?:"[^"]*"[^"'>]*|'[^']*'[^"'>]*)*}; #'}}}} $comment_tag_regex = '<!(?:--[^-]*(?:(?!--)-[^-]*)*--(?:(?!--)[^>])*)*(?:>|(?!\n)$|--.*$)'; $tag_regex = qq{$comment_tag_regex|<$tag_regex_>}; $text_regex = q{[^<]*}; $result = ''; while ($str =~ /($text_regex)($tag_regex)?/gso) { last if $1 eq '' and $2 eq ''; $result .= $2; } ------ あ、本当はとほほラウンジに書きたかったのですが、 書き込みできなかったので、、 |
こちらで質問をさせて頂きたいのですが、unix commandで、OS及びHWが 32bitか64bitと知るにはどの様なコマンドを打てばよろしいのでしょうか? 教えていただきたいと思います。 |
> <!-- -->で囲まれている中身と、<!--、-->も消えてほしい まずタグ以外を消して、再度 <!-- --> を消すような正規表現を 使うというのはダメですか。 # ちょっとその正規表現を読む気力がないので…。 > OS及びHWが32bitか64bitと知るにはどの様なコマンドを > 打てばよろしいのでしょうか? 思い付くのは printf("%d\n",sizeof(int)); くらいですかねぇ。 これが「OS及びHW が32bitか64bit」という判断の基準として ふさわしいかどうかはわかりません。 |
68userさん、 回答ありがとうございました。 |
初めましてです。このサイトはとてもわかりやすく書かれていて嬉しいです。 ところでHTTPクライアントを作りたいのですが、その前にブラウザがどんな環境変数やデータを吐いてるか尻たいです。 tcpdump -i ul0 などとやってみましたが意味不明でしたです。 GET / HTTP/1.0 Referer: http://hoge/hoge っていうようなテキストベースでのデータや相手の送信内容を知るにはどしたらいですか? |
http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=658 でいいですか。 あと、tcpdump の吐く hex データから tcp 部分を抽出する スクリプトを作るというのも、TCP と IP の勉強になります。 |
質問させて下さい。 こちらのホームページで、アクセス状況をグラフ表示していますが、 これはどうやったら出来るのでしょうか。 DBからデータを取得し、グラフ表示をしたいのですが、具体的な 方法が分かりません。 何か参考に出来るのではと思い、お尋ね致します。 宜しくお願いします。 |
1時間に一度 (cron で実行) http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/countup.hour で http://X68000.startshop.co.jp/~68user/count/total.top にその時点でのカウンタ値を追加し、さらに1時間に一度 http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/make-count で http://X68000.startshop.co.jp/~68user/count/out/day.top を作成してます。 画像表示用 CGI は http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/view-count.cgi です。 GIF の生成には fly コマンドを使っていますが、例の GIF 圧縮の 特許の問題で Unisys からクレームが付く可能性があります。png 版に 入れ換えようと思ってはいるのですが、なかなか時間が取れず ほったらかしになってます。 画像データ生成が面倒なら、 http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi の投稿コードの画像のように、xbm (モノクロ) や xpm (カラー) 形式を 使う手もあります。xbm も xpm もただのテキストファイルです。 |
68userさん、ご丁寧に回答いただき感謝します。 参考にさせていただきます。 どうもありがとうございました。 |
初めて書き込みます。 皆さんにひとつ教えていただきたいことがあります。 実は、ある会社でメールサーバーを作ってるのですが外部からのリレー を許可したいのです。 ところがSPAM対策も大事ということで行き着いた答えは 「POP before SMTP」です。 http://www.venus.dti.ne.jp/~phashim/fmv/POPbeforeSMTP.html を参考にと思ったのですが、私のQpopperは バージョン3.02すでにPOP認証のログを吐き出しています これを利用すると書いてあるのですが どのようにすればいいのでしょうか どなたか、アドバイスお願いします |
はじめまして、UNIX始めて2週間くらいたちました。 で、いきなり躓いてしまい先輩方に教えていただきたい事が在ります。 cシェルで、複数件のファイルを一つずつ読みたいのですが、 どうしてもうまく行きません。 とりあえず、リストファイルを作ったまでは良いのですが、 ls -1 > TAR.list awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result そのファイルを頭から一件づつ読むやり方がわかりません。 何か良い方法が在ったら教えてください。 |
@ookubo さん > バージョン3.02すでにPOP認証のログを吐き出しています という意味がわからないです。3.02 なので修正点が違うから 困っているということですか? 既に認証リストはあるので POP before SMTP 用の無駄なログを吐きたくないということですか? @sawaさん > awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result awk なんてすっかり忘れてしまったなぁ。最初見たとき 書き間違いかと思った。 > そのファイルを頭から一件づつ読むやり方がわかりません。 foreach fn (`cat TAR.list`) ls -l $fn end てな感じでいいですか? ファイル名に空白や *、? などを 許すなら、事前に sed あたりで変換しておく必要があります。 # まぁ、csh スクリプトでこだわっても仕方ないですけどね。 |
突然ですが質問させてください 初心者なんで的外れかもしれませんが・・・ あるサーバソフトを作成中ですが、そのサーバソフトが起動時に 読込む設定ファイルのパスってどうすればいいんですかねぇ・・・ fopenする時ってフルパス指定するじゃないですか(違います?) でサーバソフトはInetdで起動されるんです。 だから何処で動いているかわかりませんよね どーすればいいのかなぁ・・・ 教えてくださーい inetd.confの起動時オプションですか??? |
お聞きしたい事があるのですが、 使っているOSは、FreeBSDで viで作成したファイルをフロッピーディスクに 保存したいのですが、どのようにすればよろしいのですか? あと、その保存したフロッピーをWin98でも見れるように するには? よろしくお願いします。 |
> fopenする時ってフルパス指定するじゃないですか(違います?) フルパス指定でもいいし、カレントディレクトリからの 相対パスでもいいです。 > だから何処で動いているかわかりませんよね getcwd(3) でカレントディレクトリを取得して、 どこかに出力させてみればわかるでしょう。 > その保存したフロッピーをWin98でも見れるようにするには? - Windows98 でフォーマットして、mount_msdos して cp して umount - Windows98 でフォーマットして、mcopy file a: どちらでもよいです。 http://www.jp.FreeBSD.ORG/QandA/HTML/640.html FreeBSD で DOS フォーマットしたいなら http://www.jp.FreeBSD.org/QandA/HTML/350.html |
こんにちは。初めて書き込みするtakuroという者です。 このbbsでは、ユーザー同士の疑問や知識の交換がされていると知って書き込みしたんですが、ページの趣旨にあっていない質問だったら、無視して下さい。 winzipの事なんですが、解凍する時に、パスワードを入れるように設定して圧縮したんです。そしたら、長い間そのファイルをほうっておいたせいで、パスワードを忘れてしまい、解凍できなくなってしまったんです。 中身は重要な物が入っているんですが、必要なときに取り出せなくなってしまって、大変なんです。どなたか、解決の方法を教えて下さる方、いらっしゃいませんか?メールでも何でもいいので、どうか連絡をよろしくお願いします。 |
>takuro PikaZipとか?? http://nagoya.cool.ne.jp/pusa/ パスワードはどのくらいの長さ? ローマ字の小文字なら、、速いかな、、(謎 |
航空機事故で検索していたらこの掲示板にたどり着きました。 「日航機墜落事故 東京大阪123便 新聞見出しに見る15年間の記録」 のホームページです。 |
ネットワークに関して教えてください。 ホームルータ経由でISDN回線に接続し、モデムとつながれている端末にアクセスすることはできるのですが、モデムでつながれている端末はホームルータないの端末にアクセスすることができません。 ルーティングテーブルの設定が必要なのかと思いますが、どのように設定したらよいかわかりません。 ホームルータのグローバルアドレスとかみることとかできるのでしょうか。 これについて詳しい人がいたら、教えてください。よろしくお願いします。 |
つまらない質問でごめんなさい。 perl 5.004_04について教えてください。 スクリプトの最初にifを書くと、その後のスクリプトが どうであろうがCompilation errorになって実行できないのですが、 これはバグなんでしょうか? もしバグだとしたら、広く知られたものなんでしょうか? 以下余分に長いサンプル(split.pl)です。 #!/usr/local/bin/perl if(#$ARGV != 1) { die "Usage: split.pl keyword file\n"; } $keyword = $ARGV[0]; $infile = $ARGV[1]; open(IN, $infile); $prefix = "$infile-split-"; $suffix = "000"; $file = ">$prefix$suffix"; open(OUT, $file); while($line = <IN>) { print OUT $line; if($line =~ /^\s*$keyword\s*$/) { $suffix = sprintf "%03d", $suffix+1; $file = ">$prefix$suffix"; open(OUT, $file); } } |
@has > if(#$ARGV != 1) { #$ じゃなくて $# っすね。 > これはバグなんでしょうか? ちなみに (言うまでもないかもしれませんが) ちょっと前までの stable は 5.005_03 です。今の perl5.6 はかなり buggy だとか # と perl の偉い人が fj で言ってた。 あと、7/22 か 8/12 か 8/20 あたりにそちらに寄りますので、 もし居るならよろしく。 @流れ星 > ネットワークに関して教えてください。 NAT もルーティングも、ソフトウェア (FreeBSD) でしか やったことがないので、アドバイスできません。 NAT かましてるかどうか、ルータの型番、モデムの端末が LAN 内にあるのか外にあるのか、などを書いて fj.net.lan など に投稿するといいでしょう。 # でも、最近のってほとんど http://ルータのIPアドレス/ で # 設定できるんでないの? |
はじめまして perl(CGI)でAccessLogを取るScriptを 作っています。 HTTP以外の情報って取得できるのですか? 例えば、FTPなどのAccessLogとか... |
> 例えば、FTPなどのAccessLogとか... 無理です。FTP と HTTP は別物だから。 |
@68user >#$ じゃなくて $# っすね。 ふぇえ、おはずかしい。 真っ先に人のせいにしてしまうなんて…。 >今の perl5.6 はかなり buggy だとか 冷静に人のシステムを批判できる人って やっぱ偉いですよね〜。 |
68userさん皆さんはじめまして 早速なんですが、CGIを自分のNTマシンで開発してUNIXの本番環境でTESTしているのですが、 先頭行の#!〜の記述がNTとUNIXで違うので毎回直しているのですが 面倒なのでNT側のアパッチで自己完結型を使わないでCGIを動かしたいのですが なにか方法をご存知無いでしょうか? |
> 先頭行の#! Windows 使ってないのでわからないです。 多分 Windows では #!/bin/sh というような書き方ができない、って ことなんだろうと思いますが、もし単にパスが違うだけならやりようは あります。もしそうなら再度質問して下さい。 |
> もし単にパスが違うだけならやりようはあります。 > もしそうなら再度質問して下さい。 すみません、おっしゃる通です Windowsが #!C:/Perl/bin/perl で UNIXが #!/usr/local/bin/perl です どうにかなるでしょうか? |
よしださん Win機の 1.Apacheをインストールしたのと同じドライブに 2.\usr\local\bin\を掘って 3.Perl一式(Perl.exeとDLL類)を入れれば #!/usr/local/bin/perlで参照できると思います. お試しください. |
UNIX,CGI,ネットワークについての事ではないので、この掲示板の趣旨に合わない かも知れませんが、下記の事についてどなたか知っていましたらお教え下さい。 実はMOについてですが、これまで認識していたメディアが急に認識されな くなり、他のメディアで試しても同じ現象が出るようになりました。 クリーニングしても直りません。たまに認識する事もあり、なにがおかしい のか見当もつかず、途方に暮れています。 何か方法があるでしょうか。 |
YOSHIさん 次のようなページをご紹介します. MO掲示板: http://www.zob.ne.jp/%7Ekanai/mo/bbs/bbs.pl MOにこだわるページ: http://www.zob.ne.jp/~kanai/mo/ MOS331E 遍歴: http://www1.sphere.ne.jp/squilla/comp/mos331al.html 悪名高いオリンパスドライブの清掃方法です. # 私もジャンクの331(Logitec LMO-230H)を手に入れ, # 清掃して問題なく使っています. 参考まで. |
現在、さくらインターネット<http://www.sakura.ad.jp>で専用サーバを借りています。OSはFreeBSD 3.4です。大した知識もないのに大丈夫かな、と思っていたところ、ついに困った事態になりました。 chsh -s でログインシェルを変更したのですが、誤った名前を指定してしまったのです。それからというもの、スーパーユーザになろうとしても su: +++: No such file or directory と出てしまい、rootによる作業が一切できない状況です。 root権限で chsh -s /bin/sh でも実行できれば済むのですが、どうすればいいものやら。セキュリティホールを利用できないか、などと本気で考えましたが、そんな技量もありませんでした。 きちんと業者に頼むべきなのでしょうが、Telnetでできる作業は1万円、Telnetでできない作業は2万円と、勉強料としても学生にはかなり惜しくなる出費なのです。 何かいい方法があるなら教えていただけないでしょうか。 |
> su: +++: No such file or directory むぅ…多分無理だと思います。一旦 shutdown して シングルユーザモードで再起動するしかないので 2万円コースだと思います。 あきらめきれなければ、 http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/chat.html で聞いてみて下さい。そこの方々が無理だと言ったら絶対無理です。 あと、回答してもらっても返答する気がないなら、最初から 書き込まないで下さい>返答する気のない人々 |
またまたperlについてお聞きします。 連想配列をうまく使って、キーに対して文字列リストを 保持したいと思うのですが、何かよい方法はありますでしょうか。 現在は、文字列を共通のリスト配列に順に格納して、 キーに対する文字列リストの中の最初の文字列へのインデックスを 連想配列に格納する、という方法をとっています。 うまく伝わらないかもしれませんので、少々サンプルを書きます。 $store = 0; foreach $file (@files) { open(IN, $file); @contents = <IN>; $index{$file} = $store; $numlines{$file} = $#contents + 1; @lines[$store..$store+$#contents] = @contents; $store += $#contents + 1; } |
要は、ファイル名と行番号を与えると、その行が得られるデータ 構造は?、ということでいいですか? なら、 while (<IN>){ $data{$file}{$line}=$_; $line++; } とやってもいいし (perl4 的にするなら $data{"$file$line"})、 あるいは @contents=<IN>; $index{$file}=\@contents; と、配列へのリファレンスをハッシュに入れてもいいと思います。 参照するときは $file = 'abc.txt'; $line = 123; print ${$index{$file}}[$line]; とか (abc.txt の 123行目を表示。先頭が0行目)。 |
Netboyさんありがとうございました > #!/usr/local/bin/perlで参照できると思います. > お試しください. 試してみたんですが、 #!E:/usr/local/bin/perl だと動くんですが、 #!/usr/local/bin/perl だと駄目なので どうもapachの自己完結型がドライブ名の指定が必要みたいでした、 結果は残念でしたけど、どうもありがとうございました。 >あと、回答してもらっても返答する気がないなら、最初から > 書き込まないで下さい>返答する気のない人々 すみません、原因が解ったら書き込もうと思っていたので 返答が遅くなってしまいました 以後気をつけます。 |
よしださん 次のようなショートカットからApacheを実行してみてください. '作業フォルダ'のパスにあるドライブ名が,Perlの参照先ドライブになります. 動作を確認後にオプションを追加して,サービスとして実行させてください. リンク先: e:\usr\local\sbin\apache\Apache.exe -f e:\usr\local\etc\apache\conf\httpd.conf -s 作業フォルダ: e:\usr\local\sbin\apache # 2つとも,Apache.exeがe:\usr\local\sbin\apacheにあるとき - - - - - - - - - - - - - - - 参考になるURLをご紹介します: NTでIISやApacheのPerlの参照の設定: http://www.hi-ho.ne.jp/lina/httpd.html#apache-pl Apacheのレジストリ操作,NTサービスとしての実行など: http://www.apache.org/docs/windows.html |
Netboyさん ありがとうございます ApachとPERLのドライブを合わせる必要があったんですね、 おかげさまで思いどおりの動作をしてくれるようになりました 本当に色々とありがとうございました。 |
@68user どうもありがとうございました。 リファレンスというのを勉強しときます。 それと、こちらに来られるかもということですが、 予定を確認しておきます。 |
@よしださん > すみません、原因が解ったら書き込もうと思っていたので > 返答が遅くなってしまいました 別に1週間くらいはいいと思いますよ。「わかりました。試してみます」 と書くより、試してから結果を書こう、というタイプの人もいるでしょうから。 それ以前の人に向けていったことなので、気になさらないで下さい。 > もし単にパスが違うだけならやりようは > あります。もしそうなら再度質問して下さい。 cygwin 入れて #!/bin/sh で振り分け、とか言わなくてよかった (笑) @has > リファレンスというのを勉強しときます。 赤ラクダ本には載ってません (念のため)。でもって、青ラクダ本の 説明はわかりにくいです。ちなみに $hoge{fuga}{ura} ってのも 実はリファレンスです。 > 予定を確認しておきます。 いや、いつ行くかも未定なので、いつも通りに過ごしてて下さい。 雨降ったら行けないし :-) |
>あと、回答してもらっても返答する気がないなら、最初から >書き込まないで下さい>返答する気のない人々 ・・・すみません。 以前、telnetで30個ほど繋げたら、フリーズしてしまったので、 perlで繋げる方法を考えつつ、先に進んでいないのと、まだ、 bugの原因が不明(というか、お手上げに近い)ので、返事できない 状態でした。 返答が遅れてすみません。 |
へにかさんに向けて言ったのでもありません :-) |
ご無沙汰しております、以前にお世話になったyujiです。(^^) 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと 考えているのですが、この場合、どういった部分を変更すべき なのでしょうか? 自分で調べてみたところ、 http://www.goof.com/pcg/index.html に、Pentium用パッチ(pgcc)があるのですが、 gccが現在2.7.2.1でして。(^^; portsコレクションを探してみたのですが、 pgcc2.95.1のものがあるみたいですが、 プルダウンメニューが3.0以上のみになっています。 PGCCは、EGCSのパッチということで、 2.7.2.1のような古いバージョンには、 使えないのかもしれませんが。(^^; FreeBSD 2.2.8-RELEASEを用いて、 マシンの能力を最大限に引き出す方法はなにかありませんでしょうか? どうぞよろしくお願いします。 |
お返事ありがとうございました。 >> su: +++: No such file or directory >むぅ…多分無理だと思います。一旦 shutdown して >シングルユーザモードで再起動するしかないので >2万円コースだと思います。 管理会社に連絡したところ、今回のように原因がはっきりしていて復旧が容易な場合は1万円だそうです。まあ仕方がないと思います。これからはもっと慎重に作業をしなければ……。 |
携帯電話に対してこちらの電話番号を表示しないためにはどうすればいいですか? |
perlでのサブルーチンの質問です。 お願いします。 #!/usr/local/bin/perl $Z = 1; &abc(); print "$Z$Y"; sub abc{ &A(); &B(); &C(); } sub A{ if($Z == 1){ $Z = $Z + 1; &C(); } } sub B{ $Z = $Z + 5 ; } sub C{ $Y = "!"; } こんなカンジなのですが結果を"2!"になるようにしたいのですが どうすればよろしいでしょうか? このまま実行すると"7!"になってしまいます。 教えてください。 |
@yujiさん > 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと > 考えているのですが すみませんが、http://www.jp.FreeBSD.org/search.html#doc で キーワード pgcc で検索する、以上の情報はわかりません。 cvsweb で ports/lang/pgcc を見ると、2.2.8 時代は (pgcc 側の) gcc->egcs の切り替え時期なようで、その時代の gcc 対応 pgcc は ないと思います。最新の egcs を入れて pgcc パッチを当てるのは ダメかなぁ。いろんなところではまりそうですけど。 # あ、最近のは a.out 形式吐けないんだっけ。 @STさん > これからはもっと慎重に作業をしなければ……。 telnet 2つ開いて、片方はつなぎっぱなしにして いつでも /etc/master.passwd を修正できるようにしておくとよかったですね。 @mmさん # biglobe な mm さんとは別の mm さんですか? > 結果を"2!"になるようにしたいのですがどうすればよろしいでしょうか? sub B{ $Z = $Z + 5 ; } の部分で $Z==7 になってほしい、でも &B から戻ると $Z==2 としたい、 ということなら、呼び出し側で &B($Z) として引数を渡して sub B{ my ($abc)=@_; $abc = $abc + 5 ; } とか ($abc は $Z としても同じ)、単順に変数名を変えて sub B{ $X = $Z + 5 ; } とか、って感じでいいですか。 望んでる答えじゃないかもしれないけど、なぜ 2! にしたいのか、 &A と &B ではどういう違いがあるのかを説明してもらわないと、 これ以上はなんとも言えません。 |
私にも意味が分からないので、別人かと思われます。 ひょっとして、sub A {...} 中で &C(); を呼び出したら、 sub abc{...} 中の &C(); に帰って来る、と誤解されてるとか…? # goto &NAME に関係あるのかとも思ったけど… |
># biglobe な mm さんとは別の mm さんですか? mm@biglobeさん、失礼しました。 説明不足ですみませんでした。 sub A の処理で $Z == 1 の場合sub C へ行きたいのです。 その後、sub B へは行かずに処理を終了させたいのですが、、、 |
もしかして #!/usr/local/bin/perl $Z=1;&abc;print "$Z$Y"; sub abc{ if (!&A){ &B; } &C; } sub A{ if ($Z==1){ $Z++;return 1; } 0; } sub B{ $Z+=5; } sub C{ $Y="!"; } な感じですか...? 文章のままだと sub abc{ if (!&A){ &B;&C; }} sub A{ if ($Z==1){ $Z++;&C;return 1; } 0; } な感じです.関数の戻り値を使わないなら sub abc{ &A; if ($Z!=2){ &B; } &C; } sub A{ if ($Z==1){ $Z++; }} 延々と続きそうですね.こんな話題じゃ無さそうな気も... |