【Perl上級者コーナーPart01】at PHP
【Perl上級者コーナーPart01】 - 暇つぶし2ch365:nobodyさん
03/12/23 21:20 B/ouqWjS
>>362
2ちゃんねるにはつわものは
いないんですか?
いると思ったのにがっかりだ。
明日、教えてくれたシステム部長
にもう一度聞くから良いよ

366:nobodyさん
03/12/24 00:37
>>365
マルチすんなっつってんだろ。
ルールを守らない奴になんで親切にしなきゃならんのよ。
マジで自分のことしか考えてないDQNだな。

367:nobodyさん
03/12/24 14:06
>>365
お前本当にどうしようもないクズだな。
まず2ch(だけではないが)のルールを守れやヴォケ。

368:nobodyさん
03/12/24 16:33
システム部長もこのスレ見てるyo

369:nobodyさん
03/12/24 20:16 sC5vpZJY
>>367
お前ぶっ飛ばすぞ!!!
顔が見えないからっていい気になりやがって。


370:nobodyさん
03/12/24 22:48
>>369
お前、上級者にむかってその態度はなんだ!!!
童貞のくせにいい気になりやがって。

371:nobodyさん
03/12/25 22:51 GW3KvJ+k
>>370
童貞ではありません。


372:nobodyさん
03/12/26 01:29
>>369
最初にいい気になってるのはどう見てもおまえなんだがな。
自分が質問者としてのルールを守っているかどうか、少しは考えたのか?

373:nobodyさん
04/01/13 19:31 hDqA/G+I
『Perl コーディング初心者質問コーナー Part31 』でも質問したのですが、
分かる方がいらっしゃらないようなので、ここでもお願いします。もう誰もいない?


ファイルハンドラを変数で持つことは可能でしょうか?
my $p;
open($p, "test");
こんな感じで。
-----------------------------------------------
my $p="a"; としてからopenすると何故か動くのですが、今度は、use strict
の場合に、

#!/usr/bin/perl -w
use strict;
my $p="a";
open($p, "test");

こうすると、以下のように怒られます(実行ファイルは./aです)。
Can't use string ("a") as a symbol ref while "strict refs" in use at ./a line 4.

何故なんでしょうか?
(そもそもファイルハンドラの定義がよく分からないのですが。ポインタ?)

374:hjg
04/01/13 20:01 DzsVlZbM
perldoc -q filehandle して

"How can I use a filehandle indirectly?"



375:hjg
04/01/13 20:03 DzsVlZbM
perldoc Symbol も良い

376:nobodyさん
04/01/13 20:22
>>373
わかる人がいないんじゃなく最近既出の質問
過去ログ嫁

377:nobodyさん
04/01/13 20:30 hDqA/G+I
>>376
失礼しました。探してみます。

378:hjg
04/01/13 21:55 BCJlfFc6
>>377
英語読めんか。
洲万買ったな。


379:nobodyさん
04/01/16 01:28
みんなのPerlソースのコメントアウトレイアウト見てみたいかも。
どんなコメントを書けば見やすいのか研究中。

とりあえず、

#==========#
# 処理名 #
#==========#

とか、

#>>>>> 処理名

とか書いてる。
一応それなりに目立つし、全部 # で書くとウザイから

###########
# 処理名 #
###########

こんなんとか。
見にくい。。。

みんなはどうだ?チェキラ

380:nobodyさん
04/01/16 01:50
行コメント以外ならPODで書いてるよ。See perldoc perldoc, perldoc perlpod ...

381:nobodyさん
04/01/16 01:58
######################################################
## ■以下サブルーチン■
######################################################

382:nobodyさん
04/01/16 02:00
##====================================================##
## ■以下サブルーチン■
##====================================================##

