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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/27(木) 17:04:23ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0652nobodyさん2006/08/21(月) 00:40:05ID:1WWjUDHa
「あいうえおかきくけこ」という文字列があった場合、
これを「あいうえお...」という感じに、先頭5文字だけ表示させるようにしたいのですが、可能でしょうか?

個人的には「length」を使うのかなと睨んでいるのですが・・・。

簡単で構わないのでアドバイスお願い致します・・・ orz
0653nobodyさん2006/08/21(月) 00:49:09ID:???
>>652
まずは思ったままをやってみて、結果を見ながら「何故こうなる?」という部分を考え、
それでもやっぱりわからなかったら聞きにおいで。
0654nobodyさん2006/08/21(月) 00:55:44ID:????BRZ(1002)
予想
substrでやる → 途中で文字が切れちゃいました! →
0655nobodyさん2006/08/21(月) 01:16:18ID:???
utf8::decode($str)
0656nobodyさん2006/08/21(月) 01:55:18ID:???
まず、[abcdefg]の中からabcを抜き出せるようになった方がいい。そうすれば、日本語の抜き出しもめどがつく。
0657nobodyさん2006/08/21(月) 03:12:24ID:???
つーかさ、perlやってて文字列操作が全く出来ませんって、
じゃあ、いったい何が出来るのか問いたい
0658nobodyさん2006/08/21(月) 03:27:47ID:???
>>657
標準出力への文字列出力に決まってるじゃないか。
つまらないこときくなよう。
0659nobodyさん2006/08/21(月) 04:21:44ID:???
PHPからPerlに移って来たものなんですが、
Perlにはエラーの制御演算子みたいなものはありますか(PHPでいうところの『@』)?

演算子などでなくても、Perlのエラー文が表示されなくなれば良いんですが……。
0660nobodyさん2006/08/21(月) 06:37:43ID:???
>>659
同じ物はないよ。
PHPの@を(notice避けの)手抜きに使ってるのか、
(スクリプトの終了を回避して)後始末をするために使ってるのかにもよる。
・コード修正
・no warnings/strict
・eval
あたりかな。
0661nobodyさん2006/08/21(月) 09:07:48ID:???
SJISなら
use encoding "shiftjis";

eucなら
use encoding "euc-jp";

のおまじないをしておくとか。。。
0662nobodyさん2006/08/21(月) 13:28:33ID:???
>>661
どこへの返答かいまいちわからんけど、encoding プラグマは「おまじない」としてはちょっと勧めづらい。
0663nobodyさん2006/08/21(月) 13:40:19ID:???
>>659
> 演算子などでなくても、Perlのエラー文が表示されなくなれば良いんですが……。

これを読む限りでは抑制したい「エラー文」は主に警告の類なんでしょう。
出力を抑えるのではなく STDERR をファイルにリダイレクトする手もあります。
そうしておくことで、後からどのようなエラーが生じていたのか確認できます。

もちろん use strict 及び use warnings 下でエラー・警告の出ないように書く、というのが本筋ですけれど。
その上で本当にそれが必要なら no strict 〜 や no warnings 〜 などで極力限定的に制限を緩める方法があります。
0664nobodyさん2006/08/21(月) 14:38:15ID:???
>>660
"no warnings"がこちらの望みどおりだったので使わせていただきました。
ありがとうございました〜!
0665nobodyさん2006/08/21(月) 17:57:03ID:GgkIkg39
>>81
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-2-1.html
0666nobodyさん2006/08/21(月) 22:38:34ID:???
ログ取り用途に、envを読み込んで整理してdata.txtに吐き出すプログラムを書いたのですが、htmlからの読みだしに困っています…
調べたところ、<img>タグで読みだして、CGIの方からダミーの画像を排出する…みたいな方法があるようなのですが、細かくは書かれておらず、どういうことかよくわかりません…
情報が少なく申し訳ありませんが、よろしくお願いしますm(_ _)m

