トップページ⇒php
1001コメント316KB

Perlコーディング初心者質問スレ Part 47

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/03/01(水) 15:39:31ID:???
Perlのコーディングで困ってる人のスレです。 

【投稿する際の注意】 
質問するときは内容をよく吟味してから投稿してください。 
「コマンドの意味がわかんない」とかはマニュアル見ましょう。 
回答者さんは何でも屋じゃありません。 

1: 自分はこういう事がしたい。 
2: それでこんな風にやってみたが・・・ 
3: こんなエラーが出て上手く行かなかった。 

最低でも1と3が無いと誰も答えられないよ。 
ソース貼る時は、全角スペースでインデント忘れずに。 
良い回答は良い質問から。一緒に勉強しましょう。 

過去ログやお勧めサイトは >>2-10 
0586nobodyさん2006/04/09(日) 21:55:42ID:???
foreach $key(sort(keys(%icon))){
0587 ◆aiY4htt2.2 NGNG
print map {
 sprintf qq|<OPTION value="%s"%s>$key</OPTION>\n|,
  $icon{$key},
  $icon eq $key
   ? ' selected'
   : ''
 } sort keys %icon;

って書いちゃうよなぁ、、、@わるいくせ?
0588nobodyさん2006/04/09(日) 22:16:58ID:???
V と C くらい分けろ。
05895852006/04/10(月) 02:07:12ID:JCUetGcd
>>586
どうも有り難うございます。
問題なく動きました。

>>587
こんなやり方もあるんですね。
まだ超初心者なので、細かい意味は不明なんですが。
勉強します。
0590nobodyさん2006/04/10(月) 08:46:55ID:???
> まだ超初心者なので、細かい意味は不明なんですが。

何も細かい意味なんてありませんよ。
0591nobodyさん2006/04/10(月) 10:50:22ID:???
ファイルパスを指定すると深い階層にファイルを生成してくれるモジュールないでしょうか?
ディレクトリ生成ならFile::Pathでいけるんですが。
ディレクトリ作った後にファイル生成するのが早いかな・・・
0592nobodyさん2006/04/10(月) 10:53:28ID:???
my $buf = "/prefix/to/data/dir";
my $f = "/fuck/you/i/do/want/fucking";
foreach (split(m|/|, $f)) {
next unless $_;
$buf .= "/" . $_ ;
mkdir($buf);
}
0593nobodyさん2006/04/10(月) 11:15:40ID:???
>>592
ありがとうございます。
ただそれだとFile::Pathと同じことですよね?
ファイル生成までを一気にやってくれる既存モジュールを探しています。
自分で書いたほうが早いとは思うんですが、ご存知でしたら後学のために教えてください。
0594nobodyさん2006/04/10(月) 17:04:46ID:???
やべえ無限ループやっちまった
シェルでログインできん
0595nobodyさん2006/04/10(月) 17:09:16ID:???
別のコンソールを開いて、そっちからkill
…それすらできない状態?
0596nobodyさん2006/04/10(月) 17:21:20ID:???
コンソール?サーバセンター行き?
0597nobodyさん2006/04/10(月) 17:37:13ID:???
再帰処理のばかあああああああああああああああ
0598nobodyさん2006/04/10(月) 17:51:06ID:???
あ〜あ
0599nobodyさん2006/04/10(月) 17:57:44ID:???
local で試せよと。
0600nobodyさん2006/04/10(月) 18:04:26ID:???
散々試した処理をちょっと変更してしまったのです・・・
0601nobodyさん2006/04/10(月) 18:26:17ID:???
で、もう kill したんだよな?
まだならさっさとしる。
0602nobodyさん2006/04/10(月) 18:29:05ID:???
サーバセンターに電話して電源ぽちっとしてもらいました・・・
テストサーバなので実害はありませんでしたが、以後同じ過ちを繰り返さぬよう(略

orz
0603nobodyさん2006/04/10(月) 18:57:13ID:???
HTML::TemplateのTMPL_LOOPでテーブルセルの三段組作る方法ないの?
面倒だからモジュール直で書き換えちゃったよorz
0604nobodyさん2006/04/10(月) 20:19:31ID:???
>>603
テーブルセルの三段組ってのがわからんのでなんとも。
どういう変数があってそれををどういうHTMLにしたいのかね。
0605nobodyさん2006/04/10(月) 23:36:36ID:???
>>602
頼むから開発から手を引いてくれ
0606nobodyさん2006/04/11(火) 00:35:41ID:???
>>605
i|!| |i┏┓! i!┏┳┓| |||i|!i| ||!i|| |||ii| ||| ||| |i||!|i│i!┏┓i!|
|i|┏┛┗━╋┻┛|i!||!|ii|| i|!i||i|┏━┓ ┏┓i|i| i┃┃i!|
i||┗┓┏┓┃||i┏━━━━┓┗━┛ ┃┃|i||!i┃┃i!|
|i |!|i┃┃┃┃i||┗━━━━┛|i|| || ||||!┃┃i|i| i┗┛!i|
i||i ||┃┃┃┃|! |||i ||i    !|||!|┏━━┛┃|i||!i┏┓i|!
|i!i |!┗┛┗┛i|!i|  / |   / | ┗━━━┛i|i| i┗┛i!|
i| |||i|!i| ||!|i||i!   /,_ ┴─/ ヽ      |!i| ||| |i||!|i|i|||| ||i
|i|| ||i!i||     (_゜.,》.'(_゜,》)ミ ヽ       ! | |!i||!|ii||!|ii|
i|ii        / ,,__,ニ、、 ノ( |           i|i!|i|
|i        | Y~~/~y} `, ~ |  そ、そんなー…   |i
!.          | ,k.,.,!,.,.,r| ,!  く                 .!
i        / <ニニニ'ノ    \               l
0607nobodyさん2006/04/11(火) 07:13:56ID:???
>>602
まずはシェルの基本的な使い方勉強しる。
telnet と kill くらいでもいいから。

サポセンに電話しなくても自分で対処できるようになるから。
0608nobodyさん2006/04/11(火) 09:05:56ID:???
forkしまくってプロセスが爆発的に増えるような奴だと
ログインすら満足にできなくなることがあるよ。昔やっち
まったことがある(笑)
0609nobodyさん2006/04/11(火) 10:04:30ID:???
>>607
ターミナルすら繋がらない状態でした
鯖が手元にあればコンソールで入れたかもだけど
たぶんメモリ使用量が限界いってたと思われます

>>605
ほんとそう思いますよね(つд`;)
0610nobodyさん2006/04/11(火) 16:06:02ID:???
ファイル作りまくっても反応返ってこなくなるよ。
鯖に入ってても、lsすら返ってこなくなる。
forkよりましだけどね。
0611nobodyさん2006/04/11(火) 18:59:01ID:???
連想配列の配列
my $aaa = [
{bbb=>1,ccc=>2,ddd=>3,},
{bbb=>4,ccc=>5,ddd=>6,},
{bbb=>7,ccc=>8,ddd=>9,},
];
をcccでソートして順番に出したいんですが
どうしたらよいでしょうか?
0612nobodyさん2006/04/11(火) 19:05:38ID:???
>>611
sortにcccで比較するように書いたブロックを渡す
sort { $a->{ccc} <=> $b->{ccc} } @$aaa
0613nobodyさん2006/04/11(火) 22:21:41ID:???
SQL につっこめめばー?
0614nobodyさん2006/04/12(水) 01:19:55ID:???
>613
ソートするためにわざわざSQL使うの?
SQL使わないとソートできないの?
0615nobodyさん2006/04/12(水) 01:26:35ID:???
規模がでかくなるとまんどくさくね?
0616nobodyさん2006/04/12(水) 07:12:28ID:???
>615
規模がでかくなっても
sort { $a->{ccc} <=> $b->{ccc} } @$aaa
のままだと思うのですが、なにか特殊なことをする必要があるのでしょうか?
0617nobodyさん2006/04/12(水) 09:54:34ID:???
「SQL につっこむ」ってどういう意味?
RDBMS でも使えば、っていうのならわかるけど。
06186112006/04/12(水) 10:01:24ID:???
>>612
ありがとうございます!勉強になりました。
0619nobodyさん2006/04/12(水) 10:45:00ID:???
>>617
無理して知る必要もないかと。
0620nobodyさん2006/04/12(水) 11:21:30ID:???
>>619
誤爆?
0621nobodyさん2006/04/12(水) 13:51:21ID:???
>>617
無理して知る必要もないかと。
0622nobodyさん2006/04/12(水) 14:15:01ID:???
>>621
誤爆?
0623nobodyさん2006/04/12(水) 14:16:59ID:???
>>622
無理して知る必要もないかと。
0624nobodyさんNGNG
相変わらずレベル低くてイイヨイイヨーw
0625nobodyさん2006/04/12(水) 14:23:30ID:???
>>624
誤爆?
0626nobodyさん2006/04/12(水) 15:16:50ID:Cw1Ovj1p
s関数についての質問です。
参考書には、(s/検索文字/置換文字/)という形で書かれているのですが。
コードを読んでいると、以下のような書き方を見つけました。

$datadir =~ s!/$!!

ググって見たんですが、この書式について書かれたドキュメントを
見つけることが出来ませんでした。
この命令がどのような挙動をするか教えてください。
0627nobodyさん2006/04/12(水) 15:17:32ID:???
実行してみればよいのでは?
0628nobodyさん2006/04/12(水) 15:19:08ID:???
>>626
つperlop
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
Quote and Quote-like Operatorsのところ
0629nobodyさん2006/04/12(水) 15:38:52ID:???
「!」をデリミタとしてるわけですか
0630nobodyさん2006/04/12(水) 17:45:11ID:ZYfftFgu
すみません
Microsoft WORD の MIME typesはなんになるのでしょうか?
アップローダに認識を追加したいのです
0631nobodyさん2006/04/12(水) 17:55:54ID:0tB7vJSs
PATH_INFOで
http://example.com/index.pl/hogehoge/
を
http://example.com/hogehoge/
でアクセスできるようにするにはどうすればいいですか
index.plを省略したいんです
0632nobodyさん2006/04/12(水) 17:58:25ID:Sri0F7ev
http://list3.auctions.yahoo.co.jp/jp/23352-category-leaf.html?
0633nobodyさん2006/04/12(水) 18:07:23ID:???
>>630

      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ ,  /,   ,\  Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    >┻━┻'r‐'´
      ヽ_         |
         ヽ _ _ 」

  ググレカス [ Gugurecus ]
  ( 2006 〜 没年不明 )
0634nobodyさん2006/04/12(水) 18:12:50ID:???
>>633
      、ヾ:;:::::::::::::::::::::':::::::-、
     、ミ::::::';:::::::::::::::::;';:::::::::::::::::ヾ、
    i':::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
    ミ:::::::::::::::::;:;;::::::r -‐'''"'ヽ::::::::::!;!
     ミ::;r--‐'  `ヾ     ミ::::::::::i
     .l::!           ;.:ミ、:::;::::l,r‐、
     ヾ         _,......::::/'ヾ:::: ;.!
       !      .::'r t.j;、:::/:::: ::' ' !
       i.llir_,=:ll!,.- :l:. ::::'::',!:::::::; ...!-'!:ヽ
        _! ``´' l! ' ,`−´ .::::: ::::::::l:::::::`:::
        ヾ ‐ '´;  ,ィ:.,    .::::::::::::l:::::::::::::
         ヽ  ,r';';":;:::";';;! ..:::::::::::/:::::::::::::
       ,r::::::::ヽ ''-''.二-‐'"..:::::::::;:::::::::::::::::::
      /::::::::::::::::::::ヽ、 __,...::::::::::;:::::::::::::::::::::::
      l:::::::::::::::::::::::::! /::::!:::::. /::::::::::::::::::::::::
     /:::::::::::::::::::::::::l ./::::::::ヽ /:::::::::::::::::::::::::::

         ツ・レタ [T .Reta]
          (1940〜 ウガンダ)
0635nobodyさん2006/04/12(水) 19:26:44ID:EyVZ0TsJ
すいませんどなたかお願い致します。
CGI.pmによる、「アップロードされたファイルのサイズ取得方法」
ですがどのようにすれば良いのでしょうか?
0636nobodyさんNGNG
>>630
application/msword

>>631
mod_rewriteでも使えや
0637nobodyさん2006/04/12(水) 20:17:17ID:???
>>635
statの7
0638nobodyさん2006/04/12(水) 22:32:12ID:???
>>636
有り難うございます

ずるぼんアップローダですが、本体スクリプトのMINE typesの部分に追加
するだけじゃだめなようですね
0639nobodyさん2006/04/13(木) 04:37:15ID:???
ごめん、ちょっと教えて。

ローカルサーバ (Win+Apache) で、Perl を C:\Perl にインストールしたとすると、
普通は 1行目を #!C:/Perl/bin/perl って書かないとじゃんね。
これ1行目 #!/usr/bin/perl のまま変更しなくてよくするにはどうするんだっけ?
いつか見た記憶があるんだけど忘れちゃったw

C:\usr\ に Perlインストールする、とか、
C:\usr\bin に perl.exe コピーすればなぜか使える、とか、
Apache じゃなく ANHTTPD ならイケル、とか、は知ってるけど、それ以外で何とか。
0640nobodyさん2006/04/13(木) 06:02:52ID:???
とか言ってたらごめん自己解決 orz

httpd.conf で 「ScriptInterpreterSource registry」 を有効にして、
レジストリで 「HKEY_CLASSES_ROOT」 の 「.pl」 のとこのを 「.cgi」 にコピーしたらできたー。

#!/usr/bin/perl  討 伐 完 了
0641nobodyさん2006/04/13(木) 08:39:20ID:???
C:にインスコする時点で終っとる
0642nobodyさん2006/04/13(木) 13:40:43ID:???
いや、実際インスコしてんのは D: だけど、今回は C: のがわかりやすいと思ってそうしたんだけどね。
検索かける分にも "d:\perl" より "c:\perl" のが多いわけだし。
わざわざツッツキあり^^
0643nobodyさん2006/04/13(木) 14:04:20ID:???
#!/
がどこを指すか、わかるよな?
0644nobodyさん2006/04/13(木) 14:07:00ID:???
>>643
それはわかるが、言いたいことがわからんしw
0645nobodyさん2006/04/13(木) 14:31:04ID:???
>>644
無理して知る必要もないかと。
0646nobodyさん2006/04/13(木) 14:41:03ID:???
Winの場合PATH通ってれば#!perlでも大丈夫じゃん
0647nobodyさん2006/04/13(木) 14:56:09ID:???
そこでlighttpdですよ
0648nobodyさん2006/04/13(木) 15:16:42ID:???
つシンボリックリンク
0649nobodyさん2006/04/13(木) 17:10:34ID:???
つシボリクリック
0650nobodyさん2006/04/13(木) 17:52:38ID:???
shebangを #!/usr/bin/perl にしたままWin鯖で動かすのが目的って質問文に書いてあるだろ
0651nobodyさん2006/04/13(木) 18:05:56ID:???
C:\usr\bin
ここにシンボリックリンクを置けばいいんじゃないの?コピーではなく。
0652nobodyさん2006/04/13(木) 18:11:12ID:???
うん。ショートカットとかいうのを
\usr\bin\perl
\usr\local\bin\perl
として転がしておけば #!/usr/local/bin/perl -w みたいなオプションつきのも
記述どおりの動きになるんじゃないのかな。
0653nobodyさん2006/04/13(木) 18:14:16ID:???
ショートカットじゃ無理だと思う。
06546522006/04/13(木) 18:20:22ID:???
あら、無理なんですか。ウニクスのsymlinkみたいなものかと思ってました。
# 普段は /usr/local/bin/perl が本体、 /usr/bin/perl -> /usr/local/bin/perl で使用。

Win機で試してみます。
06556522006/04/13(木) 18:36:43ID:???
>127.0.0.1 - - [13/Apr/2006:18:25:47 +0900] "GET /test.cgi HTTP/1.1" 500 1183

>[Thu Apr 13 18:25:47 2006] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 :
> couldn't create child process: 720002: test.cgi

ショートカットでは無理なんですね。
perl.exeのコピーを置かないとダメみたいです。こちらは200 OK。

自分であまり使わない環境なのになんでテストしてるんだろう…。
0656nobodyさん2006/04/13(木) 18:46:11ID:???
ショートカット    ×
シンボリックリンク ○
コピー         ○

Winにもsymlinkがあるからそれを使えばコピーじゃなくておk、ということです。
0657nobodyさん2006/04/13(木) 18:53:08ID:???
すごく突っ込まれそうなレスになってしまったがまあいいや。

ttp://eside.homeip.net/free/symlink2k.html
これ、便利です。
0658nobodyさん2006/04/13(木) 19:01:09ID:???
起動するインタプリタを設定によって変えるモジュールあっても良いな…作るか便利そうだし
06596522006/04/13(木) 19:09:25ID:???
横レスから板違いになってすみません。

>>656-657
情報ありがとうございます。
ショートカットでない、ジャンクションっていうのがあるのを知りませんでした。
自分でも調べてみます。
0660nobodyさん2006/04/13(木) 19:39:25ID:???
Cygwin のシンボリックリンクってコレだったのか。
06616392006/04/13(木) 20:04:21ID:???
えええ、Win でもシンボリックリンクっぽいのできたんかーΣ(゚Д゚)
みんな良レスありがとないー。
0662nobodyさん2006/04/13(木) 23:42:55ID:???
なにもそこまでがんばらんでも、管理するwebサイトの配置をD:\のどこかにして、
perlインスコ先をD:\usrにすれば/usr/bin/perlって指定出来るじゃん
0663nobodyさん2006/04/13(木) 23:49:06ID:???
まあ、Windows なんかで鯖やるようなやつはばかです。
それがたとえ実験環境であってもです。
0664nobodyさん2006/04/14(金) 00:25:23ID:???
レン鯖で実験されるよりは遥かにマシだから俺は許す
0665nobodyさん2006/04/14(金) 00:26:48ID:???
VMware player 使うべきなんじゃないかと思う。
0666nobodyさん2006/04/14(金) 00:30:55ID:???
レン鯖で実験するような人間がVMware使えるわけがない
ましてやLinuxインスコなんてとてもとても
0667nobodyさん2006/04/14(金) 00:40:26ID:???
という固定観念。
0668nobodyさん2006/04/14(金) 00:57:40ID:???
>>662
だって、php とか c++ とかを D\:php とか D:\cpp とかにいれてるのに、perl だけ1行目のためだけに D:\usr にするとかありえなくね?
レジストリとかリンクいじるだけでできるんならそっちのがイイヨ(´・ω・`)
0669nobodyさん2006/04/14(金) 01:05:31ID:???
ぷげらっちょ
0670nobodyさん2006/04/14(金) 02:34:19ID:???
.cgiをperlに関連付けして使ってる。
1.3系列だけど。
06716582006/04/14(金) 03:34:06ID:???
ということでmod_shebang作った。
ttp://www.42ch.net/UploaderSmall/source/1144953006.zip
モジュールをロードして
ShebangAlterCommand /usr/bin/perl perl.exe
こんな感じ
0672nobodyさん2006/04/14(金) 04:18:43ID:???
はやっ。乙…なんだけど、テストするスキもないまま書いててすまんです。

ある日、apacheのdistから取ってきたtar玉ほどいて mod_shebang.c が入ってたら
腹抱えて笑うんだろうね。
0673nobodyさん2006/04/14(金) 12:37:47ID:???
>668
俺は PHP を /usr/php に入れてるしなぁ

運用のときの事を考えないやつ多いんだな・・・
0674nobodyさん2006/04/14(金) 12:54:18ID:???
shebang 行は、ふつー #! @PERL@ じゃネーノ?
0675nobodyさん2006/04/14(金) 13:45:24ID:???
>>673
php って mod_php 環境で使うのがふつーだとおもてた。
0676nobodyさん2006/04/14(金) 14:10:16ID:???
いい加減スレ違いだから消えてくれないか
あくまでコーディングの質問のスレだから。
0677nobodyさん2006/04/14(金) 14:11:00ID:???
コマンドラインツールとして PHP を使ってる酔狂なひととみた。
0678nobodyさん2006/04/14(金) 14:44:54ID:???
たとえば .svn/ を消すためにウンコスクリプトをでっちあげてしまったがために
dis られるような、そんな「酔狂」なひと?
0679nobodyさん2006/04/14(金) 16:41:08ID:???
はてな以外ではじめて「disる」の表現をみた
0680nobodyさん2006/04/14(金) 16:49:09ID:???
つ http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=dis%E3%82%8B
0681nobodyさん2006/04/14(金) 19:02:36ID:???
http://www.google.co.jp/search?q=%22dis%E3%82%8B%22
0682nobodyさん2006/04/15(土) 14:22:44ID:WxXRjWCr
Shift_JISの掲示板で半角の「¥」を入力すると、
データファイルでは「¥」になっているのに、
半角「\」で表示されてしまいます。
これを退避する方法はありますか?
0683nobodyさん2006/04/15(土) 14:40:49ID:???
エンコードとか関係ない。
フォントによる。
0684nobodyさん2006/04/15(土) 15:18:27ID:TyfvpvYA
正規表現についての質問です。
文字aから始まって文字bで終わる文字列のなかでも、
文字zが入らないような文字列にマッチさせるにはどうしたらいいでしょうか。
a.*[^z].*b
ではまったく意味をなしませんよね・・・。
0685nobodyさん2006/04/15(土) 15:21:49ID:???
a[^z]*?b
0686nobodyさん2006/04/15(土) 15:49:39ID:???
>>684
こう
^a[^z]*b$
■ このスレッドは過去ログ倉庫に格納されています