【Perl 】初心者コーナーPart6
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001undefさん
2001/07/26(木) 00:40ID:???尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0902名無しさん@お腹いっぱい。
01/09/07 12:35ID:???1に「>>2のリンクを一通り見てみよう。」と書いてるのが見えませんか?
0903わからず
01/09/07 18:01ID:???配列とハッシュの混在したものを渡して、
それぞれを使うということはできないのでしょうか?
グローバル変数にしてしまえば、、とも思ったのですが。どうしてもローカル変数でやりたくて。
リファレンスや型グロブのあたりを調べたのですが、正直わかりませんでした。
解決の手ほどきをお願いします。
↓こんなことをしたいです。
@list = &getList;
%hash = &getHash;
$str = &routine(@list, %hash); # これがやりたい
sub routine {
my(@list, %hash) = @_; # これも希望
my(@keys) = keys(%hash);
my ($a, $b, $s, $str);
foreach $a (@list){ # こんな感じで使いたい
foreach $b (@keys){
$s = $a + $b;
}
$str .= $s;
}
return $str;
}
0904わからず
01/09/07 18:03ID:3Gw2HsKo@list = &getList;
%hash = &getHash;
$str = &routine(@list, %hash); # これがやりたい
sub routine {
my(@list, %hash) = @_; # これも希望
my(@keys) = keys(%hash);
my ($a, $b, $s, $str);
foreach $a (@list){ # こんな感じで使いたい
foreach $b (@keys){
$s = $a + $b;
}
$str .= $s;
}
return $str;
}
0905名無しさん@お腹いっぱい。
01/09/07 18:29ID:???routineを呼ぶとき、リファレンスを渡す形でいい?
それでよければこんな感じで。
$str = &routine(\@list, \%hash);
sub routine {
my($list_ref, $hash_ref)=@_;
my @keys=keys(%$hash_ref);
foreach my $a (@$list_ref) {
:
以下略
0906わからず
01/09/07 18:48ID:???仰せの通りでした!できました!!
サンプル見てがんばってたとき、「@$hash_ref」とやっていました。(サンプルがそうだったので・・・)WebProgしかやったことないので、リファレンスとかポインタとか微妙にわかってません・・・。
勉強します!!
ありがとうございました!
0907Ne! Perl
01/09/07 20:41ID:???> これは、いくつかのperlモジュールを利用して動きます。
> それらは全てフリーで配布されているものです。
>
> Mail::POP3Client;
> Mail::Sendmail;
> MIME::QuotedPrint;
> MIME::Base64;
> CGI;
> 'jcode.pl';
って書いてあります。
共有サーバーなんですけど、どのフォルダに入れればいいんですかね?
パーミッションはいくつに…?
もろ、初心者質問でスマソ。
0908なー
01/09/07 21:08ID:LmWrXSYQ0909maji?:res
01/09/07 21:21ID:jyahklrMどこでも突っ込んでパスを叩いてください。
パーミッションはそれぞれの指定に従って。
この感じだとメールフォームだと思うけど
そもそもsendmailは使用可能かどうかも調べてね。
0910名無しさん@お腹いっぱい。
01/09/07 23:30ID:???>>2-3
というようなのURLみたいに変換するのどーやればスマートに書けますか?
初心者なんで解説付だと嬉し。
0911名無しさん@お腹いっぱい。
01/09/07 23:50ID:???ここに行って何も考えずにソースをパクリましょう。
後、自動リンク、正規表現、とかで検索すれば色々出てくるので
これも又何も考えずにそのままコピペして下さい。
とにかく解ろうとしない事です、正規表現メモなんで見るもんじゃないよ
0912名無しさん@お腹いっぱい。
01/09/08 00:01ID:???これでいいだろ (ワラヒ
0913名無しさん@お腹いっぱい。
01/09/08 14:21ID:???$comment =~ s|(http://[\~\./\?\=\&\:\-\%\w\$\#]+)|<a href="$1">$1</a>|;
上とかこれを参考に自分で変えていけば面白いと思うよ。
0914910
01/09/08 17:39ID:???ありがとうございます。
911のリンク先には人間が書いたとは思えない
正規表現とかもありますね…(汗
if (index($str, $keyword) > -1) {正規表現 }とindex使うとスピードUPするなど勉強になりました。
URLのリンクではなくてスレッド内レスへのリンクで
>>911と>>911-913
というような2種類をひとつの正規表現で書けるのかな?
僕はどうしても>>911マッチ後-913がついているヤツをマッチと2つ書かないと
うまく出来ません。
0915名無しさん@お腹いっぱい。
01/09/08 18:34ID:???@INCに付いてなのですが、任意のディレクトリを追加したいと考え
push (@INC,"./module/") などとしても全くダメな様です。
これはPerl自身が叩かれた時にセットしなければならないのでしょうか
それともう一つ、strictモジュールなのですが何故か、Perl5.6 on Cygwin
な環境では一切機能しない様です。'vars'としても何事もなく危険な構文が
通ってしまいます。 5.0 FreeBSD では問題無く動いているのです。
一応ソースを見てみたものの、短いけれど理解出来ませんでした。。
他の標準モジュール(Cwdなど)は全く問題無く動いています。
ヒントを頂けたらとても嬉しいです。
0916名無しさん@お腹いっぱい。
01/09/08 19:01ID:???| >>911と>>911-913
| というような2種類をひとつの正規表現で書けるのかな?
うー。俺もかけません。正規表現の中で条件判断とかするのかな。
正規表現道場スレに移って偉い人に聞いてみるか?
>>915 前半
@INCはperl起動時に設定しないといけないので、そういうのは
BEGINブロックに入れるんだと思った。
BEGIN { push (@INC,"./module/"); }
0917名無しさん@お腹いっぱい。
01/09/08 19:01ID:???BEGIN{ unshift(@INC, "$ENV{HOME}/perl5lib") }
#or
use lib "$ENV{HOME}/perl5lib";
cygwinのPerlでもstrictは普通に動くが?
$ perl -Mstrict -e 'print $var'
Global symbol "$var" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
$
0918>914
01/09/08 19:41ID:???>というような2種類をひとつの正規表現で書けるのかな?
たとえば、
$subject =~ s|>>(\d+)(-(\d+))?|qq(<a href="$this_script?bbs=$board&key=$key&st=$1&to=).($3 or $1).qq(&nofirst=true" target="_blank">>>$1$2</a>)|eg;
とか・・・。
0919918
01/09/08 19:42ID:???0920名無しさん@お腹いっぱい。
01/09/08 20:18ID:???どうも、即レス感謝です。勉強になります。なるほど!
BEGINブロックとENDブロックは特殊な読まれ方をするんですね。
>>BEGIN ブロックは即座に実行されるため、
>>サブルーティンなどの定義を他のファイルから読み込んで、ファイ
>>ルの残りの部分から見えるようにすることができます
と書いてるので、これは他にも便利そうです ^^
>$ perl -Mstrict -e 'print $var'
あれ??? 僕も今やり直したらちゃんと動いています。 おかしいな。。
確かに同じソースを、Freeにアップして両方catして確かめた筈なのですが、、
ごめんなさいです、今はちゃんと怒られています。
一々FTPで上げてるから分からなくなったのかな、、環境を考えないと。。。
勉強になります、ありがとう御座います。
0921名無しさん@お腹いっぱい。
01/09/08 20:27ID:???えっと、僕も2ch型のソースを見てみました。
2段階に分けてる様です。
ログに吐き出す操作では。。。
bbs.cgiで ('>>\d' 形式は変換、http〜はそのまま)→ログに書き込み→
→読み出し時に (read.cgiでhttp〜を自動リンク)
index2.htmlの生成では。。。
bbs.cgiで、まず('>>\d')形式を変換、次に(http〜)形式を変換→print
としてる様です。2回正規表現くぐってるんですね。
何故 '>>\d' を変換してログに書くのかが謎ですが、、
多分後から追加された機能だから、read通す時にまずい事になるのかな。。。
0922920
01/09/08 22:02ID:???何だかマヌケですが原因が分かりました (-_-
perl -Mstrict -e 'print "$a";'
だとダメで、、
perl -Mstrict -e 'print "$hoge";'
だとちゃんと動いてます。
Cygwinの方はコマンドを叩いて($aを良く使ってしまうんです)、
BSDの時はスクリプトを実行してたのが原因でした。(あほだ、、
aって何なんだろう。。特殊変数じゃない筈だし、、、、
勉強します。 strictのソースかなぁ
しかし、aとfooなんて一緒と思うから理解するのに1時間位かかった(鬱
0923名無しさん@お腹いっぱい。
01/09/08 22:03ID:???$aと$bはsortの時に使う特殊変数になっているはず。
0924920
01/09/08 22:06ID:???段々恥かしくなって来た、ROMに戻るです。
0925920
01/09/08 22:10ID:???ありがとう御座います。 アルファベットは空だと思ってた
消えますぅ 。。。。(^ ^ )サササッ
0926use Net::SMTPについて
01/09/09 02:43ID:he2UykukNTサーバで動いているプログラムで、use Net::SMTPを使って
サイト上のメールフォームからメールを送信させています。
最近、ファイヤーフォールを変えたらしいのですがその直後から
フォームからのメール送信ができなくなってしまいました。
use Net::SMTPはファイヤーウォールの設定によっては使えなくなったり
するのですか?またその場合、どの部分の設定をどう変更すればいいのでしょうか。
何もわからない哀れなカエルに知恵を授けて下さい
0927体育祭の名無しさん ◆B6fYuXhU
01/09/09 19:15ID:PuCsmJ7Mperlをつかって、cookie認証が必要なページを取得しようとしているのですが、
どうすれば用でしょうか?
普通のページの場合LWP::Simple を使用して、
get("http://〜");
などして取得できるのですが、cookieを使用する場合どうすればいいのでしょうか?
具体的には、Aページで、cookieAを取得し、
次に、Bページで、そのcookieを使用して、認証したいのです。
自分なりに書いてみたのですが、
どうすればいいのでしょうか?
http://blue.ribbon.to/~atu/TestScript.txt
よろしくお願いします。
0928名無しさん@お腹いっぱい。
01/09/09 20:00ID:???リクエストヘッダーにぶち込めば良いと思われ。
LWPにそういった機能がありそうだけど
rfc見て自分でカスタマズしてもそんなには難しくないと思われ。
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2109.html
0929名無しさん@お腹いっぱい。
01/09/10 19:02ID:mDibE0X6LWPを使うときは、そのスクリプトで基本的に問題ないみたい。
UserAgentにcookie_jarをセットすると、あとは自動的に
クッキーの読み込みも書き出しもやってくれるらしい。
↓このスクリプトでちゃんとPageAで得たクッキーをPageBに渡せたよ。
use LWP::UserAgent;
use HTTP::Cookies;
my $PageA = "http://www.my.domain/";
my $PageB = "http://www.my.domain/hoge.cgi";
my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new);
$ReturnA = &HttpGet($PageA);
$ReturnB = &HttpGet($PageB);
ただしクッキーを読み書きするときは
ドメイン名に少なくともドットが2個ないとエラーになる。
だから最初 "http://localhost/" でテストしたとき
全然うまくいかなくて悩んだ。
0930ひきこもりたいっ
01/09/10 23:49ID:???良く上の方にある
$script... #-- スクリプトの名前
こんな感じの大域変数の扱いに困ってます、酷いのになると50個位あったり
して、こんな正確なので出来れば閉じ込めたいんですが、自分で考えたのは
全体を sub SETTING とかで囲んで、参照したい時は &SETTING(script)
で使うという感じです。
もっと他に良いやり方はありますか?
0931名無しさん@お腹いっぱい。
01/09/11 00:19ID:???・@Configに入れ、enumを使って定数列を作成。名前で参照[$Config[HOGE()]]
・use constantまたはsub name(){ value }で定数を作成し参照[HOGE()]
・変数を全て大文字にするだけで済ませる[$HOGE]
0932名無しさん@お腹いっぱい。
01/09/11 00:44ID:???package Setting;
our $script = "hoge.cgi";
package main;
print "$Setting::script\n";
0933名無しさん@お腹いっぱい。
01/09/11 18:45ID:.epadQJgTwnLounge Faith editionというスクリプトにクッキーを発行させたくて
悪戦苦闘しています。KENTさんのスクリプトのクッキー発行・取得の部分をとってやって見たのですが
うまくいきません。どなたか教えていただけるとありがたいです。
http://www.hpfree.com/giants/lng.txt
↑実際使っているサーバーはCGI可です。
0934名無しさん@お腹いっぱい。
01/09/11 19:48ID:???スレ違いです。
http://corn.2ch.net/test/read.cgi?bbs=php&key=988808396
どういう値をcookieで渡したいのかを明記すれ。
0935名無しさん@お腹いっぱい
01/09/11 20:24ID:???(つーか解らなかったらAskaのをそのまま使いなよ)
~~~~~~~
んで何故ダメかと言うと多分
printする場所が間違えている(Content-typeを指定した後で吐いている)
不幸にも Set-Cookie させてくれないServerを使っている
ブラウザのクッキーがOFFになっている(・∀・)
この辺かな、確認用のスクリプト書いてみる事をおすすめする
0936名無しさん@お腹いっぱい。
01/09/11 22:13ID:dnQFE/9wやっぱりスレ違いなのかな・・・
0937名無しさん@お腹いっぱい
01/09/11 22:17ID:???渡した奴が化けるのかって感じで それ書いたらソース見る事にするわ
0938名無しさん@お腹いっぱい。
01/09/11 22:29ID:???ドコ?トクトクだったらブトバスー
0939名無しさん@お腹いっぱい。
01/09/11 22:39ID:dnQFE/9wSETはできてるのかわかりません・・・
サーバーはトクトクじゃないです。(無料じゃありません。)
0940名無しさん@お腹いっぱい。
01/09/11 22:55ID:dnQFE/9wSETできてません。
GETはできてるのかわかりません・・・
0941名無しさん@お腹いっぱい。
01/09/11 23:31ID:lMfDpcz20942941
01/09/11 23:35ID:???両国国技館につっこんでしまったようなモンだな
0943名無しさん@お腹いっぱい。
01/09/11 23:48ID:???意味がよく分からんけど、俺も興奮してるから激しく同意!!
0944名無しさん@お腹いっぱい。
01/09/12 02:09ID:???950を踏んだやつが新スレを立てる、ってことでいいっすか?
0945名無しさん@お腹いっぱい。
01/09/12 02:18ID:???初心者が書き込みしづらい状況になりうると思うから反対。
もしくは何も知らない初心者が踏んでも困るだろ。
逆に950を踏みたくないが為に初心者に対するレスが出なくなるのも困る。
これ以降の人で誰か有志が立ててくれ。
0946名無しさん@お腹いっぱい。
01/09/12 03:11ID:???Perlのページ
http://homepage1.nifty.com/nomenclator/perl/
文字コードに関する話題
Shift_JIS関係のモジュールなど
Perl初心者の部屋
http://www.harukaze.net/~mishima/perl/
定番だが何故か無いので
古いから?
0947名無しさん@お腹いっぱい
01/09/12 12:41ID:???0948名無しさん@お腹いっぱい
01/09/12 13:11ID:???, l[》《]| ヽ
/ i/ i ノノノ ))))〉 / ̄ ̄ ̄ ̄ ̄
. / i i |(リ ( | | | ! / 質問答えてくれたみなさん
〈ヘ|_|l| l ゝ~ lフ/| <. .ありがとうっ
/ | | |( ヽwliヽ | \ このスレはおしまいだよ。
/ /! | l ヘ《~ヘii~∧ ∧ \_____
/ /ノノ! ノ|リ〉 \/( ゚ω゚)
/ , ./-‐- 、/V\ハ_ヲUU
!/ ./ / / | ゝ つつ
ヽ_/ ./ ! jj \
/ i
〈 / | |'
ゝ / l | !/
`〜‐-L__」〜'^
・新スレッドはこちら:http://corn.2ch.net/test/read.cgi?bbs=php&key=1000267444
0949名無しさん@お腹いっぱい。
01/09/12 13:21ID:???0950_gunzip
01/09/13 06:21ID:???...って950踏んだりして。
0951名無しさん@お腹いっぱい。
01/09/15 11:03ID:???09521000
02/02/03 03:23ID:???\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
0953名無しさん@お腹いっぱい。
02/02/22 04:45ID:???0954埋め
02/02/22 04:46ID:???0955名無しさん@お腹いっぱい。
02/02/22 04:46ID:???0956名無しさん@お腹いっぱい。
02/02/22 04:56ID:???0957名無しさん@お腹いっぱい。
02/02/22 04:57ID:???0958名無しさん@お腹いっぱい。
02/02/22 04:57ID:???0959名無しさん@お腹いっぱい。
02/02/22 04:58ID:???0960名無しさん@お腹いっぱい。
02/02/22 05:04ID:???0961名無しさん@お腹いっぱい。
02/02/22 07:38ID:???\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
0962名無しさん@お腹いっぱい。
02/02/23 03:19ID:???+ + +
+
. / ̄\ +. ∧_∧アハハハ +
ノリカエセヨー( ´∀`) (´∀` )
(つ つ (つ つ■
. + ( ヽノ ( ヽノ +
し(_) し(_)
0963名無しさん@お腹いっぱい。
02/02/23 03:20ID:???0964名無しさん@お腹いっぱい。
02/02/23 03:23ID:???0965名無しさん@お腹いっぱい。
02/02/23 03:46ID:???ピュ.ー ( ・∀・)<1000ゲット!!
=〔~∪ ̄ ̄〕 \________
= ◎――◎
0966名無しさん@お腹いっぱい。
02/02/23 03:47ID:???0967名無しさん@お腹いっぱい。
02/02/23 03:47ID:???>>948 次スレ。
0968名無しさん@お腹いっぱい。
02/02/23 07:20ID:???ミ*^ー゚彡 < 1000ゲットデス
ミつ''''つミ \__________
ミ∩,,∩ミ
ゞミミミミ
0969名無しさん@お腹いっぱい。
02/02/23 07:23ID:???0970名無しさん@お腹いっぱい。
02/02/23 13:06ID:???0971名無しさん@お腹いっぱい。
02/02/24 04:37ID:???0972名無しさん@お腹いっぱい。
02/02/24 06:09ID:???0973名無しさん@お腹いっぱい。
02/02/24 18:21ID:???0974名無しさん@お腹いっぱい。
02/02/24 22:28ID:???0975名無しさん@お腹いっぱい。
02/02/24 22:31ID:???0976名無しさん@お腹いっぱい。
02/02/24 22:32ID:???0977名無しさん@お腹いっぱい。
02/02/25 01:23ID:???0978名無しさん@お腹いっぱい。
02/02/25 02:51ID:???0979名無しさん@お腹いっぱい。
02/02/25 06:12ID:???0980名無しさん@お腹いっぱい。
02/02/25 06:26ID:???0981こぴぺ
02/02/25 10:19ID:???, l[》《]| ヽ
/ i/ i ノノノ ))))〉 / ̄ ̄ ̄ ̄ ̄
. / i i |(リ ( | | | ! / 質問答えてくれたみなさん
〈ヘ|_|l| l ゝ~ lフ/| <. .ありがとうっ
/ | | |( ヽwliヽ | \ このスレはおしまいだよ。
/ /! | l ヘ《~ヘii~∧ ∧ \_____
/ /ノノ! ノ|リ〉 \/( ゚ω゚)
/ , ./-‐- 、/V\ハ_ヲUU
!/ ./ / / | ゝ つつ
ヽ_/ ./ ! jj \
/ i
〈 / | |'
ゝ / l | !/
`〜‐-L__」〜'^
・新スレッドはこちら:http://corn.2ch.net/test/read.cgi?bbs=php&key=1000267444
レス数が950を超えています。1000を超えると書き込みができなくなります。