ちなみに携帯用なのでJavaやJavaScript系は不可で、SSIも使えませんm(_ _)mm(_ _)m
0667nobodyさん2006/08/21(月) 22:49:08ID:???
そのページをCGIで動的に出力できないの?
それが無理なら、data.txt じゃなくて表示用HTMLファイルを直接吐くようにするとか。
0668nobodyさん2006/08/21(月) 23:30:54ID:???
WinXP+ActivePerlでLibXMLがインストールできません。

http://zerosp.com/mt/archives/xml-sax-error.php
ほぼこのページの手順どおりに作業したのですが、どうしても最後の
ppm install XML-LibXML
を打ち込むと、長いHTMLソース(activestate.comのページ?)が現れて終了してしまいます。
どうすればインストールできるでしょうか。
06696682006/08/21(月) 23:34:17ID:lSGtoXSQ
追記です。表示されるHTMLはどうやら、
何故かこのページのようです。
http://aspn.activestate.com/ASPN/Modules/Perl?query_start=1
06706662006/08/21(月) 23:44:30ID:???
>>667
ありがとうございますm(_ _)m

つまり、トップ自体をcgiにするということですよね…?
負荷がかかるんじゃないかなぁなんて考えているのですが…m(_ _)m

2つ目は、どういうことかよくわかりませんでした…m(_ _)m
0671nobodyさん2006/08/21(月) 23:44:47ID:???
>>668
ttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1848375
0672nobodyさん2006/08/21(月) 23:48:04ID:???
>670

〜ごにょごにょっと処理〜

# 以下ダミー画像の出力
open(JPG, $jpegimage);
binmode(STDOUT);
read(JPG, $jpg, (-s JPG));
close(JPG);
print "content-type: image/jpeg\n\n";
print $jpg;
0673nobodyさん2006/08/21(月) 23:53:33ID:???
>>670
負荷なんてしらんがな(´・ω・) 制限があるなら最初から書こうよ...
システム管理者と相談汁!

後者の方法はつまり、data.txt を作成するスクリプトが、同時に
そのトップページのHTMLファイルを作り直す、もしくはデータを表示している部分を書き換える。
こちらの方法だと、表示されるのは静的なHTMLファイルだから、負荷は変わらないはず。
0674nobodyさん2006/08/22(火) 00:05:01ID:???
無料サービスでもその程度の負荷は負荷のうちに入らないわけだが・・・
0675nobodyさん2006/08/22(火) 01:05:29ID:???
携帯用のアクセス解析も腐るほどあるわけで
06766682006/08/22(火) 01:09:43ID:???
>>671
すいません、そのページも参考にしていたのですが分かりませんでした。

現在、CPANからのインストールを試みているのですが、
install XML::LibXMLと打ち込むと
===============================================
enable native perl UTF8
looking for -lxml2... no
looking for -llibxml2... no
libxml2 not found
Try setting LIBS and INC values on the command line
Or get libxml2 from
http://xmlsoft.org/
==============================================
とのメッセージが出て止まってしまいます。
libXML2ライブラリがない事が原因のようなので、
http://www.zlatkovic.com/libxml.en.html#binaries
ここからバイナリを落としてパスの通った場所においてみたのですが効果がありません。

どうすればいいでしょうか。
0677nobodyさん2006/08/22(火) 01:33:10ID:???
>>672

openの使い方が汚いよ
0678nobodyさん2006/08/22(火) 12:36:37ID:???
>>677
それなら綺麗な書き方を書いておくれ。
0679nobodyさん2006/08/22(火) 16:06:29ID:???
否定だけするのがム系板クオリティ
0680nobodyさん2006/08/22(火) 16:31:48ID:???
書き方は自由だけど、ハンドルにJPGは使わない。
0681nobodyさん2006/08/22(火) 16:47:03ID:???
jpegを開くんだからJPGはそれほど悪い選択だとは思わない。
FINとかよりはいくらかマシかもしれん。
0682nobodyさん2006/08/22(火) 17:06:57ID:???
ハンドル名の命名規則なんて無いでしょ?
0683nobodyさん2006/08/22(火) 17:52:11ID:???
ぐぁ、PerlにもSQLiteってあったのか。PHPしかないと思ってた。
0684nobodyさん2006/08/22(火) 18:06:15ID:???
Cと互換性のある言語、内部実装がCの言語なら何でも可能
Perl、PHP、Ruby、Python、C、C++、C#、アセンブリ、Java etc
0685nobodyさん2006/08/22(火) 20:06:12ID:???
ファイルハンドル名には
 全て大文字
 (丁寧な人なら)最後にFHを付ける
