|
> Windows で mkdir が失敗するとは初耳ですが、本当でしょうか? > どういう風に書いてるんですか? 申し訳ありません、気を取り直してもう一度試してみるとうまくいきました(^^; と言うかmkdirで失敗する現象が再現しません。 またWindowsのファジーさにやられた気がする・・・ お騒がせしました。 一応、 mkdir "./dir", 0604; と言う感じで書いてます。 以前はエラーメッセージは出ないものの、ディレクトリが作成されていない と言うような状況でした。 > それはそれとして、perl5 なら深い階層のディレクトリを > 一発で mkdir してくれる File::Path という標準モジュールが おぉ、見てみます。 ありがとうございます。 と、言うわけで、失礼しました。 |
|
先日はジンソクな対応ありがとうございました。 grep について質問なのですが、analog で apache のログを解析するとき /member/ 以下が邪魔なので grep などにて `/member/' の文字が入った行を 取り除きたいのです。が、マヌアルを見てもそれらしきオプションが見当たりません。 もしなにか方法があったら教えてくださいませ。 |
|
grep -v /member/ filename でいいですか? |
|
> grep -v /member/ filename あ〜〜〜〜できましたわぁ〜〜感謝感激 よく読んでなかったですね… ありがとうございましたー |
|
はじめまして。 「他では役に立たないスクリプト&ファイル」のうち、 nslookup.cgiは、他の方のものと比べ複数入力が可能な点でいいなと思い、 何とかこちらの環境でも使えるように試行錯誤したのですが、 結果表示の際に「ホスト名」「IPアドレス」と表示されるべき部分が、 うまく表示できません(ナカグロ=黒点になる→文字化け?)。 実質的な実りの部分は全然問題ないのですが。 ソース中、put_data のサブルチに渡している引数だと思いますが、 $desc のローカル変数部分の文字化けが絡むのでしょうか。 Windowsの環境でメモ帳などでつくるため、nkfのオプションは -s に しました。nkfより遅いと言われる jcode.pl も試しましたが不発でした。 あるいはやり方(書き方)が間違っているのでしょうか、 何かアドバイスをいただければ幸いです。 |
|
> 結果表示の際に「ホスト名」「IPアドレス」と表示されるべき > 部分が、うまく表示できません 余計な部分をどんどんコメントアウトしていって、 実質 print "ホスト名\nIPアドレス" だけのスクリプトに しても化けますか? またヘッダを Content-type: text/html; charset=Shift_JIS Content-type: text/html; charset=ISO-2022-JP などと出力して、ブラウザに明示的に文字コードを伝えても ダメですか? それでもダメならソースそのものを見せて下さい。 # どこかにそのまま置いてもらえると、文字コードなどが # わかるので調べやすいです。 > $desc のローカル変数部分の文字化けが絡むのでしょうか。 ということはないと思います。 > Windowsの環境でメモ帳などでつくるため、nkfのオプションは > -s にしました。 nkf は、CGI の出力を JIS にするために使っているだけです。 ・スクリプトを SJIS にして、出力も SJIS ・スクリプトを EUC にして、出力も EUC などという場合は、nkf は不要です。 |
|
はじめまして、yujiといいます。 たびたび参考にさせていただいています。(^^) アクセス状況チェックでは、1時間おきに更新されていますが、 これは、どのようにして定期的にプログラムを 実行させているのでしょうか? サーバー上では、cronが利用できると思うのですが、 プロバイダのほうで提供されてたりするのでしょうか。 それとも他のサーバー上で実行されているのでしょうか。 あと、linux上でPerlを書いているのですが、 LANカードとPPP接続を行った場合に、gethostbyname, inet_ntoa(inet_aton())のどちらを使ってもLANカードの アドレスが取得されてしまうのですが、 PPP接続のアドレスを取得する方法というのは、なにか ありますでしょうか? ifconfigでpppの部分だけ切り出そうかとも思ったのですが、 exec('ifconfig''); の出力をどうやって拾うのかがわかりません。(^^; なにかアドバイスなどありましたら、どうぞよろしくお願いします。 |
|
> アクセス状況チェックでは、1時間おきに更新されていますが、 cron でやってます。 http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/.crontab のようなファイルを % crontab ~/.crontab として設定します。 > LANカードのアドレスが取得されてしまうのですが、 外部にソケットで接続して、getsockname で取得できるませんか? (試してません) > exec('ifconfig''); Linux の ifconfig がどういう出力をするのかわからないのですが、 open(IN,"ifconfig |"); while (<IN>){ if ( m/ppp.*(\d+\.\d+\.\d+\.\d+\)/ ){ $ip = $1; } } close(IN); という感じでしょうか。 |
|
お返事、どうもです。(^^) そうなんですか。>cron ちなみに、cronは、 どこのプロバイダでも利用できるものなんでしょうか? telnetができるところなどに限定されるんでしょうか。 >%crontab ~/.crontab 外部に接続すると、そのソケットのアドレスは、 グローバルなIPアドレスでないと困りますから、 それをgetsocknameで取得するということですよね。 ばっちりでした。(^^) Linuxのifconfigは、 (略 lo eth0など) ppp0 Link encap:Point-to-Point Protocol inet addr:*.*.* P-t-P:*.*.*.* (略) のようなカタチでして、水平タブなどを取り除いて、 .*?の最小マッチングを試してみたところ、取得できました。 外部コマンドの出力は、パイプを利用して取得すると。(メモメモ) 長くなってすいません。(^^; 今後とも、どうぞよろしくお願いします。 |
|
> ちなみに、cronは、どこのプロバイダでも利用できるものなんでしょうか? 普通の UNIX なら、おそらく使えます。ただし、 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=73 のように、cron を使えないようにしているプロバイダもあります。なお、 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=74 では、ソースをコンパイルすれば使えるかのような発言をしてますが、 ソースをコンパイルしても無理です。 # /var/cron をいじるために、root の権限で suid を # 立てなければいけないので。 > telnetができるところなどに限定されるんでしょうか。 そう思って下さい。crontab コマンド自体が使えるなら CGI や ~/.forward 経由でできるかもしれませんが、管理者に断らず 勝手にやるのはお勧めしません。 # CGI が nobody 権限で動いているサーバなら、nobody 権限で # cron のデータが設定されるわけで。 |
|
unixで、sqlファイルを開き、中のコードを見れる状態にしただけでは、 書きこみモードにしない限り、 SQL文の書きこみ、変更はできないようになっているのでしょうか? |
|
HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、 立ち上がらない現象が発生しています。 ついては、CD-ROMからブートして上記HDをfsckに掛ける必要があるかと 思われますが。 そこで、実際にどのメディアを使い、どのような操作をすべきか 教えて下さい! |
|
> ブラウザに明示的に文字コードを伝えても > ダメですか? それでもダメならソースそのものを見せて下さい。 > # どこかにそのまま置いてもらえると、文字コードなどが > # わかるので調べやすいです。 ヘッダ対策はしてたのですが。 ご迷惑をおかけしますが、ソースをアップしてみましたので、 ご覧いただけますか。 http://www.hatsumei.psiweb.com/IPconvert_3.cgi.txt > nkf は、CGI の出力を JIS にするために使っているだけです。 > ・スクリプトを SJIS にして、出力も SJIS > ・スクリプトを EUC にして、出力も EUC > などという場合は、nkf は不要です。 知識不足でお恥ずかしいです。勉強になりました。 |
|
すいません。アドレス間違えました。 正 → http://www.hatsumei.ab.psiweb.com/IPconvert_3.cgi.txt |
|
http://www.wakusei.ne.jp/twn/lng/red/wwwlng.cgi?show+200005/00050026.txt と同じですかね。SJIS の全角空白の2バイト目が @ のコードと同じなので、 print " $desc = $after<br>\n"; で化けているんでしょう。例えば、SJIS で @a=(1,2,3); print " a"; とすると、@a と書いてないのに 1 2 3 と表示されるはずです。 対策としては、スクリプトを EUC にするか、 print ' '; # 全角空白2つ print "$desc = $after<br>\n"; がお手軽でしょうか。 > HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、 > SQL文の書きこみ、変更はできないようになっているのでしょうか? HP-UX も SQL も使ったことがないので わからないです。 |
|
68user様。 やはり文字化けでしたか、ありがとうございました。 SJIS での一部の漢字と @ の文字化けは知ってましたが、 全角空白2つでも化けるとは知りませんでした。 教えていただいた「対策」もいいと思いましたが、 print " \ $desc = $after<br>\n"; と、全角空白の一つ目と二つ目の間に、 エスケープ用にメタキャラクタ \ を置いてみると ソース的にすっきりするかなと思い、 やってみたらこれでうまく表示されました。 いやぁ、とほほさんのところも覗いてきましたが、 漢字コードひとつとっても、奥深いですね。 ほんとにお世話になりました。ありがとうございました。 |
|
別に全角空白が2個だからまずいわけではなく、 \x81 @ $ d e s c となるので、@$desc という配列 (シンボリックリファレンス) を表示しようとしているのでしょうから、 > 全角空白の一つ目と二つ目の間に、エスケープ用に > メタキャラクタ \ を置いてみると で本当にうまくいくのか疑問です。確かでしょうか? それとも jperl だからうまくいく、ということでしょうか。 なお、FreeBSD+perl5.00503 では $desc = 'abc'; print " \ $desc\n"; ではダメでした。 |