383:ヽ(´ー`)ノ
04/01/16 11:53
>>379
POD 使えば?
コメント使った書き方って、見にくいし、他の人のコードと統一性が取れない。
整形するの面倒だし、マニュアルも別に書かないといかん。
じゃあメリットがあるかっていうと特別あるわけじゃない。デメリットだけ。
まともなエディタを使えば、POD のところだけ色も変わるから見栄えを気にする必要もない。
あと俺の主観だけども、出来の悪い CGI のコード見てるようで、醜い(シャレじゃなく)。

すでにあるモノを再発明することないよ。更に良いものが作れるのなら話は別だけど。


384:nobodyさん
04/01/16 17:05
大規模なコメント(ドキュメント)なんかは
そりゃPODにこしたことはない罠。

ちょっとしたコメントにセンスを光らせたい罠
別に誰が見るわけでもないんだけどさ。


385:nobodyさん
04/01/16 19:51
ちょっとしたコメントに大袈裟な装飾は不要。
罫線くらいにしておいた方がいいんじゃない?

386:nobodyさん
04/01/17 20:40
#::::::::::::::: さぶるーちん :::::::::::::::#

387:nobodyさん
04/01/17 22:55
#
# こめんと
#

シンプルな方がよし。かも?

388:nobodyさん
04/01/18 01:51
>>381,382
■を使うと見やすいな。

#■ コメント1
print ...

#■ コメント2
print ...


389:nobodyさん
04/01/18 15:50
統一的にどうするかというより、
#**************************#
#. 大見出       ****#
#**************************#

#--------------------------#
#..中見出       ----#
#--------------------------#

#--------------------------#
#... 小見出

# その他

 のように、階層に応じて分けるのがいい。ちなみに、「#.」、
「#..」、「#...」の部分は、テキストエディタに「アウトライン」
機能があれば、その見出し行の識別文字列に設定するとよい。


390:nobodyさん
04/01/20 01:24
上級者のみなさん質問させてください!
ソフトバンクより発売のCGI/Perlハンドブックという本で
URLリンク(up.atnifty.com)
こういったアンケート収集スクリプトがあるのですが
これを実行してもアンケートが追加されません。
どこが間違ってるのでしょうか?

391:nobodyさん
04/01/20 01:29
>>390
マルチポストハケーン

392:nobodyさん
04/01/20 07:53
>>386-389
そういう書き方するとPODに比べて何かメリットは?

>>387 は楽だって点でメリットがあるけど、他のは…。

393:nobodyさん
04/02/05 22:45
>>392

メリット:見やすくなる(色分けしてるエディタだと更に
デメリット:めんどい。

>>387は後でソース見て苦労するタイプだ

394:nobodyさん
04/02/05 23:08
>>393
POD も色分けされるじゃん。

395:nobodyさん
04/02/07 10:43
出力されたHTMLの一行目が改行になってしまう仕様はどうにかならないか。(英文FAQ翻訳風)

396:nobodyさん
04/03/13 22:04
POD色分けされるエディタって何がある?(WINで)

397:nobodyさん
04/04/03 08:00
gvim

398:nobodyさん
04/05/09 21:27
あげじゃあげじゃ

399:ぺー
04/05/11 08:07 wDvsqpzO
これと同じ改造するにはどしたらいいんですか神様。

URLリンク(ouroboros.game-host.org)



400:nobodyさん
04/05/12 16:29
同じ改造で満足するのかと小一時間(ry
小言で400get.

401:nobodyさん
04/06/08 12:32 svJNgPf4
PerlでPGP暗号化したメールを送ったことのある方おりますか?
gnupg等のコマンドを使って暗号化したものを、
sendmailで送るイメージでいるんですが、
この辺をやってくれるモジュールとかってあるんですかね?


402:nobodyさん
04/06/08 21:16
>>388
なるほど!
そういえば、携帯ページつくるときによくつかってたけど、コメントで使うのは思いつかなんだ。
らりあとう!!

403:388
04/06/08 22:17
>>402
どういたまして。
ちなみに今は
タブと■を組み合わせて見やすくしてる。

>>401
メールを受け取る人が一定なら、
その人のマシンで公開鍵と秘密鍵を作って、
その公開鍵を使ってサーバで暗号化する必要がある??
あんま詳しくないから興味あるかも。

404:nobodyさん
04/06/08 23:34
>401
URLリンク(search.cpan.org)

405:きのこる先生 ◆FmKame.i.E
04/06/10 07:13
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      | (;゚Д゚) < 今まで様々な404を見てきたが
      |(ノ  |)      お前が一番coolですね
      |    |
      ヽ _ノ
       U"U


406:nobodyさん
05/11/13 21:07:49
えらく長寿だなぁ、このスレ・・・勃って(w から三年半、前レス>>405からも一年半経ってる。

407:nobodyさん
05/11/14 23:07:11
pod使ってサブルーチンごとにコメントを挟むと間延びした感じになってなんか嫌だったんだけど・・・
=の前後に空白行がないとpodparserでXHTML化したときにうまく読んでくれないし。

どうよ?

408:nobodyさん
05/12/06 03:38:10 rOcNbm6R
01と最初からスレタイしたら伸びないというのを実践してるな

409:nobodyさん
05/12/28 12:54:03 RY3kh/X5
URLリンク(www002.upp.so-net.ne.jp)

ここのMulti Wing BBSをDLして設定してうpまで
終わったんですが、メインのwingmulti.cgiにアクセスして
設定したパスワードを入力しても、パスワードエラーと出ます。

何度設定しなおしてもパスワードエラーに引っかかるんですが
これって単なるバグでしょうか?

分かる方いたら、試してもらえませんか?

410:nobodyさん
05/12/28 12:57:36
>>409
もちろんお前はPerl上級者なんだろうな

411:nobodyさん
05/12/28 13:02:41
>>410
初級レベルです^^;
上級者の方じゃないと分からないと思ったので、すいません。

412:nobodyさん
05/12/28 14:52:10
質問するスレじゃねぇ

413:nobodyさん
06/02/05 07:47:15 VJ915kfQ
DBICどうすか。
0.5から::Schemaに移行とかなんとか。

414:nobodyさん
06/10/08 01:37:17
wikipediaにはトリップ生成は

$tripkey = "#istrip";
$tripkey = substr($tripkey,1,);
$salt = substr($tripkey.'H.',1,2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$trip = crypt($tripkey,$salt);
$trip = substr($trip,-10);
$trip = '◆'.$trip;
print "$trip";

って書かれてるが

マルチバイト文字をcryptに入れるとエラーになるんだが。

415:414
06/10/08 23:31:27 LWtT3Slw
どうすればいい?
Perl5.8.8だからなのか?
誰か教えてくれねーか?

416:nobodyさん
06/10/08 23:54:05
>>414-415
ここは上級者スレ。その程度を自分で解決出来ない奴は立ち入り禁止。

417:414
06/10/09 00:08:25 b33Q2pbi
工エエェェ(´゚д゚`)ェェエエ工w