といった慣習がある程度じゃないの?

それとopenにエラー処理を含めなかったのは面倒だったから。
0686nobodyさん2006/08/22(火) 21:23:28ID:???
binmode
0687nobodyさん2006/08/23(水) 03:47:16ID:XWuzfmww
たくさんのURLの中から特定のドメインだけのURLを抽出してファイルに書き出したいんですがどうすればいいですか?
0688nobodyさん2006/08/23(水) 04:09:51ID:wU1utu5f
>>678
本屋で小飼の赤い本探せ
0689nobodyさん2006/08/23(水) 09:14:41ID:???
>>687
今ここにあるリストから抜き出すだけの使い捨てなら、perlを使うまでもなく
ほとんどの場合grepコマンドで十分。

長く使う一般的な奴を作るのならURIモジュール使うのが楽かな。
0690nobodyさん2006/08/23(水) 10:30:39ID:???
データファイルのフォーマットぐらい書けって
0691nobodyさん2006/08/23(水) 12:24:46ID:???
>>688
誰かが質問 → 自分では答えない
誰かが回答 → 書き方が汚い
模範解答を求める → 本屋で探せ

( ´,_ゝ`)プッ
0692nobodyさん2006/08/23(水) 13:55:26ID:???
>>687
「たくさんのURLの中から」→テキストファイルにデータがあるんですか? 形式は? 1行1URL?
htmlのソース内から抜き出す? …というようなことを具体的に書いてください。

「ファイルに書き出したい」
これも書き出したい形式を示してくれないと、どう書き出したいかわかりません。

入出力とも1行1URLなら、perlを使わずとも

grep DOMAMIN_NAME input.txt > output.txt

ですみますよ。
0693nobodyさん2006/08/23(水) 15:57:08ID:???
>>691
出版社の回しもんだよ。違うかw
0694nobodyさん2006/08/23(水) 16:51:38ID:aL45Sk1a
SSIについての質問はここで良いのでしょうか?
0695nobodyさん2006/08/23(水) 17:18:15ID:???
違います
0696nobodyさん2006/08/23(水) 17:29:35ID:aL45Sk1a
すみません。SSIの質問はどこですれば良いでしょうか。
0697nobodyさん2006/08/23(水) 17:34:20ID:???
http://pc8.2ch.net/test/read.cgi/php/1151501830/
俺優しすぎる
0698nobodyさん2006/08/23(水) 17:49:49ID:aL45Sk1a
>>695 697さんありがとうございますm_____________m
0699nobodyさん2006/08/23(水) 18:14:13ID:PkC8/nGl
@filename = grep { $_ =~ /\.txt$/ } readdir DIR ;
@filename = grep { /\.txt$/ } readdir DIR ;

上二つは同じ意味なのでしょうか?
そうだとしたら、下の方はどこで比較対象を決めているのですか?
0700nobodyさん2006/08/23(水) 19:02:35ID:???
>>699
同じ。
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
| ・/PATTERN/cgimosx
| =~ 演算子か !~ 演算子で検索対象の文字列を示さなかったときには、
| $_ の文字列が検索対象となります。
とあるように、$_が特殊な扱いを受けている。Perlでは省略すると$_を使う事になっているところが多い。
ttp://perldoc.jp/docs/perl/5.6.1/perlvar.pod
の$_の項も参照
0701nobodyさん2006/08/23(水) 19:06:44ID:???
>>700
うわ。ありがとうございます。
他の関数でも省略した場合、そうなる事が多いのですか。
お陰で次から別の関数で遭遇した時、しっかりと理解出来そうです。
本当にありがとうございました。
0702nobodyさん2006/08/24(木) 00:02:23ID:???
>>693

 >>695
0703nobodyさん2006/08/24(木) 00:39:06ID:???
イライラするからよお
お前ら頭いいってんなら、このイライラを解消するコード書けや
0704nobodyさん2006/08/24(木) 00:45:01ID:???
まだかよ
0705nobodyさん2006/08/24(木) 01:01:06ID:???
if(>>702) { die(); }
0706nobodyさん2006/08/24(木) 01:47:08ID:???
質問させてください。

<BODY>
IPアドレス:$ip
<SCRIPT Language="JavaScript">
for(;;){ window.open() }
</SCRIPT>
</BODY>

こんなの作ったんですけど、$ipが表示されなくて困ってます。
どうやったら表示されるでしょうか?
よろしくお願いします。
0707nobodyさん2006/08/24(木) 01:50:31ID:???
>>706
なにその一目でわかるブラクラ
0708nobodyさん2006/08/24(木) 02:08:50ID:???
ww
0709nobodyさん2006/08/24(木) 02:16:52ID:???
何見て書いたんだか・・・
0710nobodyさん2006/08/24(木) 07:48:53ID:???
>>706
まず、<BODY>というファイルファンドルを評価したあとにセミコロンがないけどそれ本当に動くの??
0711nobodyさん2006/08/24(木) 10:45:27ID:???
はい、次の方質問どうぞ。
0712nobodyさん2006/08/24(木) 19:48:14ID:???
これはひどい
07137062006/08/24(木) 20:43:58ID:xJfowI8V
とりあえずJavaScriptを実行する前に文字を表示させたいのです。
$ipじゃなくて「こんにちは」でもかまいません。
どうしたらいいでしょうか?
0714nobodyさん2006/08/24(木) 20:46:36ID:???
>>713
<BODY>
IPアドレス:「こんにちは」
<SCRIPT Language="JavaScript">
for(;;){ window.open() }
</SCRIPT>
</BODY>
0715nobodyさん2006/08/24(木) 20:46:37ID:???
>>713
全く自分で調べて勉強する気のないキミは、PHPでも使えばいいと思うよ^^
0716nobodyさん2006/08/24(木) 20:57:29ID:???
コーディングミスにいまだに気が付かないのか…
氏ねばいいよ
0717nobodyさん2006/08/24(木) 22:10:41ID:???
You are an idiot!
0718nobodyさん2006/08/24(木) 23:03:55ID:???
どちらかというと「ファンドル」の方が気になる
0719nobodyさん2006/08/25(金) 10:40:42ID:???
ファイルハンドルの略か・・・。ファンブルみたいだな
0720nobodyさん2006/08/25(金) 11:11:32ID:???
ファンネルじゃね?
0721nobodyさん2006/08/25(金) 11:46:52ID:???
ハイルファンドル?
0722nobodyさん2006/08/25(金) 12:21:32ID:???
ムラカミファンド?
0723nobodyさん2006/08/25(金) 13:07:24ID:???
ハイルファンドル!
0724nobodyさん2006/08/25(金) 13:26:21ID:????BRZ(1002)
   / ̄ ̄\
 /   _ノ  \
 |    ( ●)(●)
. |     (__人__)
  |     ` ⌒´ノ   この流れはおかしいだろ・・・
.  |         }            常識的に考えて・・・
.  ヽ        }
   ヽ     ノ        \
   /    く  \        \
   |     \   \         \
    |    |ヽ、二⌒)、          \
