|
僕の回答を再掲します。 > OS 名と、Netscape をどうやってインストールしたか ちゃんと読んでますか? あと、原因の切り分けを行ってください。~/.Xdefaults の 各行をコメントアウト (リソースのコメント開始は `!' ) して動けば、原因はリソースなんでしょう。rm -rf ~/.netscape して動けば、原因は netscape の設定ファイルがおかしくなって しまったんでしょう。 |
|
> TCP データグラム TCP セグメントでした。 |
|
どうも、ご無沙汰しております、yujiです。(^^) 今、指定されたディレクトリ以下のファイル一覧を表示させたい、 と考えているのですが、再帰関数を使った場合、 ファイルハンドルがグローバルのため、値の上書きになって しまい、うまくいかないようです。ローカルなファイルハンドルというのは、できるんでしょうか?myやlocalで試してはみたのですが。(^^; なにかよい方法は、ないでしょうか。 また、$home/$fileのカタチで出力する場合、どのようにするのがよいでしょうか? "$home/$file"とすると、/$で変数ではなく文字として解釈されると 思うのですが。"$home/".$fileとして逃げたりしているんですが。(^^; こちらのほうでも、別の方法などありましたら、よろしくお願いします。 #!/usr/bin/perl GetFiles("."); exit(0); sub GetFiles(){ local($dir)=@_; print "In $dir\n"; opendir(DIR,$dir); while($file=readdir(DIR)){ if(-d $file && $file ne '.' && $file ne '..'){ &GetFiles($file); }else{ if($file ne '.' && $file ne '..'){print "$file\n";} } } close(DIR); } |
|
@68user様 ご回答、ありがとうございました。 もう少しTCP/IPについて勉強してみます。 |
|
local(*DIR); とします。なお、ハンドル DIR だけでなく $DIR も @DIR も %DIR も 全て localize されます。あるいは $handle = 'unique string'; opendir($handle,'.'); とか。あと、こういう疑問が出てくるなら、 http://www.oreilly.co.jp/BOOK/adperl/ をお勧めしておきます。 > "$home/$file"とすると、/$で変数ではなく文字として解釈される /$ でも問題ないです。\$ と勘違いされてませんか? |
|
すばやいお返事、どうもありがとうございました。 おかげさまで、うまくいきました。(^^) 書籍の情報、参考にさせていただきますので。 そうですね。すいません。(^^; >勘違い スラッシュとバックスラッシュを使っていまして。 FTPで、指定したディレクトリ以下を決まった時間に、 指定したFTPサーバーのディレクトリに、自動的にアップロードするスクリプトを 作成していまして。これで次のステップに進めそうです。(^^) 今後とも、どうぞよろしくお願いします。 #!/usr/bin/perl GetFiles("."); exit(0); sub GetFiles(){ local($dir)=@_; local(*DIR); local($file); print "In $dir\n";#ディレクトリの作成などに。 opendir(DIR,$dir); while($file=readdir(DIR)){ if(-d "$dir/$file" && $file ne '.' && $file ne '..'){ &GetFiles("$dir/$file"); }else{ if($file ne '.' && $file ne '..'){print "$file\n";}#ファイルごとの処理 } } close(DIR); } |
|
近況報告ですが、回線が専用線になりまして。(^^) 今後は、apache+php+データベースに取り組んでいきたいと考えております。 Xt、おもしろいですよね。以前、ちょっとだけ取り組みました。 ディレクトリには、1個以上のファイルが含まれることが 多いですから、こっちのほうがスマートでしたね。(^^; それでは、また。 #!/usr/bin/perl GetFiles("."); exit(0); sub GetFiles(){ local($dir)=@_; local(*DIR); local($file); print "In $dir\n"; opendir(DIR,$dir); while($file=readdir(DIR)){ if(-d "$dir/$file"){ if($file ne '.' && $file ne '..'){ &GetFiles("$dir/$file"); } }else{ print "$file\n"; } } close(DIR); } |
|
御回答ありがとうございます。 ちなみに僕の使っているOSはSunOS 5.6で、 Netscape はバージョン4.7です。 HTTP/FTP クライアントについては、 ネットワークプログラミングの基礎知識で今勉強中なのですが、 ftp の ascii モードと binary モード というのがなんなのか良く解りません。 .netscape/ については less で覗いてみて、 bookmarks.html は、ブックマークに登録してあるもの、 history.list は、 URLを入力する所の右の下向き矢印をクリックすると表れるURL一覧、 preferences.js は、設定ファイルだと思うのですが、 plugin-list 、plugin-list.BAK については解りません。 その他のファイルについては、見ようとすると "ファイル名" may be a binary file. See it anyway? という表示が出てきて、yesと答えても意味の解らないものが出てくるだけでした。 netscapeのキャッシュの事に関しては、 ls -lud 99/ と入力すると、99/ディレクトリにアクセスされていましたが、 その99/ディレクトリの中のファイルに関して、そのコマンドを入力すると、 アクセスされていませんでした。 これって、だめなのでしょうか? あと、umask というコマンドについてなのですが、 ファイル、ディレクトリ作成時に、 ファイルのパーミッションを -rw------- ディレクトリのパーミッションを drwx------ としておきたく、umask の値を変更したいのです。 umask が0の時のパーミッションは、 ファイルが -rw-rw-rw- で、 ディレクトリが drwxrwsrwx なのです。 groupの部分に s の表示があるため、umask 2067 としたらうまくいかないので、umask 77 としたら、 ディレクトリのパーミッションは drwx--l--- となりました。 groupの l も消すようにしたいのですが、どうしたらいいですか? |