Perlコーディング初心者質問スレ Part 53
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2006/11/26(日) 14:38:23ID:SlmGsFMB【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0872nobodyさん
2007/01/21(日) 12:54:47ID:???ID パス 入力で
個人ごとのデータを管理するオープンソースってありますか?
0873nobodyさん
2007/01/21(日) 14:19:50ID:???まあエスパーな俺が無理矢理読み取って答えると、いくらでもあるからよく探せ。
0874nobodyさん
2007/01/21(日) 14:21:10ID:???まあエスパーな俺が無理矢理読み取って答えると、いくらでもあるからよく探せ。
0875nobodyさん
2007/01/21(日) 14:29:45ID:???まあエスパーな俺が無理矢理読み取って答えると、いくらでもあるからよく探せ。
0876nobodyさん
2007/01/21(日) 14:35:48ID:???0877nobodyさん
2007/01/21(日) 16:27:20ID:???>874 魔美さんです。
>875 ユンゲラーです。
0878nobodyさん
2007/01/21(日) 17:55:44ID:???0879nobodyさん
2007/01/21(日) 18:22:18ID:???0880nobodyさん
2007/01/21(日) 19:41:27ID:???0881nobodyさん
2007/01/23(火) 10:33:18ID:gVOiAeShsub mail_okuru{
my($aitemail) = $_[0];
$_[2] = &adebo($_[2]);
$mail = "To: $aitemail\n";
$mail .="From: \日\本\語\名\前 <$mail_add>\n";
$mail .="Subject: $_[1]\n";
$mail .="Content-Transfer-Encoding: 7bit\n";
$mail .="Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n";
$mail .=$_[2];
&jcode::convert(*mail,'jis');
open(MAIL,"|$sendmail -i -t -f $aitemail");
print MAIL $mail;
close(MAIL);
}
------------------------------------------------------------
自動返信メールのアドレスの【日本語名前】のところがどうして文字化けしてしまいます
文字化けしないようにしたのですがどうすればよろしいでしょうか?
お願いします
0882nobodyさん
2007/01/23(火) 10:40:39ID:???0883nobodyさん
2007/01/23(火) 10:52:08ID:???base64でぐぐれよ
0884nobodyさん
2007/01/23(火) 12:00:56ID:???0885nobodyさん
2007/01/23(火) 17:43:26ID:???これは気づくまで放置か?
0886nobodyさん
2007/01/23(火) 20:24:43ID:???0887nobodyさん
2007/01/23(火) 22:16:41ID:???0888nobodyさん
2007/01/23(火) 22:57:35ID:???0889nobodyさん
2007/01/24(水) 01:37:38ID:???flockをローカルテスト鯖で使いたいのですが
Windowsで対応しているのはどのバージョンからでしょうか。
0890nobodyさん
2007/01/24(水) 02:39:08ID:???0891nobodyさん
2007/01/24(水) 04:30:09ID:???0893nobodyさん
2007/01/24(水) 06:44:06ID:???NT系で使えるってのは初耳だ
0894nobodyさん
2007/01/24(水) 07:03:26ID:???それ以外ならモードにあわせてLockFileEx/UnlockFileExを呼んでるな
0895nobodyさん
2007/01/24(水) 10:50:28ID:???print "Set-Cookie: test=test; domain=test.co.jp; expires=$expiredate;\n";
print "\n";
Set-Cookieでdomainを他のサーバーで指定するとcookieが発行されないのですが、
これは何が原因か教えて頂けますか。
domainの値を自サーバーもしくは、domain自体を記述しなければちゃんと発行されます。
0896nobodyさん
2007/01/24(水) 11:09:52ID:???クライアントはそういうのは拒否することになっている。詳しくは
RFC2965(HTTP State Management Mechanism)の3.3.2(Rejecting Cookies)参照
たぶんこれにひっかかったんじゃないか。
0897nobodyさん
2007/01/24(水) 12:18:29ID:???0898895
2007/01/24(水) 13:08:20ID:???そうしたらdomainを入力する項目ってほとんど必要性がないような…(´・ω・)
0899nobodyさん
2007/01/24(水) 13:16:44ID:???そこで有効範囲を指定してhoge.example.comのみに発行させることができる
0900nobodyさん
2007/01/24(水) 13:19:21ID:???example.comでクッキー発行すればauction.example.comでもshopping.example.comでも同じクッキーが使える
auction.example.com(ドメイン省略時の例として)で発行すればそこでしか使えない
0901nobodyさん
2007/01/24(水) 14:33:19ID:???http://〜/***.cgi?no=***
というようなページ(のソース)を読み込むことって出来ますか?
0902895
2007/01/24(水) 14:35:35ID:???0903895
2007/01/24(水) 14:39:06ID:???use LWP::UserAgent;
use HTTP::Request::Common qw(GET);
my $ua = LWP::UserAgent->new;
my $url = "http://〜/***.cgi?no=***";
my $request = GET($url);
my $res = $ua->request($request);
if ($res->is_success){
$content = $res->content;
}
といったような形で読めますよ(´・ω・)
0905nobodyさん
2007/01/24(水) 15:53:30ID:???data1.txtとして別名で保存したいのですが
どのようにすればいいでしょうか?
ちなみにperlは設置ができる程度です。
親切な方よろしくご指導ください。
Perl バージョン 5.008004 です。
0906nobodyさん
2007/01/24(水) 16:03:41ID:???0907nobodyさん
2007/01/24(水) 16:25:47ID:2EUwcZjVできるだけ短くてユニークなものが理想的だと思いますが
「普通はこれ使うだろ」といったような暗黙の標準区切り文字みたいなものはありますか?
それとも、コードの中で一時的にユニークな区切り文字に置き換えて処理し、
データに書き込むときは汎用性の高い区切り文字(カンマ等)で統一する、
といった方法の方が一般的なんでしょうか?
「自分はこうしている」という意見でも良いのでよろしくお願いします。
0908nobodyさん
2007/01/24(水) 16:28:30ID:???読み込みと保存はなんとなくこんな感じでしょうか。
変換がよくわかりません
open IN, "data.txt";
$data = <IN>;
close IN;
open OUT, ">data1.txt";
print OUT $data;
close OUT;
0909nobodyさん
2007/01/24(水) 16:32:21ID:???指定したURLが転送される場合303 See Otherが出て取得できない。
どうすれば転送後のサイトを取得できますか?
0910nobodyさん
2007/01/24(水) 16:50:31ID:???データの中に区切り文字を含まないように工夫すればなんでもいいんじゃね?
>>908
本を一冊読むことをおすすめする。
ここで全部を教えるのは難しい
>>909
"LWP リダイレクト"でぐぐった?
0913nobodyさん
2007/01/24(水) 20:41:48ID:???そこで半角のみの投稿は不可にしようと思ったのですが
正規表現だと
$char_check = $form{"message"};
if($char_check =~ /^[^0-9a-zA-Z]$/ ){
送信
} else {
エラー処理
}
こんな感じでやってみたのですがうまく動きません。
正しい動作をさせるにはどのように書き直せばいいでしょうか?
0914nobodyさん
2007/01/24(水) 21:25:03ID:???送信
}
0915nobodyさん
2007/01/25(木) 05:34:19ID:???あとURLに使われる文字とか。
0916nobodyさん
2007/01/25(木) 16:38:50ID:???UserAgentは簡単に偽装できるので、IPアドレスベースの識別をしたいのですが、
アクセス者のIPアドレスがサブネットマスク形式のアドレスで指定した条件に一致しているかどうかを
確認するモジュールはないでしょうか?
つまり、
my $ipType = &IP_Check('127.0.0.1', '127.0.0.0/24');
if ($ipType) {
print 'ループバックアドレスです。' . "\n";
}
みたいなことができる関数が欲しいです。
よろしくお願いします。
0918nobodyさん
2007/01/25(木) 18:26:22ID:???とりあえずCPANでsubnetで検索してみた?
その目的からするとTie::NetAddr::IPがこんな感じで使えてよさそうに見える。試してないが。
tie my $carriersSubnet, 'Tie::NetAddr::IP';
$carriersSubnet{"10.0.10.0/24"} = "CarrierA";
$carriersSubnet{"10.3.20.0/24"} = "CarrierA";
$carriersSubnet{"10.10.2.0/24"} = "CarrierB";
my $carrier = $carriersSubnet{$ipaddr};
0922nobodyさん
2007/01/26(金) 10:57:39ID:???質問させていただきます。
質問を提示してその下にラジオボタンで選択肢を作ります。
で、質問に答えたら次の質問と続いていくわけなんですが。
その選んだ答えを1.と答えたのがが3個 2.と答えたのが4個と最後に合計を出したいの
ですが、合計を出そうとするところができません。
そういう簡単なサンプルとかを提示していただきませんでしょうか?
0924nobodyさん
2007/01/26(金) 12:38:54ID:???if ($x eq $a){
$one++;
} eisif ($a eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、''2は' . "$two" . '、' . '3は' . "$three";
0925924
2007/01/26(金) 12:43:20ID:???if ($x eq $a){
$one++;
} eisif ($x eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、' . '2は' . "$two" . '、' . '3は' . "$three";
0926924
2007/01/26(金) 13:01:23ID:???if ($x eq $a){
$one++;
} elsif ($a eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、''2は' . "$two" . '、' . '3は' . "$three";
0927924
2007/01/26(金) 13:02:48ID:???0928924
2007/01/26(金) 13:08:50ID:???これが正解だ
if ($x eq $a){
$one++;
} elsif ($x eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、' . '2は' . "$two" . '、' . '3は' . "$three";
0929nobodyさん
2007/01/26(金) 13:20:33ID:???0930nobodyさん
2007/01/26(金) 16:52:05ID:???0931nobodyさん
2007/01/26(金) 20:04:25ID:???あとprintf覚えようね。
0932nobodyさん
2007/01/26(金) 21:03:20ID:???それとも1つの質問が書かれた複数のページがあるのか、はっきりしない。
前者なら、全ての質問について、選択肢をキーとしたハッシュでも作って集計すればいい。
後者なら、hidden フィールドでも使って、前ページまでの集計結果を覚えておけばいい。
0933nobodyさん
2007/01/27(土) 10:46:19ID:F/NZnu0Bお薦めのBBS向けのフレームワークとかご存じでしたら教えてもらえませんか?
0934nobodyさん
2007/01/27(土) 11:18:07ID:???0935nobodyさん
2007/01/27(土) 11:29:54ID:???今度使ってみるかなぁ。
つっても、%ndぐらいしか使わなそうだけど。
0936nobodyさん
2007/01/27(土) 11:34:36ID:???0937nobodyさん
2007/01/27(土) 11:39:50ID:???0938nobodyさん
2007/01/27(土) 13:38:26ID:???なんて書くくらいなら
printf("1は%d、2は%d、3は%d", $one, $two, $three);
の方が見やすいと思う。もしクォートの対応間違えてSyntax Errorになったら
探すのめんどいから。あとは、
printf("1は%d、2は%d、3は%d", @total{qw(one two three)});
のように書けるとき便利。
0939nobodyさん
2007/01/27(土) 16:26:34ID:???いや俺の話だけど。
0940nobodyさん
2007/01/27(土) 16:31:24ID:???って書いた方が無難かもかも。。
0943nobodyさん
2007/01/28(日) 07:39:42ID:???>>940 の方が意図しない挙動が起こらないからいいだろ。
0100 をプリントしたい場合
perl -e 'printf "%d", 0100 '
perl -e 'printf "%d", "0100" '
perl -e 'printf "%s", "0100" '
perl -e 'printf "%s", 0100 '
perl -e 'print "0100"'
まあ、printf "%04d", "100" 使えって云うんだろうけど。
0944nobodyさん
2007/01/28(日) 08:28:12ID:???だから>>940でOK。
0945nobodyさん
2007/01/28(日) 23:19:16ID:???ファイルを保存する方法がわかりません。
どうすればいいんでしょうか?
0946nobodyさん
2007/01/28(日) 23:26:29ID:???0947nobodyさん
2007/01/28(日) 23:35:50ID:???0948nobodyさん
2007/01/29(月) 01:45:42ID:???0949nobodyさん
2007/01/29(月) 17:40:11ID:???if($pObj->ping($host, $timeout)){
print "$host is running.\n";
} else {
print "$host is not running.\n";
}
PINGが4回送信成功したらall complete
四回とも失敗したときにnot reaction
としたいのですがどこに制御文足せば良いのか教えてください。
0950nobodyさん
2007/01/29(月) 18:37:35ID:???0951nobodyさん
2007/01/29(月) 18:45:09ID:???0952nobodyさん
2007/01/29(月) 19:25:53ID:???4か-4かで判断汁
0953nobodyさん
2007/01/29(月) 21:11:48ID:???「3回目の試行で全成功」と「4回試行して1度失敗」の区別が付かないような。
まあ、目的次第か。
0954nobodyさん
2007/01/30(火) 01:25:19ID:???その辺の区別はできなくてもいいんでない?
「どうカウントして条件分岐させればスマートか?」という質問じゃなくて
「どこに制御文を足せばいいのか?」なだけに、
みんなが書いた回答では片づかないような気配を感じる。
0956nobodyさん
2007/01/30(火) 15:45:46ID:???クライアント側でソケットをcloseすると、なぜかFD_CLOSE
が2回届いてしまいます。
特に支障はないのですが、これって正常なんでしょうか?
0957nobodyさん
2007/01/30(火) 16:05:16ID:???0959nobodyさん
2007/01/30(火) 22:24:11ID:???0960nobodyさん
2007/02/01(木) 18:34:00ID:uO0f4S6qどこかにないですか?
0962nobodyさん
2007/02/02(金) 20:55:17ID:???@data = ('bbb','ccc');
$num = @log;
for($i=0; $i<$num; $i++){
($name, $price, $text) = split(/,/, $log[$i]);
foreach(@data){
if($text eq $_){
$name = 'MATCH';
last;
}
}
push(@newlog, "$name,$price,$text)";
}
このような処理をしたいのですが、
とても効率が悪そうで悩んでます。
調べてみると、grepが利用できないかと思ったのですが、
うまくまとめられません。。どなたかよい智恵を貸して下さい!
0963nobodyさん
2007/02/02(金) 20:58:50ID:???>push(@newlog, "$name,$price,$text)";
push(@newlog, "$name,$price,$text");
です・・
0964nobodyさん
2007/02/02(金) 22:52:58ID:???# usage> perl this_script 2 bbb ccc
my($pos, @word) = @ARGV;
my $regex = join '|', map quotemeta, @word;
$regex = qr/(?:$regex)/;
my @matched;
(split /[,\n]/, $_, $pos + 1)[$pos] =~ /^$regex$/ && push @matched, $_ for <DATA>;
print @matched;
__END__
AAA,100,aaa
BBB,200,bbb
CCC,300,ccc
DDD,400,ddd
0966nobodyさん
2007/02/05(月) 20:49:02ID:???$s1 = \$text;
$s2 = \'abc';
$s3 = \('abc');
$s4 = \('abc', 'def');
$s5 = \($text = 'def');
$s1〜$s5は全部スカラーのリファレンスになったのですが
$s4とかが配列にならないのは何故なんでしょうか?
夜も眠れません(>_<)
0967nobodyさん
2007/02/05(月) 21:05:53ID:???http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html#Making_References
> 列挙リストに対するリファレンスを取るということは、ブラケットを使うことと
> 同じではないということに注意してください。これはリファレンスのリストを
> 生成することと同じなのです!
>
> @list = (\$a, \@b, \%c);
> @list = \($a, @b, %c); # 同じこと!
>
> 特殊な場合として、\(@foo)は@fooの内容へのリファレンスのリストを返し、
> @foo自身へのリファレンスは返しません。これは%fooと似ていますが、
> キーのリファレンスがコピーに対するものである点が異なります(これは
> キーがfull-fledgdスカラーではなく単なる文字列であるためです)
0969nobodyさん
2007/02/08(木) 15:49:20ID:???print "$iueo";の出力結果を1ueo
と表示するために$iを何かで囲めば良かったと記憶しているんですが度忘れしてしまいました。
すみませんが教えて下さい。調べるキーワードでも結構です。
0970nobodyさん
2007/02/08(木) 15:52:51ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。