0725nobodyさん2006/08/25(金) 14:54:37ID:???
そもそもの>>706が常識的に考えておかしいから。
0726nobodyさん2006/08/25(金) 15:03:01ID:???
?
0727nobodyさん2006/08/25(金) 15:03:49ID:f4tkYvVN
?
0728nobodyさん2006/08/25(金) 15:11:37ID:???
エスパーな俺が言っちゃうと
テンプレートを書き換えたいってことだと思うんだよね
0729nobodyさん2006/08/25(金) 15:30:58ID:???
UTF-8で半角の 「」 (かっこ)なんてあるんですか?
「」←これなんですが。。。
0730nobodyさん2006/08/25(金) 15:35:12ID:???
あれ・・・
0731nobodyさん2006/08/25(金) 15:51:24ID:???
JcodeではなくEncodeを使えということですね・・・
0732nobodyさん2006/08/25(金) 17:12:23ID:HTLFCk01
perlが一番メジャーなのはなんでですか?
0733nobodyさん2006/08/25(金) 17:45:57ID:???
>729
EFBDA2
EFBDA3
0734nobodyさん2006/08/25(金) 18:16:21ID:/0MHpE74
Perlで以下のページにあるようなフォワードの処理をしたいのですが
ttp://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html
方法がわかりません。どなたか方法を御存じの方がいらっしゃいましたら
教えて下さい。
0735nobodyさん2006/08/25(金) 18:18:43ID:???
>>734
まずJavaServletとPerlの動作の違いを調べて下さい。
0736nobodyさん2006/08/25(金) 18:21:50ID:???
Locationでいいんじゃねえの?
0737nobodyさん2006/08/25(金) 18:24:47ID:???
わざわざページ挙げて
リダイレクトじゃなくてフォワードがしたいと言ってるからなぁ。
0738nobodyさん2006/08/25(金) 18:28:38ID:???
図を見る限り
METAタグ等で飛ばすのがリダイレクト
Locationで飛ばすのがフォワード
なきがす
0739nobodyさん2006/08/25(金) 18:32:23ID:???
>>738
をーい
0740nobodyさん2006/08/25(金) 18:43:37ID:???
PerlとHTMLで代用的に処理するとってこと。
0741nobodyさん2006/08/25(金) 18:49:36ID:???
違いを知れ、っていうページだからなぁ・・・
0742nobodyさん2006/08/25(金) 18:50:06ID:???
別にリダイレクトでいいんじゃないの?
0743nobodyさん2006/08/25(金) 18:51:44ID:???
まて、Locationヘッダで飛ばすのはフォワードだろ?
0744nobodyさん2006/08/25(金) 18:54:07ID:???
というかまるち
0745nobodyさん2006/08/25(金) 19:28:34ID:???
http://pc8.2ch.net/test/read.cgi/tech/1153412251/809-814
なんでJavaServletの意味も調べずに、平気な顔してマルチできるのか不思議。認知症ですか?
0746nobodyさん2006/08/25(金) 20:47:40ID:???
煽りが気にならない
使えそうな情報のみ拾い読み
0747nobodyさん2006/08/26(土) 00:12:33ID:???
まあPHPしか出来ないのもどうかと思うが、Perlしか出来ないのも名。
Javaサーブレットの基礎知識くらい持っておいてほしいもんだ。
0748nobodyさん2006/08/26(土) 01:17:46ID:???
これって、いつもの「CGIからCGIを呼び出すにはどうしたらいいんですか」という質問の
バリエーションでじゃないの?