418:414
06/10/09 00:09:17 b33Q2pbi
UTF8で書いてる所為かも。
SJISに変換して入れてみるか。

419:414 ◆SQ2Wyjdi7M
06/10/09 00:13:33 b33Q2pbi
うまくいったっぽいw

420:414 ◆SQ2Wyjdi7M
06/10/09 00:26:29 b33Q2pbi
まぁ、テキトウにまとめ。
しなくてもいいだろうが、スレつかっておいて自己解決して放置っつースタイルが嫌いなので。

俺の場合。
出力をXHTMLに準拠させたいが、ファイルの先頭でXML宣言をするとIEで厄介なので、それを避けるために出力をUTF8にしたかった。
そんなときにPerl5.8は内部処理とかUTF8にしたぞ的なことを知ったので、use utf8;とかしてコードを書いていたわけだが、
UTF8のマルチバイト文字列をcrypt関数の引数として与えるとエラーが出るという問題にあった。

まぁ、crypt使う理由が2ch互換のトリップを生成することだったわけで、そのときにUTF8でcrypt使用としてた辺りがあほなんだが、
1日考えるのやめてカラオケとか逝ってたら、脳みそすっきりしてこのことに気づいたので解決した。

そんでUTF8→SJIS変換したら、すんなり成功した。

参考までにソース載せると

