Perlコーディング初心者質問スレ Part 51
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/07/27(木) 17:04:23ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0581nobodyさん
2006/08/17(木) 13:37:45ID:???変数や関数の名前にハイフンを使う事はできない。
ハッシュのキーはクオートで囲む必要はない。
$form{test}としても常に大丈夫であって、strictも通る。
perl救命病棟という変な名前の本にその辺のかなりマニ
アックな話が載っている。
0582nobodyさん
2006/08/17(木) 17:21:35ID:???0583nobodyさん
2006/08/17(木) 17:33:16ID:???CSSいじってperlいじってhtmlいじって。
そんなことしてるときに何かに名前をあげるときが来る。
「
う〜んこれはホゲの背景のためだからだからhoge-backとするか。
ん?ハイフン?アンダーバー?どっちだっけ?
他を見てみるか・・・
ハイフンだったな。
それじゃ画像を作るか。ん?ハイフンか?アンダーバーか?
」
なんてこともある。
0584nobodyさん
2006/08/17(木) 17:39:57ID:???理由って「悩むから」だけ?
じゃあCSSだけハイフン、あとは全てアンダーバーでOK
0585nobodyさん
2006/08/17(木) 18:09:23ID:???そうなるとhtmlで違和感を覚える。
nameはアンダーバーなのにidやclassだけハイフンっておかしくねえか?
ってね。
0586nobodyさん
2006/08/17(木) 18:10:41ID:???全てかんええええええwwwww
マジでウエkルwwwwwww
0587nobodyさん
2006/08/17(木) 18:12:52ID:???0590nobodyさん
2006/08/17(木) 19:38:03ID:???とか言い出しそうだな。
0592nobodyさん
2006/08/17(木) 20:08:40ID:???elsif
elseif
else if
0593nobodyさん
2006/08/17(木) 20:28:56ID:tIcJSB0Omy $xslt = XML::XSLT->new("hoge.xsl");
これだけで
Use of uninitialized value in subroutine entry at C:/Perl/site/lib/XML/Parser/Ex
pat.pm line 474.
Error executing run mode 'install': Error while parsing:
no element found at line 1, column 0, byte -1 at C:/Perl/site/lib/XML/Parser.pm
line 187
C:/hoge.xsl at C:/Perl/site/lib/XML/XSLT.pm line 1507.
at index.cgi line 7
とエラーが出て動く気配がありません。
ちなみにXSLの中は以下のようになっています。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xml:lang="ja">
<xsl:template match="/contents">
hoge
</xsl:template>
</xsl:stylesheet>
ためしにXSLの中を全部消してみてもダメでした。XSLファイル自体を
削除するとまた違うエラーが出たのでとりあえず読めてはいると思います。
すみません、ここで丸一日悩んでいるのですがどうすればうまいことサーバサイドで
XMLを変換できるのか、どうかご教授お願いします。
0594nobodyさん
2006/08/17(木) 22:22:55ID:???_と-なんて気にする必要ない。
0595nobodyさん
2006/08/18(金) 11:29:18ID:???安心してください。あまり悩む必要はありません。
通常 Perl の識別子として使えるのは /[\w][\w\d]*/ にマッチする文字列だけだからです。
変数名、関数名、パッケージ名、クォートを省略したハッシュキーにはそういった文字列が要求されます。
裸の "-" はソースコード中のトークンを分割してしまい、perl はそれを「マイナス演算子」としてパースするでしょう。
従ってそれほど迷うことができる局面は多くありません。少なくとも Perl コード中では。
0596nobodyさん
2006/08/18(金) 13:49:32ID:???0597nobodyさん
2006/08/18(金) 14:42:19ID:xIt7iz8d詳細が乗っているサイト若しくはやり方を教えてください。
内容としては翻訳サイトのページ翻訳のようなことがしたいです
宜しくお願いします
0599nobodyさん
2006/08/18(金) 14:47:31ID:xIt7iz8d今レスしてきました。
こちらにも解決した旨書こうと思ってたところです、遅くなってすいません。
別にマルチするつもりはありませんでした、回され続けたもので・・ほんとスイマセン。。
>>597の質問は解決しました
ありがとうございました
0600582
2006/08/18(金) 16:47:54ID:???0601nobodyさん
2006/08/18(金) 17:14:01ID:???# A.pm
package A;
use CGI;
1;
# B.pm
package B;
use A;
@B::ISA = qw(A); # この1行はなくても動くけど、実際の用途で使ってるので。
my $Q = CGI->new();
1;
こんなことやってもいいのかな?
つまり、B.pm で use CGI; って入れなくても、A で use して require してるから動くし警告も出ないんだけど、
これってお行儀よくないのかな? ってことなんだけど。
0602nobodyさん
2006/08/18(金) 17:35:23ID:???0603nobodyさん
2006/08/18(金) 18:57:28ID:lccc8Mkuアンダースコアならクォートしなくてもいいし、
もしかして、perlに関する名前系には全てアンダースコアがいいの?
でもなんでだろ。なんでハイフンを今まで使ってたんだろ。
何か理由があるはずだけどな。
0604nobodyさん
2006/08/18(金) 19:08:57ID:???意味が分かりません。
0605nobodyさん
2006/08/18(金) 19:39:04ID:???perl -e '@a=qw/a b/; @b = qw/z y/; $h{\@a} = 1; $h{\@b} = 2;for (keys %h){ print "$_ = $h{$_}\n";}'
なんてのも当然の事ながら動く。
0606nobodyさん
2006/08/18(金) 19:46:28ID:???んー、まぁそうなんだけど。
コードの方は例としてどうなのよ。
リファレンスを文字列として解釈して、それをキーにしてるだけだけど。
0607nobodyさん
2006/08/18(金) 21:33:32ID:???演算子を使うという行為そのものが信じられない
0608nobodyさん
2006/08/18(金) 21:42:51ID:???0609nobodyさん
2006/08/18(金) 22:08:52ID:???おお、本当だ。
いままで、オブジェクトのリファレンスをキーにしているものだと信じきっていた。
perl -e '$k="ARRAY(0x8600b08)"; @a=qw/a b/; @b = qw/z y/; $h{\@a} = 1; $h{\@b} = 2; $a[2] = "c";for (keys %h){ print "$_ = $h{$_}\n";}; print "$d=$h{$k}\n"'
($k は一回実行後、適当に直してくれ。)
0610nobodyさん
2006/08/18(金) 23:24:30ID:???use と require は勝手に重複ロードを避けてくれます。ですからその場合は迷わず use しておくべきです。
# 余談: B.pm は標準モジュールとカブるんで例にしてもイマイチかな。
0611nobodyさん
2006/08/18(金) 23:34:13ID:+PBYJBRx「いちいちプログラムを一つ一つ回すのめんどくさいからキー一つで全てのプログラムを研究室内のコンピュータに分散させて回せるようにしとけ。
多分perlでできると思うから。」
と言われました。
当方こういった事に無知です。
何から手をつければいいのか分からず困っています。
どこで聞けばいいのか分からずこちらで聞いてみました。
どうかご教授お願いします
0612nobodyさん
2006/08/18(金) 23:37:10ID:???言いたい事は分からんでもないですが…。
「ファイル名」は気にしないなあ。ハードコードするにしてもクォートするに決まってるんで。
「プログラムのソース内に」は…ごめんなさい、少なくとも僕は使わないと書けないです。信じてもらえないかもしれませんけど。
0614nobodyさん
2006/08/18(金) 23:52:59ID:???0615nobodyさん
2006/08/18(金) 23:57:20ID:???0616nobodyさん
2006/08/18(金) 23:57:53ID:+PBYJBRx�dクスです。感謝いたします。情報系でないのでなんとも…
>>614
聞いても「あーやっぱりw」ってなレベルの大学です。
0618nobodyさん
2006/08/19(土) 00:08:50ID:???0620nobodyさん
2006/08/19(土) 00:51:25ID:???0622620
2006/08/19(土) 08:38:28ID:???0624620
2006/08/19(土) 09:05:27ID:???0625nobodyさん
2006/08/19(土) 09:57:41ID:???0626nobodyさん
2006/08/19(土) 11:30:40ID:???0627nobodyさん
2006/08/19(土) 12:00:41ID:???0628nobodyさん
2006/08/19(土) 15:31:15ID:???0629nobodyさん
2006/08/19(土) 16:29:19ID:GA5MBol05桁目でしょ。
0630nobodyさん
2006/08/19(土) 16:51:08ID:WYPasnq7print "<FONT size=2>表示</FONT>\n";
とすると、「表示」の文字が文字化けします。
print '<FONT size=2>表示</FONT>\n';
とすると文字化けしませんが、「\n」が表示されてしまいます。
とうしたら良いでしょうか?
0631nobodyさん
2006/08/19(土) 16:58:10ID:???0632nobodyさん
2006/08/19(土) 16:58:59ID:???0633nobodyさん
2006/08/20(日) 01:19:05ID:???0634nobodyさん
2006/08/20(日) 01:21:43ID:jxY7weHr/⌒ヽ γ⌒'ヽ
( ^ω^)i ミ(二i
( ∪ ∪ヽ、,,_| |ノ
と_)_) r-.! !-、
`'----'
0635nobodyさん
2006/08/20(日) 02:30:01ID:???0637620
2006/08/20(日) 08:54:38ID:???頭の悪いやつにきたいした俺gまちがいただ。
0638nobodyさん
2006/08/20(日) 09:02:20ID:???0639nobodyさん
2006/08/20(日) 09:52:07ID:???将来の拡張なども考えて、オブジェクト指向で書くのが良いと思う。
完全オレオレモジュールなら、どちらでもという気はする。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmodlib.html#Guidelines_for_Module_Creation
0640nobodyさん
2006/08/20(日) 10:09:15ID:???0641nobodyさん
2006/08/20(日) 11:48:14ID:???考えているキミ自信がオブジェクト指向を苦手としているのだ。
0642nobodyさん
2006/08/20(日) 11:48:36ID:???0643nobodyさん
2006/08/20(日) 11:58:45ID:???Movable Typeがクラスを一切使わず、全部関数なら2倍弱速いとか。
0644nobodyさん
2006/08/20(日) 12:11:58ID:???0645nobodyさん
2006/08/20(日) 16:12:29ID:???0646nobodyさん
2006/08/20(日) 16:33:59ID:???0647nobodyさん
2006/08/20(日) 17:00:10ID:???Perl は風呂敷みたいなもんだ。
風呂敷にジュラルミンケースの長所を求めて何か嬉しいことがあるかな。
それでも君はいつでも OO::Excellent を書いて CPAN に登録できるし、きっと誰もそれを止めない。
0648nobodyさん
2006/08/20(日) 18:00:00ID:???0649nobodyさん
2006/08/20(日) 18:29:15ID:???…が、それでもやっぱりPerlの変態度は変わらない
どころか強化されるので何とも言えない。
変数の頭に付ける記号、増えるんだよなぁ。~$?FOO とか +@*BAR とか。
0651nobodyさん
2006/08/20(日) 22:24:07ID:???別にそういう記号が増えるだけで、
基本は変わらない。
http://dev.perl.org/perl6/doc/design/exe/E02.html
0652nobodyさん
2006/08/21(月) 00:40:05ID:1WWjUDHaこれを「あいうえお...」という感じに、先頭5文字だけ表示させるようにしたいのですが、可能でしょうか?
個人的には「length」を使うのかなと睨んでいるのですが・・・。
簡単で構わないのでアドバイスお願い致します・・・ orz
0653nobodyさん
2006/08/21(月) 00:49:09ID:???まずは思ったままをやってみて、結果を見ながら「何故こうなる?」という部分を考え、
それでもやっぱりわからなかったら聞きにおいで。
substrでやる → 途中で文字が切れちゃいました! →
0655nobodyさん
2006/08/21(月) 01:16:18ID:???0656nobodyさん
2006/08/21(月) 01:55:18ID:???0657nobodyさん
2006/08/21(月) 03:12:24ID:???じゃあ、いったい何が出来るのか問いたい
0659nobodyさん
2006/08/21(月) 04:21:44ID:???Perlにはエラーの制御演算子みたいなものはありますか(PHPでいうところの『@』)?
演算子などでなくても、Perlのエラー文が表示されなくなれば良いんですが……。
0660nobodyさん
2006/08/21(月) 06:37:43ID:???同じ物はないよ。
PHPの@を(notice避けの)手抜きに使ってるのか、
(スクリプトの終了を回避して)後始末をするために使ってるのかにもよる。
・コード修正
・no warnings/strict
・eval
あたりかな。
0661nobodyさん
2006/08/21(月) 09:07:48ID:???use encoding "shiftjis";
eucなら
use encoding "euc-jp";
のおまじないをしておくとか。。。
0662nobodyさん
2006/08/21(月) 13:28:33ID:???どこへの返答かいまいちわからんけど、encoding プラグマは「おまじない」としてはちょっと勧めづらい。
0663nobodyさん
2006/08/21(月) 13:40:19ID:???> 演算子などでなくても、Perlのエラー文が表示されなくなれば良いんですが……。
これを読む限りでは抑制したい「エラー文」は主に警告の類なんでしょう。
出力を抑えるのではなく STDERR をファイルにリダイレクトする手もあります。
そうしておくことで、後からどのようなエラーが生じていたのか確認できます。
もちろん use strict 及び use warnings 下でエラー・警告の出ないように書く、というのが本筋ですけれど。
その上で本当にそれが必要なら no strict 〜 や no warnings 〜 などで極力限定的に制限を緩める方法があります。
0664nobodyさん
2006/08/21(月) 14:38:15ID:???"no warnings"がこちらの望みどおりだったので使わせていただきました。
ありがとうございました〜!
0665nobodyさん
2006/08/21(月) 17:57:03ID:GgkIkg39http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-2-1.html
0666nobodyさん
2006/08/21(月) 22:38:34ID:???調べたところ、<img>タグで読みだして、CGIの方からダミーの画像を排出する…みたいな方法があるようなのですが、細かくは書かれておらず、どういうことかよくわかりません…
情報が少なく申し訳ありませんが、よろしくお願いしますm(_ _)m
ちなみに携帯用なのでJavaやJavaScript系は不可で、SSIも使えませんm(_ _)mm(_ _)m
0667nobodyさん
2006/08/21(月) 22:49:08ID:???それが無理なら、data.txt じゃなくて表示用HTMLファイルを直接吐くようにするとか。
0668nobodyさん
2006/08/21(月) 23:30:54ID:???http://zerosp.com/mt/archives/xml-sax-error.php
ほぼこのページの手順どおりに作業したのですが、どうしても最後の
ppm install XML-LibXML
を打ち込むと、長いHTMLソース(activestate.comのページ?)が現れて終了してしまいます。
どうすればインストールできるでしょうか。
0669668
2006/08/21(月) 23:34:17ID:lSGtoXSQ何故かこのページのようです。
http://aspn.activestate.com/ASPN/Modules/Perl?query_start=1
0670666
2006/08/21(月) 23:44:30ID:???ありがとうございますm(_ _)m
つまり、トップ自体をcgiにするということですよね…?
負荷がかかるんじゃないかなぁなんて考えているのですが…m(_ _)m
2つ目は、どういうことかよくわかりませんでした…m(_ _)m
0672nobodyさん
2006/08/21(月) 23:48:04ID:???〜ごにょごにょっと処理〜
# 以下ダミー画像の出力
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:???負荷なんてしらんがな(´・ω・) 制限があるなら最初から書こうよ...
システム管理者と相談汁!
後者の方法はつまり、data.txt を作成するスクリプトが、同時に
そのトップページのHTMLファイルを作り直す、もしくはデータを表示している部分を書き換える。
こちらの方法だと、表示されるのは静的なHTMLファイルだから、負荷は変わらないはず。
0674nobodyさん
2006/08/22(火) 00:05:01ID:???0675nobodyさん
2006/08/22(火) 01:05:29ID:???0676668
2006/08/22(火) 01:09:43ID:???すいません、そのページも参考にしていたのですが分かりませんでした。
現在、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
ここからバイナリを落としてパスの通った場所においてみたのですが効果がありません。
どうすればいいでしょうか。
0679nobodyさん
2006/08/22(火) 16:06:29ID:???0680nobodyさん
2006/08/22(火) 16:31:48ID:???■ このスレッドは過去ログ倉庫に格納されています