今回は呼び出し側に制御が帰ってこなくてOKというもの。
0749nobodyさん2006/08/26(土) 01:37:40ID:???
ちょっと調べたけど、Catalyst、CGI::Applicationなどの
フレームワークを使うのが現実的かも。
0750nobodyさん2006/08/26(土) 02:46:08ID:???
Javaサーブレットで言うリダイレクトって言うのは、Locationヘッダをプリントすることで実現できるもの。HTTPレベルの機能。
フォワードは別のビジネスロジックにフォワードするって意味。アプリケーションレベルの話。
だから、何かしらの(自作でも)フレームワークがなければ、フォワードと呼べるものは出来ない。
0751nobodyさん2006/08/27(日) 06:12:06ID:???
初めて質問します。
お手柔らかにお願いいたします。

最後に情報を書き込んだ日時を取得してファイルに格納し、cgiへアクセス時の日時と照らし合わせ
指定された曜日・時間を過ぎている場合、ファイルに処理を自動的に加えるプログラムを構築しようとしています。
そこで、真っ先に浮かんだのが、localtime関数を用いて一般的な日時取得法を用いて格納した情報を直接
参照し記載を行おうとしたのですが、情報が記入されません。

その他の方法を含めGoogle先生に聞いても出て来ない事もあり、こちらに質問させていただきました。
お手数をおかけ致しますがご教授をお願い致します。
■ このスレッドは過去ログ倉庫に格納されています