package パッケージ名;
use utf8;
use Encode;
return 1;

sub makeTrip{ # 引数 = \$tripkey(utf8)
my $tripkey = $_[0];
my $salt;
$$tripkey = encode('shiftjis', $$tripkey);
$salt = substr($$tripkey.'H.',1,2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$$tripkey = crypt($$tripkey,$salt);
$$tripkey = substr($$tripkey,-10);
return;
}


421:nobodyさん
06/10/10 20:26:03
超絶的確な>>416のレスを読まない
>>414に萎え

てか、文字コードの違いもわからず上級者気取りか・・・

422:nobodyさん
06/10/10 22:14:51
もうおわったことにぐだぐだいってる >>421 のしつこきもちわるさにほげ

423:nobodyさん
06/10/12 14:25:18
一応天才って言われるけど…これ常套だべ?

BEGIN {
$vo = '栄昇';
$g = '優';
$pf = '等';

}
コードに入れてない奴は今すぐ入れたほうが良いよ、平和になるし


424:nobodyさん
06/10/12 16:16:15
日本語でok

425:nobodyさん
06/10/14 00:22:11
上級者専用スレなんて初めて開いた・・
Gimpって画像処理ソフト、CGIから操るのに成功した人っています?
ImageMagickを使ってみて、なかなか面白いんだけど、文字の加工は貧弱なので
Gimp試してみたものの、全然動かないのです。

426:nobodyさん
06/10/14 00:26:36
>>425
キサマには初心者スレすら生ぬるい。

427:nobodyさん
06/10/14 00:38:50
煽りに用はない!by ken


428:nobodyさん
06/11/14 14:47:50 M1pI9RkN
>>420
では上級者的指摘を

use utf8環境下でsubstrで2文字取り出すというのがどういう意味なのか
分からないのがお前の敗因。
我々上級者はuse utf8はuse byte;は併せて覚えている。

つ~かcryptの第2引数は初めの2バイト以外無視する仕様だから
わざわざsubstrしてる時点で中級者とも言えない。

って、全くテストもしないで亀レスだけしてみる。

429:nobodyさん
06/11/15 07:29:44
cryptはDESかMD5かで有効なsaltの文字数が違うよ

430:nobodyさん
07/01/24 20:02:36

簡単にお金稼ぎ!!!

以下の手順でやれば、無料でお金稼ぎができます。
企業も広告の宣伝になるから、お金をくれるわけです。
最初の1日目で 2000 円~3000 円 は確実に稼げます。
実際の作業は数十分程度、1時間はかかりません。

(1) URLリンク(pointdream.jp)
   ↑このアドレスからサイトに行く。
(2)無料会員登録をする。
 ※フリーメールアドレスでもOK。
(3)ポイントを稼ぎます。
 懸賞の応募や無料会員登録をすればするほど、
 ポイントが貰えます。
(4) 友達を増やせば、後は何もしなくても
 定期的に、友達還元ポイントがドッサリ入ってきます。

これで現金を稼ぐといいですよ!!!

登録(応募)はこちらから↓
URLリンク(pointdream.jp)

431:nobodyさん
07/02/10 20:43:16

簡単にお金稼ぎ!!!

以下の手順でやれば、無料でお金稼ぎができます。
企業も広告の宣伝になるから、お金をくれるわけです。
最初の1日目で 2000 円~3000 円 は確実に稼げます。
実際の作業は数十分程度、1時間はかかりません。

(1) URLリンク(blackjack.lxl.jp)
   ↑このアドレスからサイトに行く。
(2) ゲットマネー登録サイトに移動するので、
 そこで無料会員登録をする。
 ※フリーメールアドレスでもOK。
(3)ポイントを稼ぎます。
 懸賞の応募や無料会員登録をすればするほど、
 ポイントが貰えます。
 他にも沢山種類があるので、1日目で
 約 20000 ポイントは GET できます。
(4) 10000 ポイントから、現金に交換できます。
(5)キャッシュバックという所がありますので、
 そこから交換をしましょう。

これで現金を稼ぐといいですよ!!!

無料会員登録はこちらから↓
URLリンク(blackjack.lxl.jp)

432:nobodyさん
07/03/26 17:41:13 3MEiX5hy
上級者向けの質問かどうか分からないけれど、他に該当スレが思いつかなかったのでここで質問させてください。

CPANで落とせるNet::SMTP_authってモジュールがあって、それはNet::SMTPのサブクラスになっていて
ソースの中ではauth()とauth_types()のオーバーライドしかしていない。
SMTP_authでメール送信するには587番ポート使う筈で、それはnew()したときの
最初のサーバへの通信で既に「587を使う」と指定しないといけないと思うのだけど
どこをどう探してもその記述が見つからない。
NET::Configの中かなぁと思ったのだけど、それも違うっぽい。
どうやって587ポートを指定させているか、誰かご存知の方いませんか?

SMTP_authモジュールを使いたくて色々調べていたらこの問題に行き着いて、どうにも納得できなくて気持ち悪いので
ヒントだけでも教えていただけると嬉しいです。

433:nobodyさん
07/03/26 22:13:50 sZyxWGW4
>>432
Authen::SASLで何やってるかわかんないけど、ポート指定してるっぽいのはここだね。

my $conn = $sasl->client_new("smtp", $host);#, "noplaintext noanonymous");



434:nobodyさん
07/03/26 23:55:40
>>432
> SMTP_authでメール送信するには587番ポート使う筈
これ間違い。

○ submission portを使用するときはSMTP AUTHが必要。

435:nobodyさん
07/03/27 20:09:45
Net::SMTP->new( Port=>587 );

Net::SMTPなら、こんなんじゃなかったっけ

436:432
07/03/30 15:34:09
>>433
ありがとうございます。
まだ色々分かって無いですが、また調べてみようと思います。

>>434
まだ理解が足りていなかったみたいです
ご指摘ありがとうございます。

>>435
そうですよね、やっぱし。
でも587というポート番号を指定してる場所がどこにもなくて「あれ?おかしくね?」
と感じて調べ始めたら泥沼に、、、orz


437:nobodyさん
07/04/02 21:36:14
OP25Bなら、サブミッションポートで接続してSMTP AUTHするわけだから
ポートは自分で設定する必要があるよ。


438:nobodyさん
07/06/19 22:29:14 Ye7oVo0e
Perlに触れて2ヶ月余りの者ですが皆様のお知恵を拝借したい事があります。
フォームを作成し、大量の文字を入力してメールを送信するようにすると、
500文字目辺りが文字化けしてしまいます。
その部分から一定の周期で文字化けが発生しています。
300文字程度までなら全然平気なのですが。。
あとそのメールのログをとっているんですけどログの方は大量に文字をうっても問題なく蓄積されていました。
この事からプログラム的な問題ではなく、
鯖にインストールされている sendmail が怪しいかと思うのですが、
バージョンが古いとこのような問題が起こる等、何らかの情報はご存知ないでしょうか??
宜しくお願い致します。

439:nobodyさん
07/06/20 00:03:45
>>438
2ヶ月で上級者になるとは凄い才能だね。では頑張れ。

440:nobodyさん
07/06/20 00:59:21
>>439
低級者のレスはいりません

441:nobodyさん
07/06/20 01:26:40
>>438
一行に500文字が入っているの?
SMTPの仕様だか、実装だかに一行の最大文字数みたいな制限があったはず。
途中に改行入れていて500文字だったらスマン、わからん。

442:nobodyさん
07/06/20 06:41:47
>>441, >>443-
低級者のレスはいりません。

443:438
07/06/20 10:56:39
>>441
どうやらビンゴのようです。
改行入れると化けません。
SMTPの仕様でしたか。。。
この仕様について色々と調べてみたいと思います。
大変参考になりました、ありがとうございます!

444:438
07/06/20 13:04:00
完全に文字化けが直りました。
>>441さんに多謝!

445: ◆lVJAPUTeX.
07/07/24 21:05:58
>>441

RFC2822によれば、CRLFを入れて1000文字 (オクテット) ですね。
Sendmailでは長い行を自動的に分割します。
500文字というのはShift_JISで書かれた日本語での換算かな?

…とここまで書いて1ヶ月前の記事ってのに気づいた。まあいいや。

446:nobodyさん
07/08/19 05:01:02 LoxscrBM
Perlからメールアカウントの追加をしたいんですが、どうやったらええんでしょ?
MTAはqmailでvpopmailでバーチャルドメイン運用してます。

root権限もあります。
perlからの会員登録と同時にメールアカウント作成みたいなもんをしたいんですが。


447:446
07/08/21 17:15:45 HBIrwO1t
誰か~~

助けておくれ><;


448:nobodyさん
07/08/21 19:24:10
UNIXユーザーか仮想ユーザーか、自力でシミュレートして登録するか
外部コマンドを利用するか等で実現方法が変わる。

外部コマンド使う場合
・パイプ、system関数 or バッククォートで外部コマンドを実行
・uidをrootにしsetuidする
・強制的にテイントモードになるのでサニタイズする
ここら辺注意すれば比較的簡単に出来ると思う。

449:446
07/08/23 03:02:56 i/ueFIKi
>>448
ありがとうございます。
おかげさまで解決しました。
Insecure $ENV{PATH} while running setuid at ./hoge.cgi line xx.
というエラーが出て少し悩みましたが。


450:446
07/08/23 22:35:13 i/ueFIKi
すいません。もう一つ質問です。

setuidでroot権限で実行する方法なんですが、mod-perlだとroot権限になりませんね。
できればmod-perlで動かしたいんですが、方法はあるんでしょうか?



451:nobodyさん
07/08/24 06:17:27 ZilCg/Oy
これはまたひどい後出し

452:nobodyさん
07/08/24 13:37:27
>>450
mod_perlの動作原理をちょっと考えればわかることだが、不可能

453:nobodyさん
07/08/24 17:19:07
・BIGSECURITYHOLEオプションでapacheをrootで動作させる。
・外部コマンドを実行するプログラム(setuidされた)をmod_perlから呼び出す。
・sudoを使う
思いつくのはこんぐらいかな。

454:446
07/08/24 23:47:48 IBL+ZrlN
>>453
ありがとうございます。
apacheをrootで動かすのは怖くてできません><;

2つ目のプログラムを分けてmod-perlから呼び出すプログラムに数値を渡すにはファイル書き込みか何かで渡す他ないんですよね?
これならできそうです。

3つ目のsudoは
perlプログラム内(test.cgi)に以下の外部コマンド
`script /dev/null -q -c 'sudo -u root /home/vpopmail/bin/vadduser -r hoge\@hogehoge.com'`;

visudoにて以下を追加
apache ALL=(root) NOPASSWD: /var/www/test.cgi

で実行してみましたが、secureログには
sudo: pam_unix(sudo:auth): authentication failure;
と出ます。sudoがシンプルで良いと思っているのですが、認証失敗は何が原因でしょうか?


455:446
07/08/24 23:57:13 IBL+ZrlN
あ。test.cgi自体をsudoで動作させなきゃ意味ないですよね。
どうしたらtest.cgiをsudoで動作させられるんでしょう?><;



456:nobodyさん
07/08/25 02:55:37
それはperlと関係ない話だからなぁ
sudoでググれば普通にわかるべ

つーか、そもそもmod_perl使わなきゃいいだけの話じゃないのか?
そんな何回も実行するようなもんじゃないし、危ない橋を渡ることもあるまいに

457:446
07/08/25 03:35:05 YKfJDMUn
あ。解決しました。
visudoには
apache ALL=(root) NOPASSWD: /home/vpopmail/bin/vadduser
ですね。

教えてくださった方々ありがとうございました。


458:nobodyさん
07/08/25 07:04:35 uu0LXyl+
URLリンク(icomu.jp)

459:nobodyさん
07/08/25 08:17:45 XkW9fGs3
URLリンク(inoken.tv)

460:nobodyさん
07/10/08 21:00:42
さげさげ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch