トップページ⇒php
981コメント366KB

【Perl 】初心者コーナーPart6

■ このスレッドは過去ログ倉庫に格納されています
0001undefさん2001/07/26(木) 00:40ID:???
初めて来た方、初心者はまずこのスレッドから始めよう。
尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0701名無しさん@お腹いっぱい。01/08/27 16:48ID:r2JsPnN.
>>696
ネタですか?スコープ、局所化、my、localって言葉について
全部調べた後だったら、僕も一緒に考えてもイイ。
0702名無しさん@お腹いっぱい。01/08/27 17:03ID:arNi4VjY
>>696
$hogeがアスキーオンリーだったというオチは無しな
0703名無しさん@お腹いっぱい。01/08/28 04:34ID:Y9HJU1Vk
readonlyなファイルについても、排他処理をしておくべきでしょうか?

読み書きが同時に起こることはないから、いらないのかなという気も
するのですが、どうなのでしょうか。
0704名無しさん@お腹いっぱい。01/08/28 04:52ID:18vpKowI
>703
りーどおんりーなら必要なし。
追加おんりーも必要なし。
0705名無しさん@お腹いっぱい。01/08/28 07:10ID:YMgWxGD6
>>704
> 追加おんりーも必要なし。
嘘教えるのはやめてください。
追加がほぼ同時に起こったら両方の追加分が混ざってしまいます。
たとえ追加がprint文一個だけだったしても、内部的には
一回じゃない可能性があります。
0706名無しさん@お腹いっぱい。01/08/28 12:45ID:/J/VCZIY
最低限ちゃんとsyswrite使えと書いとくべきだよな
0707名無しさん@お腹いっぱい。01/08/28 16:16ID:83R3Dqbo
めちゃくちゃ初心者なのですが・・・
perlの場合は、
main:
my($hensu,
@hensu
);
見たく一々指定しなくてはならないのでしょうか?

PHPみたくそのままいきなり変数を指定できないのでしょうか?
0708名無しさん@お腹いっぱい。01/08/28 16:29ID:vRwY8t2k
指定するのが好ましいです。
0709名無しさん@お腹いっぱい。01/08/28 16:50ID:83R3Dqbo
>>708
そうなんですか?
そうなると、サブルーチンで使う変数も一々グローバル変数として
指定しなきゃいけないことになりますよね?
たくさん、変数を使う時かなりソースが長くなっちゃいますね(^^;;
0710名無しさん@お腹いっぱい。01/08/28 17:13ID:S6hb/fHc
なんでグローバル変数として宣言するんだよ。
my $hoge;
でローカル変数になるだろが。
0711名無しさん@お腹いっぱい。01/08/28 17:21ID:83R3Dqbo
>>710
いやいや・・ちょっと文章おかしかったです(^^;
同じ変数がローカルとサブルーチンに1つずつあると
エラーが起こるから、一々、ローカルでサブルーチンで使う変数を
変数指定するのもおかしいかなと思ってみただけです。
自分は、サブルーチン時に「@_」を使ってないのでそのまま引数を
ローカルの変数として呼び出してるやり方をしているもので・・・(−−;;
0712名無しさん@お腹いっぱい。01/08/28 17:41ID:83R3Dqbo
あっ!あとあと、
type="HIDDEN" NAME="hoge"で次のページにわたる時
一々
&ReadParse(\%cgi_data);で呼んで
$hoge = $cgi_data{'hoge'};
って記入しないといけないのでしょうか?
0713名無しさん@お腹いっぱい。01/08/28 17:45ID:2OCyfEBQ
んなこたぁない
0714名無しさん@お腹いっぱい。01/08/28 18:00ID:83R3Dqbo
>>713
&ReadParse(\%cgi_data)以外の
やり方教えてください!!m(_ _;)m
0715名無しさん@お腹いっぱい。01/08/28 18:02ID:83R3Dqbo
test
0716名無しさん@お腹いっぱい。01/08/28 18:11ID:vRwY8t2k
結局何がしたいんだよ
0717名無しさん@お腹いっぱい。01/08/28 18:15ID:83R3Dqbo
>>716
sageの練習だったんです。
すみません。
071871601/08/28 18:24ID:ucUrq.A6
714 について聞いているんだが
0719名無しさん@お腹いっぱい。01/08/28 18:36ID:83R3Dqbo
>>718
>>712を読んでいただければ意味がわかると思います。
ようするに、PHPみたく次のページで即変数として扱えないのか?
と言う質問を問い掛けたのです。宜しくお願いします。
0720名無しさん@お腹いっぱい。01/08/28 18:43ID:KihuaPf6
cgi-lib.pl 以外でって事?

他は CGI.pmかCGI_Lite.pmを使うぐらいしか知らん。

使い方は

perldoc CGI

perldoc CGI_Lite

で

特別な記述せずに<input ... name="hoge" ... > からのデータを $hoge に
入れるのは不可能。(たぶん)
0721名無しさん@お腹いっぱい。01/08/28 19:22ID:83R3Dqbo
>>720
やっぱり、cgi-lib以外でやる人は少ないって事なのですね(^^;
無難に、クエリーが渡ってきたら、素直に、ReadParseした方宜しいって事ですね
そうなると、perlはPHPと違って多少面倒なんですね。
0722名無しさん@お腹いっぱい。01/08/28 19:48ID:NdGnBYkE
>>721
cgi-lib.plなんて使ってる人のほうが少ない。
普通はCGI.pmですが何か。
0723名無しさん@お腹いっぱい。01/08/28 21:21ID:AucphgNo
配布CGIは自前でデコードが殆ど。
072470301/08/29 01:50ID:1LK7qRnY
>>704-706
 ありがとうございます。syswriteについても調べてみることにします。

 ところで、readonlyの場合でも、そのファイルをFTPでアップロード中に、
読み込みとかが起こったりすると、大変なことになったりするのでしょうか?
072572501/08/29 02:28ID:nriXNhX6
あのぅ、厨な質問で恐縮なんですが、

連想配列を使うときもmyで、「俺のもの宣言」
しなくちゃならないのでしょうか?
そのときは

my %SAMPLE;

で一括で指定できるのでしょうか?
それとも、要素ごとに

my $SAMPLE{'title'} = 'コニーチワ';

みたいにしてやんなくちゃならないのでしょうか?
0726>72501/08/29 02:33ID:TrXIg0dU
>連想配列を使うときもmyで、「俺のもの宣言」しなくちゃならないのでしょうか?
できる状況ならそうした方がいいかもっす。
>my %SAMPLE;
>で一括で指定できるのでしょうか?
それでOKっす。個別にmyをくっつける必要はないっす。
0727 01/08/29 06:56ID:LMKe3GJU
my %SAMP = (title => 'コニーチワ',
      name => 'チンチン',
      tel => '03-110'
      );
0728名無しさん@お腹いっぱい。01/08/29 09:23ID:GqMg69L.
ハッシュの要素一つだけをローカル宣言する時はlocal()な
0729 ◆skperlJw 01/08/29 09:38ID:TVOCf1T2
トリップにperlと出るパス

◆FhPerLNE : #336764
◆peRlrNR6 : #585435
◆YITpeRLI : #716717
◆1pERlT4I : #937918
◆2PerLxhc : #1339723
◆PerLxUgU : #2083790
◆p2RPERLo : #2906193
◆pErlw4Uo : #3303125
0730725(ID違うけど...)01/08/29 09:39ID:7qWdlnWQ
みなさん、ありがとうっす。
それでやってみるっす。
0731名無しさん@お腹いっぱい。01/08/29 10:14ID:ZDWORICM
すみません。今UNIXのマシンでディレクトリの内容を見てみよう!みたいな
プログラムを書いてるんですけど

#!/usr/bin/perl

$basedir = "/home/hoge";
opendir(RD,"$basedir") or die;
@dircontent = readdir(RD);
foreach $file_or_dir(@dircontent){
if(-d $file_or_dir){
push(@dirs,$file_or_dir);
}else{
push(@files,$file_or_dir);
}
}

に書いて中身がディレクトリかファイルかを分けてるんですが、
'.'と'..'が@dirsに入ってその他のディレクトリとかファイルは@filesの
方に入ってしまうんですがどうしてかわからないので教えていただけますか?
よろしくおねがいします。
0732名無しさん@お腹いっぱい。01/08/29 10:30ID:J55zYnlg
perlっていろんなバージョンがあるんですか?
WinとLinux両方でやりたいのですが
これから始めるとしたらどのバージョンがおすすめですか?
0733名無しさん@お腹いっぱい。01/08/29 10:43ID:2tzh7XAw
>>731
> '.'と'..'が@dirsに入ってその他のディレクトリとかファイルは@filesの
> 方に入ってしまうんですがどうしてかわからないので教えていただけますか?

if(-d "$basedir/$file_or_dir"){
...
ね。みんなよくやる失敗だYO!
0734名無しさん@お腹いっぱい。 01/08/29 10:48ID:kt3pSaeg
んなこたぁ無い   ってのは無しの方向ですか?  (^^;
0735名無しさん@お腹いっぱい。01/08/29 10:49ID:kt3pSaeg
はぅ スラッシュか。。。 ^^
073673101/08/29 11:01ID:qLYLxYkc
>733さん
ありがとうございます。できました。。

そかぁ〜絶対パス(?)指定してあげないといけないんですね。。
初歩的ミスでした。。また何かありましたらよろしくおねがいします。
073772501/08/29 11:43ID:7qWdlnWQ
スミマセン、お礼したばかりなのですが、
もう一つご教授ください。

プリントをするとき、

print << "_END_";
コニーチワ
コバーンワ
オハーヨ
_END_

てな具合で書くことができますよね?
そこでなんですが、変数に代入するときも
同じ様な技が使えるのでしょうか?

$aisatsu << "_EOF_";
コニーチワ
コバーンワ
オハーヨ
_EOF_

てな感じでOKなのでしょうか?
0738名無しさん@お腹いっぱい。01/08/29 11:47ID:9WjD.Pdc
$aisatsu =<< "_EOF_";
.
.
.
_EOF_
イコールが要る
073972501/08/29 11:54ID:7qWdlnWQ
即レスありがとうございます。さすが2ちゃん...早い。
なるほど、なるほど。イコールがいるのですね。
うむ、勉強になります。

イコールがいるってことは演算子が使えるってことですよね?

そしたら、

$aisatsu .=<< "_EOF_";
アローハ
_EOF_

って書けば$aisatsuっていう変数に追記されるって
ことなのでしょうか。
0740名無しさん@お腹いっぱい。01/08/29 11:59ID:r10mk.nk
されます
0741名無しさん@お腹いっぱい。01/08/29 12:13ID:HC/LQDQA
>>739
つーか、テメーで試してから聞けよ。
0742名無しさん@お腹いっぱい。01/08/29 13:03ID:2tzh7XAw
つーか << の後にスペース入れちゃいけない、って思い込んでた
鬱だしのう
074372501/08/29 13:28ID:7qWdlnWQ
>>740-742

うまくいきました。
ありがとうございました!
0744There's More Than One Way To Do It.01/08/29 18:09ID:dbdeNPaQ
$_ = <<;
WEBプログラム

#↑が空行である点に注意。
これでもOK。(推奨されない)

<< を使わなくても、
$_ = "
WEBプログラム
";
これでもOK。
0745やりかたがいっぱいあるってのなら01/08/29 19:15ID:l6kwWt.M
CGIを良く書く我としては
$mona = qq{<FONT size="-1" color="#ff0000">
逝ってよし
</FONT>
};
print $mona;
なんてよくやる。
0746教えてさん01/08/29 21:04ID:xjxFODrs
会社のホームページに日誌を載せているんですけど
出先から会社のホームページを書き換えたり出来るんでしょうか?
0747名無しさん@お腹いっぱい。01/08/29 21:09ID:BzSzcky6
Web製作板でFTPの使い方を覚えましょう。
http://natto.2ch.net/hp/index2.html
Perlとは全く関係ないでしょ?
0748教えてさん01/08/29 21:14ID:ASEY3DfQ
ごめんなさい!
074972501/08/30 00:39ID:1xnqMYr2
>>744-745

目からうろっこっす!
そんな方法もあるのですね。
075072501/08/30 02:34ID:1xnqMYr2
スミマセン、度々。

local(@pairs) = split(/;/,$cookies);
てな感じでクッキーを分割しようとすると
perl -w でチェックしたとき

Use of uninitialized value in split at toarubbs.cgi line 411.

という警告が出ます。調べてみたのですが、どこが狂っているの
か皆目分かりません。一応通ってはいるみたいなのですが...

ご教授くださいまし。

# これだけの情報では分からないでしょうか?
0751JAPU@うぐぅ01/08/30 02:38ID:c4jBSiHQ
$cookies が undef (未定義) じゃないの?

事前に
$cookies = "" if not defined $cookies;
とかしておけば OK かも。:)

# undef と "" は異なります。
0752名無しさん01/08/30 04:54ID:zTjKOAyE
こういう事を実現する方法は無いでしょうか…。

$log ? print LOG <<EOF : print <<EOF;

ヒアドキュメントで…

EOF
0753名無しさん@お腹いっぱい。01/08/30 05:18ID:7tv.uuPE
>>752

$log ? print LOG <<EOF : print <<EOF;
ログあり
EOF
ログなし
EOF

# ↓個人的推奨

print length $log ? <<EX : <<NEX;
ログあり
EX
ログなし
NEX
075475201/08/30 05:48ID:zTjKOAyE
>>753
回答の通りやってみたら出来ました。そこまで思い付きませんでした…。
推奨の方を頭に入れます。ありがとうございました。
0755>75201/08/30 06:20ID:vlPtsTzA
どちらの場合も同じ内容を出力するというのであれば、
select LOG if $log;
print <<EOF;

....

EOF
select STDOUT if $log;
なんてのもアリですね。
075672501/08/30 11:02ID:pcbOuQ4U
>>751

うわ、JAPUさんだ、こんにちは。
すみません、前の行で

local($cookies) = $ENV{'HTTP_COOKIE'};

として、環境変数からクッキーを呼び出しています。
これでは$cookiesを定義したことにならないのでしょうか。
JAPUさんの教えてくださった方法でちと試してみます。
ありがとうございました。m(_ _)m
0757名無しさん@お腹いっぱい。01/08/30 11:08ID:vj7AVUwU
>>756
local が気になる。
0758名無しさん@お腹いっぱい。01/08/30 11:28ID:zG.eoWl.
すみません。とあるプログラムを見ていてわからない部分があるので
教えてください。ファイルテストしているところで
opendir(D,$dir)or dir;
$path=readdir(D);
if(-f $path){
処理
}elseif(-d _){
処理
}
の「_」の部分なんですが意味がわからないで教えてください。
本には最後のstatないしlstatの結果を参照って書いてあるんですけど
これってどんな意味なんでしょうか?直前(最後)ファイルテストをした物
と同じって意味でいいんでしょうか?(この場合$pathと同じってこと)
よくわからないので教えてください
0759名無しさん@お腹いっぱい。01/08/30 11:57ID:3TFNK/cI
>>758
$pathと同じです。
直前に実行したファイルテスト演算子の結果はキャッシュされるので、
もう一度 (-d $path) とするより効率がよくなります。
0760名無しさん@お腹いっぱい。01/08/30 12:52ID:psLhnlnE
>759さん
ありがとうございます。モヤモヤが解決しました!!
0761名無しさん@お腹いっぱい。01/08/30 13:00ID:5rfMNbvM
質問です
『現在の日付』と『入力した日付 例)2000-8-30』を比較し今現在の時間より未来だったら
エラーと表示したいのですが、ソースが全然わかりません。
今日の日付を取得するのはわかるのですが・・・

my ($sec, $min, $hour, $day, $mon, $year, $wdy, $yday, $isdst) = localtime(time);
$year += 1900;
$mon++;

print "ただいま$year年$mon月$day日 $hour時$min分$sec秒\n";
exit;

それと比較する方法がわかりません・・
誰かおしえてよ
0762名無しさん@お腹いっぱい。01/08/30 13:46ID:9ojiLY2w
>>761

sub is_future {
my ($b_year, $b_month, $b_day) = split /-/, shift;

require Time::Local;
return time < Time::Local::timelocal(0, 0, 0, $b_day, --$b_month, $b_year -= 1900);
}

foreach my $test_data (qw(
2000-8-30
2001-8-29
2001-8-30
2001-8-31
2001-9-1
)) { print $test_data; print ": エラー" if is_future($test_data); print "\n" }
0763JAPU01/08/30 13:51ID:c4jBSiHQ
>>756
変数は
・任意の文字列 (数字としても扱うことができる)
・リファレンス
・未定義 (undef)
のどれかをとる (他にあったっけ? 識者の補足をきぼーん) ので、
local($cookies) = $ENV{'HTTP_COOKIE'};
としても、$ENV{HTTP_COOKIE} が undef なら何もしない限り $cookies も undef なのです。
この場合は、
my $cookies = $ENV{HTTP_COOKIE} || "";
とするのがよいかな。
# 既に指摘がある通り、変数は可能な限り my で宣言するのが吉なりよ。
----
($iyear, $imon, $imday) = split /-/, $input_date;
$input_date = sprintf "%04d-%04d-%04d", $iyear, $imon, $imday;
$system_date = sprintf "%04d-%04d-%04d", $year, $mon, $day;
if($system_date lt $input_date) {
print "はにゃーん エラー\n";
}
0764T女の竹田01/08/30 15:03ID:UDHJh.zA
HTMLから実体参照形式Unicodeとふつうのアスキーテキストが混ざったのを
抜き出して、それからぜんぶUnicode(BE)に変換しようとしたんだけど、いい方法ないかなぁ?
$text =~ s/?(\d+);/pack('n',$1);/seg;
$text =~ s/[\x20-\x7e]/\0$&/sg;
最初↑みたいにしてやったら化けまくって、で中を見て「あ〜ばかじゃん」
と思って上下の文を逆にしてみると…さらに大惨事に…(当たり前)
工夫すればできるとは思うけど、「この正規表現で一発!」みたいなの
ないですか?
0765T女の竹田01/08/30 15:10ID:UDHJh.zA
↑あ。。
?(\d+)
は
&#(\d+)
です。。
076675201/08/30 16:56ID:FHx3lziU
>>755
わあ…。
selectの使い方、とても参考になりました。
嬉しい。遅くなりましたけど、ありがとうございます。
0767名無しさん@お腹いっぱい。01/08/30 18:02ID:KPteR7z.
質問!
掲示板を作ってるんですけど、ログファイル(bbslog.datとかuser.datとか)のファイルに
ブラウザから直接アクセス出来ないようにしたいんですけど、
みなさんどういう方法をとっていらっしゃいますか?
自分の貧困な発想で思いついたのは、ログファイルの拡張子を『cgi』にして、
Permission Deniedさせてしまうぐらいしか思いつかなかったんです(;_;)
0768名無しさん@お腹いっぱい。01/08/30 18:30ID:E9M3DAmo
それが簡単で1番良いと思う。ほとんどの環境で使えるし。
0769名無しさん@お腹いっぱい。01/08/30 18:32ID:pomXMsVA
あ、T女たんだ。。でも漏れは分かんないよ  ゴメソ

>>767
それで良いと思うよ。でもそれはスクリプト側でする事じゃ無いんで
考えなくてOK、public_htmlの外に置くとかhtaccess置くとか
デフォルトの名前を変える様にユーザーに呼びかけましょう。
それがやり易い様に変数の中に入れておくと親切かも。。。
0770名無しさん@お腹いっぱい。01/08/30 19:08ID:U7WzvMDs
URLの分解ってこれじゃダメなの?

例)http://corn.2ch.net/php/index2.htm?hogehoge=sage&....

@referer_box = split /?/,$ENV{'HTTP_REFERER'};
077176701/08/30 19:41ID:KPteR7z.
768さん、769さん、御教授ありがとうございます。
自分でも、他のディレクトリにシンボリックリンク 貼って
そこにデータ置いたりとかいろいろ四苦八苦してたんですけど、
そのやり方だと他の人に渡したときに、動かせないかもしれないので、
ここで質問させて戴いたしだいです。

やっぱり、拡張子をcgiにする方式でやってみます。
ただ、この方式だと下の問題点の方が残ってしまうんですよね。
改善される問題:ログファイル(パスワードを含む物など)を読まれる危険性がなくなる。
残っている問題:ブラウザからログファイルに直接に何度もアクセスをかけられると、
        ファイルロックされていないので、書き込みがミスってしまう。
ログファイルの名前がユーザーにばれる事は掲示板の弱点として、割り切るしか無いんでしょうか(;_;)
うぅ、長くなってごめんなさい。別に粘着レスでは無いんですー(;_;)
0772名無しさん@お腹いっぱい。01/08/30 20:06ID:TttdmJZY
条件によって出力FHを変えるなら
print { $foo ? *STDOUT : *STDERR } "HOGE\n";
っても使えるよ。

>>T女たん
perldoc -f packを見れば良いのでわ(折れは英語ダメだけど
pack 'u'とか(?)
0773名無しさん@お腹いっぱい。01/08/30 20:13ID:pomXMsVA
いや、だからそれはユーザ側の問題なんだってばさ
後はアクセス制限掛けるなりしてもらうしかないよ
cgi-bin以下の.cgi以外はwww権限で読めないサーバーとかも有るけど。。
.hthogehogeとかやっとくと結構色んなサーバーで行けそう
0774725(=756)01/08/30 21:24ID:ytEa/Jb2
なるほど、この場合、未定義になるのですね。
いやぁ、勉強になります。

みなさんおっしゃっているように、local -> myにかえてみようと
思います。いろいろありがとうございました。
0775T女の竹田01/08/30 21:54ID:FAiia3.6
自己レスですが、結局あきらめて、ループで回して前の方から切り出して、別の変数に
追加していって普通に?やりました。
最初からこうしてたらよかったかも。。こういうのって「正規表現でできるはず!!」って
思いこんでたけど、結局正規表現じゃ無理なのかな?
0776名無しさん@お腹いっぱい。01/08/31 01:18ID:0YV4ebqc

LWP::UserAgent をつかって、クッキーを受け取って、
次のリクエストでそのクッキーをちゃんと返してやるってのをやってるんですが、
受け取るまでは、出来たのですが、ちゃんと返すことが出来ません。
どうすればいいでしょうか?
cookie.txtには、ちゃんと情報は保存されています。

#!/usr/bin/perl
use LWP::UserAgent;
require HTTP::Cookies;



my $ua = LWP::UserAgent->new(cookie_jar => 1,);
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$ua->cookie_jar(HTTP::Cookies->new(file => "./cookie.txt",AutoSave => 1,));

$target = 'http://www.foo.ne.jp/';

my $req = HTTP::Request->new(GET => "$target");
$res = $ua->request($req);
if ($res->is_success) {
print $res->content;
} else {
print $res->status_line;
}
0777名無しさん@お腹いっぱい。01/08/31 02:22ID:15D5/wj6
デリミタで質問。
みなさん、ログファイルに記録するのにデリミタは何にしてますか?
おいらは、\376で区切ってます。
0778名無しさん@お腹いっぱい。01/08/31 02:43ID:f1g.yh7k
いきなりですが、CGI設置者のftpソフトのお勧めを教えてください
0779名無しさん@お腹いっぱい。01/08/31 02:47ID:15D5/wj6
>>778
lftp
0780JAPU@腰が痛い...01/08/31 06:33ID:hOKxRgGg
こんな感じで処理するのはどうでしょう?
Unicode は良く分からないので具体的な変換処理は書きませんが。

s{(?:\&\#(\d+);|([\x20-\x7e])|(.))}{
if(defined $1) {
"[$1]";
} elsif(defined $2) {
"<$2>";
} else {
"($3)";
}
}seg;

----
私は less などで見やすいように、コンマかタブで区切っています。
0781名無しさん@お腹いっぱい。01/08/31 11:23ID:NujA9c4g
初心者プログラマーなんですが、プログラムを書いていてこんなプログラムを
書いたんですが意味がこんがらがって分からなくなってしまいました。
if($host !=~ /$basename/)の!=の部分なんですがこの場合
「$hostに$basenameがなければ真を返す」って意味ですよね?
そしたらif($host !~ /$basename/)も同じ意味ですよね?
でもプログラムを走らせると「!=~」は真を返して[!~]は偽を
返してくれるんですが・・・・頭が混乱してきた。。教えてください。
0782名無しさん@お腹いっぱい。01/08/31 12:00ID:pfDOYTd.
>>781
まず、!=~ という演算子はありません。
$host !=~ /$basename/ がどう解釈されるかというと、
$host != ( ~/$basename/ )
という感じです。
で( ~/$basename/ )では、まず /$basename/ を、
$_にマッチさせる正規表現と解釈します。
たぶんそれで0が帰ってそれが ~ 演算子に渡されます。
~0 は 4294967295 ですので、この時点で、
($host != 4294967295) という感じになります。
もちろん、$host は 4294967295 じゃないでしょうから
全体として真が返ってきます。
ちなみに、
$host !~ /$basename/ と同義なのは、
!($host =~ /$basename/) です。
こういう間違いは -w オプションで perl を実行することで
簡単に見つけられますよ。
078378201/08/31 12:04ID:pfDOYTd.
日本語変なのは気にしないで。
078478101/08/31 13:30ID:gxfm2mi2
>782さん
ありがとうございます。わかりました。。「-w」つけたら一発でエラーが
でてきてわかりました。。説明ありがとうございました。
0785T女の竹田01/08/31 13:35ID:4Heibauk
>>JAPUさん
うまくいきました!ありがとうございます。
↓こんな感じです。
$text =~ s{(\&\#(\d+);)|([\x0-\x7e])|(.)}{
    if(defined $1) {
        pack('n',$2);
    } elsif(defined $3) {
        "\0$3";
    } else {
        '';
    }
    }seg;
078672501/09/01 00:51ID:u.d.epnc
皆さんに教えていただいたように、my で書き換えました。
そしたら、jcode.plで、

&jcode'convert(*send_msg_body,'jis');
#$send_msg_bodyはローカル変数として、my で宣言しています。

のようなコンバートができなくなってしまいました....。
どうすれば、ちゃんと変換できるようになるのでしょう。

ホントに厨な質問でスミマセン。
078772501/09/01 01:02ID:u.d.epnc
調べてみたのですが、

jcode::convert(\$send_msg_body,'jis');

でOKなのでしょうか...
0788名無しさん@お腹いっぱい。01/09/01 01:02ID:3b6idtJ.
jcode::convert(\$send_msg_body, 'jis');
0789名無しさん@お腹いっぱい。01/09/01 01:03ID:3b6idtJ.
遅かったか(w
それでOKです。
079072501/09/01 01:31ID:u.d.epnc
>>788-789

ありがとうございました。
今使っているjcode.plのドキュメントには載っていなかった
のですが、最新版のjcode.plに使い方が書いてありました。
0791、01/09/02 05:33ID:4hoKlkq6
parlじゃないのですがhtmlでクリックした際サイトが
飛び出すようにするには如何したらいいのでしょうか?
0792名無しさん@お腹いっぱい。01/09/02 05:48ID:/fL4q/kI
>>791
豆腐を喉に詰まらせて氏ね
0793はじめたばかり01/09/02 09:01ID:T1M6nn4M
いつも楽しく拝見してます。
いまテキストカウンターを作っていて、なんとか作ることができたの
ですが、ファイルを2つに分けて1つのファイルがロックされているときは
もう1つのファイルに書き込みという形にして、同時アクセスでファイルの破損を
防ぐと同時にカウント漏れを防ぐようなカウンターをつくりたいのですが
1つのファイルがロックされているときにもう1つのファイルの方にカウントを
増やすようにするにはどの関数をつかえばよいのでしょうか?
まだはじめたばかりであまりよくわかりません。自分的にはfor文かと思ったのですが
どうも違うような気がします。
もしよろしければ皆さんの知恵を借りられればと思います。
お願いします。
0794名無しさん@お腹いっぱい。01/09/02 10:07ID:/vkcvuzE
>>793
基本がなってない。
ここでコードを書くのは簡単だが理解せずに使っても意味がなかろう。
とりあえず参考書籍スレで評判の良い本を買うのをすすめる。
0795名無しさん@お腹いっぱい。01/09/02 14:18ID:TsnMUyQQ
>>793
ファイルの数を好きに設定できるようにすると耐久度が増しますね。
がんばってください。 うまくいけば絶対に破損しないロック方式になります。
0796名無しさん@お腹いっぱい。01/09/02 15:29ID:lAk/mI7A
お前 のら だろ!  (ワラ
0797名無しさん@お腹いっぱい。01/09/02 15:43ID:3zvuzTqo
>>796
なつかしー
うけた!
0798名無しさん@お腹いっぱい。01/09/02 17:49ID:EuE1F3p.
はは、monaloveさん??のflock講は勉強になったなぁ  (^^
0799名無しさん@お腹いっぱい。01/09/02 18:04ID:YqVc4g/k
print "〜";
でHTMLを書き出し、HTML中で外部のjavascriptや、CSSファイルを使いたいのですが、
読んでくれません。

print "<STYLE TYPE=\"text/css\">\n<!--\n";
open(IN, "***.css");
print while (<IN>);
close(IN);
print "\n//-->\n</style>\n";

こうするしかありませんか?
とほほのperl入門はよく読んだのですが、特にこれに関係しそうなことは
書いてありませんでした。

よろしくお願いします。
0800名無しさん@お腹いっぱい。01/09/02 18:14ID:79Ih1PPk
>>799
print "<LINK rel=\"stylesheet\" href=\"./base.css\" type=\"text/css\" media=\"screen\">";
これでいいじゃん
■ このスレッドは過去ログ倉庫に格納されています