|
ども、おひさしぶりです。 お元気でしょうか? 私は相変わらずです。(^_^; 何度もここで色々聞こうと思っては思いとどまり何とか自分で解決してきたんですが、 とうとういきずまりました...。 データのチェックで foreach $line (@lines) { ($a,$b,$c,$d) = split(/\,/,$line); if ($d ne '') { $dd++; } } とした時の @line の値(?)が 22,,55, 23,1,25, というような時、$dd に+1されてしまいます。 本当は何か値が入っていたら+1したいのです。 なんとなく「22,,55,(改行)」となっていて $d ne '' で改行が判断できないからかなと思うのですが...。 そんなモノなんでしょうか? $d ne '' ではないなら式はどうなるのでしょう? なんか解りにくくてすみません。 説明下手なんですが...そこを何とか...。(-_-; |
|
> とやるだけで全ての***.log、***.datファイルが見れなくなります。 どうもです。本当は *.log というファイルだけではなく、 /~j5306050/log/ 以下を見られないようにしたいんです。 <directory /home/95s/j5306050/public_html/log/> deny from all </directory> とか <location /~j5306050/log/> deny from all </location> などと書いても、 500 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. になっちゃうんで、仕方なくああいう風にしました。 これって書き方間違ってるんでしょうか? あと、試しているうちに、 <files browser.log> deny from all </files> と書いても、/~j5306050/log/browser.log は見ることができるのに気がつきました。 ずっと誰かに見られてたかも…(^^; <files log/browser.log> だとうまくいきましたけど。 > というような時、$dd に+1されてしまいます。 おそらく$lineの最後に改行コードが付いているからだと思いますので、 foreach $line (@lines) { chop $line; とするか、 if ( $d =~ m/\d/) { $dd++; } と、$dに数字が入っているかどうかを調べてはどうでしょう。ちょっと変ですけど、 if ( $d ne "\n" ) { $dd++; } もアリかも。 |
|
なるほど(?)、ありがとうございます! Perl の専門書を買わないと駄目ですね...、コマンド(?)が全然解らない...。 唯一理解できたのが、 if ( $d ne "\n" ) { $dd++; } ですが...、そっか! 改行コードって \n でしたね...、普段使ってるのにすっかり忘れてました...。 また勉強してきます!! |