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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/09/09(金) 18:11:49.71ID:???
Perlのコーディングで困ってる人のスレです。

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

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >>2 以降

前スレ http://hibari.2ch.net/test/read.cgi/php/1295170172/
0766nobodyさん2012/05/11(金) 01:12:05.76ID:???
それはエロゲの話だろw
0767nobodyさん2012/05/11(金) 01:14:41.05ID:???
Perl、PerlってそんなにPerlが好きだったらPerlと結婚すればいいのに

>>765
こうですか?
あなたが何を言いたいのかさっぱりわかりませんw
0768nobodyさん2012/05/11(金) 01:24:19.42ID:???
ま、初心者スレなんでその辺は
0769nobodyさん2012/05/11(金) 16:29:39.44ID:???
既出かもしれませんが、お願いします。

CGIなんですけど
open(LOG, ">>/opt/lampp/test/LOG");
とか、
if(!open(LOG, ">>LOG")) {

とかでログファイルをopenしています。

二つのファイルとも、パーミッションは
-rw-r--r-- で同じなんですけど、
下の方で開けたログファイルは、後から同じ上書きopenで開けず
エラーになります。まぁ手動で下のファイルだけ、
-rw-rw-rw- とかに変えればいいんですけど。めんどくさいので
いい方法ありませんか?っていうか何が原因ですか?

よろしくお願いします。
0770nobodyさん2012/05/11(金) 17:02:14.89ID:???
とりあえず俺は馬鹿なんでオマエさんの文章を読むのが辛いってのと
openは3引数で使う、グロブじゃなくて変数を使うってところか
0771nobodyさん2012/05/11(金) 18:35:09.50ID:???
SJISで書いたコードをUTF-8にエンコードして、メールのヘッダに書き込みたい場合どんな感じになるんだろう・・・
0772nobodyさん2012/05/12(土) 14:16:24.41ID:???
POSTで受け取ったメールアドレスをif文判定したいんですができない・・・

if ($in{'mail'} eq "hoge@hoge.com"){
 処理〜
}

これじゃダメなんですか?
0773nobodyさん2012/05/12(土) 14:21:07.43ID:???
>>772
メールアドレスの所をしんぐるくぉーてーしょんに変えるがいい

if ($in{'mail'} eq 'hoge@hoge.com'){
0774nobodyさん2012/05/12(土) 14:34:58.97ID:???
>>773
できました!たったこれだけだったんですね・・・。
助かりました〜
0775nobodyさん2012/05/12(土) 15:45:18.56ID:???
うむ。今度から"でダメだったときは'を使えば良い。
0776nobodyさん2012/05/12(土) 16:02:35.92ID:???
そういう雑な覚え方じゃなくて…
ダブルクォーテーション内では変数は展開されるから、
メールアドレスの「@hoge」が配列として扱われて展開されちゃうから
シングルクォーテーションを使って変数が展開されないようにするか、
もしくは「\」でエスケープして "hoge\@hoge.com" のように書く
と覚えておいた方がええんでは
0777nobodyさん2012/05/14(月) 11:15:17.47ID:???
perlのシングルクォーテーションの使い方って結構変わってる?よね
0778nobodyさん2012/05/14(月) 11:59:37.23ID:???
ダブルクオートの時だけinterpolateできるって仕様はシェル(スクリプト)?から来たものだろうし、Rubyも同じじゃん?
"@foo" が展開される罠は他の言語にはないけどさ
0779nobodyさん2012/05/23(水) 17:27:24.18ID:rf0/+ult
縺繧薙%縺繧薙%
0780nobodyさん2012/05/23(水) 17:28:38.79ID:rf0/+ult
縺繧薙%縺繧薙%
0781nobodyさん2012/05/23(水) 17:32:33.00ID:rf0/+ult
縺繧薙%縺繧薙%
0782nobodyさん2012/05/23(水) 18:59:49.41ID:rf0/+ult
縺繧薙%縺繧薙%
0783nobodyさん2012/05/23(水) 19:32:41.29ID:???
(´・ω・`)?縺繧薙%縺繧薙%
0784nobodyさん2012/05/23(水) 20:09:04.03ID:???
"" で展開、'' は展開しないは、基礎の基礎だから、罠とは言えないだろ。
0785nobodyさん2012/05/23(水) 21:10:40.89ID:???
>>783
何度も投稿して、文字化けで上手くいかないと涙目な>779なのかもしれん
0786nobodyさん2012/05/23(水) 22:36:11.06ID:???
>>784
Perlの罠といえば、誰もが引っかかるeqとか?
0787nobodyさん2012/05/24(木) 04:21:58.60ID:???
>>786
eqで何が引っかかるの?
0788nobodyさん2012/05/24(木) 09:35:27.46ID:???
しばらく他の言語やってPerlに戻ってくると文字列比較なのに==使っちゃうとか結構やるわ
0789nobodyさん2012/05/24(木) 19:30:42.39ID:???
==だと具体的にどういう比較になるんだっけ?
0790nobodyさん2012/05/24(木) 19:42:26.19ID:???
数値に変換して比較
0791nobodyさん2012/05/25(金) 00:00:56.26ID:???
数字以外があると warning
0792nobodyさん2012/05/25(金) 04:32:23.39ID:???
変数がundefだと、warning
0793nobodyさん2012/05/25(金) 06:43:20.05ID:???
俺の人生、warning
0794nobodyさん2012/05/25(金) 08:58:48.21ID:???
>文字列の==比較
特定の用法でなら、使い道ってあるんかな。

例えばCとかなら、使いにくい仕様でも、使い勝手を犠牲にして低レベルな処理にしたとか、
低レベルだからこそPGが直に弄れるメリットも無くはないってのが想像出来るんだけど。
0795nobodyさん2012/05/25(金) 13:41:56.50ID:???
>>794
ん?
== と eq の話しなのだが?w
0796nobodyさん2012/05/25(金) 19:34:09.54ID:???
その話だが?
0797nobodyさん2012/05/25(金) 20:31:46.80ID:???
何かよくわからんが、== は「両端を数値に変換してから比較」する演算子なので、どんな用法でも「文字列比較」はできないよ
0798nobodyさん2012/05/25(金) 20:47:50.48ID:???
Perl側で自動的に区別することも出来たかもしれないけど「10」と「10.0」の比較なんかは困りそうよね
0799nobodyさん2012/06/07(木) 23:29:12.95ID:???
環境の話で恐縮なのですが質問させてください。

EPICとpadwalkerで環境構築してデバッガを動かしてみたのですが、値で文字化けが起きていて困っています。
eclipse.iniには-Dfile.encoding=utf-8を追記して構文検証が動くのは確認してます。

環境のバージョンは下記の通りになります。

eclipse:3.7.2
epic:0.5.46
activeperl:5.14.2
padwalker:1.93

以上、よろしくお願いします。
0800nobodyさん2012/06/10(日) 21:57:43.97ID:???
1
配布されているcgiってstrictやwarnings使ってないやつも結構あるんだが
やっぱりローカルで十分テストしたら外しておいた方がいいの?
それとも単に局所化も考えていないだけの駄コードなだけ?

2
実行ファイルだけじゃなくてライブラリにもstrict,warningsって記述しないと意味無い?
だとすると上で書いたように実際に運用する時外した方がいいとするといちいち全部外さなきゃいけないの?

3
諸設定を分離して別ファイルでグローバル変数として定義してると
実行ファイルなどで「1回しか出てこねーぞ」と怒られてしまいます
どんな回避方法がベストですか

どうせsjisへのconvertしか使わないから不要な部分カットしたjcode.plが一番よくねと思って
jcode.plを見たら思った以上に解読難しかった(´・ω・`)
0801nobodyさん2012/06/10(日) 22:23:30.29ID:???
1. ケースバイケース
2. no が使えるプラグマは、ほぼレキシカルスコープ。
 no strict ; no warnings
 ライブラリだろうと、スコープから外れたら効力は無い。
3. Exporter 使って export すれば?
0802nobodyさん2012/06/10(日) 22:26:24.92ID:???
そんなもん削って得られる利益ってどんだけだろうね?
0803nobodyさん2012/06/10(日) 23:19:34.11ID:???
なんで use strict; と user warnings; を削る必要があるのか理解できないんだが。
0804nobodyさん2012/06/10(日) 23:58:10.87ID:???
use strict; や use warnings; って環境によっては使えないからね。
まあ、そういう経験ない人に言っても伝わらんだろうけど。
0805nobodyさん2012/06/11(月) 00:29:11.97ID:???
大昔に書かれたスクリプトで、メンテしようにもstrict入れると大幅書き直しになるやつとかなw
0806nobodyさん2012/06/11(月) 04:42:03.10ID:???
>>804
strict や warnings が使えない環境なんてあるんか? 思いつかん。
0807nobodyさん2012/06/11(月) 04:49:40.79ID:???
命令 if 条件
命令 or die
これまとめて書きたかったらどう書くの?
命令 if 条件 or die とかでオッケー?
0808nobodyさん2012/06/11(月) 06:00:31.52ID:???
条件 and 命令 or die;
時と場合によっては、括弧で括って演算子の実行順位が変更されないように。
0809nobodyさん2012/06/11(月) 21:39:23.02ID:???
>>806
% corelist strict
strict was first released with perl 5
% corelist warnings
warnings was first released with perl v5.6.0

5.6 未満の鯖を使ってる人なら辛うじて「使えない」と
言えるかも知れんけどねw
804 みたいな意見は、 KENT あたりの強弁を鵜呑みに
してるとしか思えんよ。
0810nobodyさん2012/06/11(月) 23:39:17.35ID:???
普通に5.6より前の環境を指してるんだと思ってた。
0811nobodyさん2012/06/12(火) 01:06:42.34ID:???
単なる未経験者、乙。
0812nobodyさん2012/06/12(火) 05:17:36.52ID:???
10年以上前の鯖を今使ってる奴、いんの?
use strict に至っては、1993 年実装だぞ。
0813nobodyさん2012/06/12(火) 06:08:24.36ID:???
ちょうど今やってる仕事が、strictは使えるけどwarnningsが使えない環境だったりする。
strictも使えないサーバは見たことないな。
0814nobodyさん2012/06/13(水) 01:58:11.19ID:???
さすがにwarnningsはうちでも使えないな。5.10.1だけど。
08158132012/06/13(水) 02:04:10.58ID:???
おっと、スペルミスってたか。失敬。
0816nobodyさん2012/06/13(水) 03:15:49.57ID:???
どうも古い環境をいつまでも使っていて
自分で自分の首を絞めてるだけに見えるな。

一応リリース日書いておくわ。あなたはいったい何年前のマシンを使ってるんですか?

Perl 1.0 1987年12月18日
Perl 2.0 1988年6月05日
Perl 3.0 1989年10月18日
Perl 4.0 1991年3月21日
Perl 5.0 1994年10月17日
Perl 5.5.0 1998年7月22日
Perl 5.6.0 2000年5月22日 warnings導入
Perl 5.8.0 2002年7月18日 Unicode正式対応
Perl 5.10.0 2007年12月18日
Perl 5.12.0 2010年4月13日
Perl 5.14.0 2011年5月14日
Perl 5.16.0 2012年5月20日
0817nobodyさん2012/06/13(水) 04:35:00.28ID:???
自分では環境を決めらんないことって、珍しくないよね?
0818nobodyさん2012/06/13(水) 05:00:19.82ID:???
自分で決められなくても
提案は出来るだろ。
0819nobodyさん2012/06/13(水) 06:39:10.27ID:???
そもそも、時と場合によってはedが活躍する様な、本当にメモリが貴重だった時代の、

(開発用のモジュールはリリース時には滅多に必要にならないんだから)
use strict; -wスイッチは切りましょう
(トラブったら、その時ONにしてデバックすれば良い)。
ってお作法の名残りだろ。本来の意味でのバッドノウハウ(?)
で、アホが行間の意味を考えず、 warningsに置き換えただけ。

perl5.6時代の当初は後方互換 = 環境依存と言う理由が後付けされたが、
それだったら、warningsを使わず -w使えばいいだけの話
0820nobodyさん2012/06/13(水) 07:22:17.87ID:???
提案が認められないことなんて珍しくないがな。
社会に出たことないのか?
0821nobodyさん2012/06/13(水) 12:32:37.23ID:???
この負け犬の社畜野郎めが!!
0822nobodyさん2012/06/13(水) 16:02:50.21ID:???
請負だと、提案はできても最終的に決定するのはクライアントだしなー。
別環境の構築まで仕事として依頼されれば喜んでやるけどさ。
0823nobodyさん2012/06/13(水) 19:16:09.34ID:???
あえて5.6とか用意するクライアント様ってそんなに多いんですか…
0824nobodyさん2012/06/13(水) 19:39:09.52ID:???
違う。5.0系を用意してくれてんの
0825nobodyさん2012/06/13(水) 22:33:10.23ID:???
ありがたいことに5.005を用意してくださっている
ありがたーいお客様ですねわかります
0826nobodyさん2012/06/13(水) 22:37:18.89ID:???
そして客に迷惑をかけて、
それを客のせいにするわけですねw

環境がー、環境がー、
0827nobodyさん2012/06/13(水) 22:38:41.15ID:???
昔のバージョンってのは
新しい機能が使えないだけじゃなくて
バグがあるんだよ。
0828nobodyさん2012/06/13(水) 22:39:19.57ID:???
たとえお客様が4系を用意してもありがたく4系に合ったプログラムをさせていただくのがSIerのマナー
5系は甘え
0829nobodyさん2012/06/13(水) 22:40:23.34ID:???
>>827
それこそ甘え
そんなもんよきにはからえよ
0830nobodyさん2012/06/13(水) 22:43:18.44ID:???
一、新しいバージョンに頼るな。古いバージョンでも動くよう、古いバージョンにある機能だけを使え。
一、CPANモジュールに頼るな。Perlに付属するモジュールだけを使え。
一、perldocに頼るな。Webにアクセスして検索もするな。本に書いてあることを全て記憶して臨め。
0831nobodyさん2012/06/14(木) 08:20:28.86ID:???
ちっとも「甘え」じゃねえよ。おまえはスーパーブラックワタミの社長か。
0832nobodyさん2012/06/14(木) 08:47:12.70ID:???
>>826
「せっかく5.6を用意してやったのに使えないと申すか!」なんて非実在お客様を引き合いに出すなよ
0833nobodyさん2012/06/16(土) 23:40:53.22ID:???
2chばっかやってないで少しは実社会に接してみろよ、そんな理想社会
なんてないんだから。
0834nobodyさん2012/06/17(日) 00:54:41.36ID:???
流石に、今から環境を立ち上げるような案件で5.0とかは無いと思うけどね。
0835nobodyさん2012/06/17(日) 03:23:24.18ID:???
>>833
てめえの住んでる実社会とやらにはブラックワタミしか存在してないようだな。
0836nobodyさん2012/06/17(日) 08:30:35.87ID:???
お前らがブラックとあざ笑う会社を排除したら日本は滅亡するぞ
お前らの生活を支える会社をもっと大切にしろ
0837nobodyさん2012/06/17(日) 10:01:36.17ID:???
>>836
s/(?:お前ら|日本)(は|の)/俺$1/g;
0838nobodyさん2012/06/17(日) 10:46:30.55ID:???
>>816
Jperlが抜けてるけど、海外生活長いの?
0839nobodyさん2012/06/17(日) 20:01:25.21ID:???
JPerlってなんか久しぶりに聞いた
0840nobodyさん2012/06/18(月) 04:10:39.17ID:???
パソコンを新調したんでこれからperl5.005をインストールします。
0841nobodyさん2012/06/18(月) 09:15:28.84ID:???
>>840です。
5.005でも十分とわかりました。
5.6以降を使うのは甘えです。
CPANモジュールに頼るのも甘えです。
0842nobodyさん2012/06/18(月) 10:21:41.00ID:???
当人がそれでいいならいいんじゃね?
0843nobodyさん2012/06/18(月) 12:13:55.57ID:???
>>840です。
当人だけが満足しているだけじゃだめなんです。
周りの人間が5.6以降やCPANモジュールなどに依存したコードを書いて
他人に迷惑をかけることを防がなければなりません。
そのためにもルールは守っていただきます。
0844nobodyさん2012/06/18(月) 13:21:15.86ID:???
古いコードを書いて足を引っ張ってるのはお前w
0845nobodyさん2012/06/19(火) 06:28:15.00ID:???
新しいバージョンを薦めてる人ってEcodeのバグを恐れて薦めてるんだろう
けど、もともと使ってない俺達には関係ない話なんだけどな
0846nobodyさん2012/06/20(水) 00:33:54.27ID:???
ふぅーっ(溜息)
おまえさんのJcode好きには負けたよ...
おれは降りるから、ここ好きに使っていいよ。

(でも荒らすんじゃないぞ)
0847nobodyさん2012/06/23(土) 20:26:58.26ID:???
"ブラックしか"と読めた引篭りの読解力。
0848nobodyさん2012/06/23(土) 21:29:02.36ID:???
初めての4版の翻訳が出るみたいだな。
0849nobodyさん2012/06/23(土) 23:12:30.52ID:???
別に古いバージョンで書いても問題起こしたこと無いけどな
「ノウンバグは仕様」 という言葉をキミに授けよう
0850nobodyさん2012/06/30(土) 16:43:21.68ID:???
自治厨の放火で絶賛炎上中のPerlスレから勝手に持ち込み。
ttp://toro.2ch.net/test/read.cgi/tech/1336267272/791
> 質問と言うか助けてください
>
> http://.....hoge.cgi?hage=hige&mage=1,2,3
> 上記の引数付きのものをデバッガで実行するのって
> perl -d hoge.cgi hage=hige mage=1,2,3
> で合ってますか?
>
> また、この引数って何処から取れば良いのでしょうか?@ARGV?
>
> 何処にも入れた引数見つからなくて泣きそう…
0851nobodyさん2012/06/30(土) 17:29:30.01ID:???
>>850
その火をこっちに持ち込むんじゃねえよゴミ
質問者が持ち込むならまだしもお前が持ち込むとか意味不明
こっちまで荒らすつもり?
0852nobodyさん2012/06/30(土) 17:32:55.61ID:???
>>851
あっちから来たのバレバレですよ
>質問者が持ち込むならまだしも
そうだったらマルチポストガーって騒ぐんだろ?
0853nobodyさん2012/06/30(土) 19:48:47.09ID:???
どうしたのこの人
あっちのスレ見たけどもう質問者がバカッターで教えてもらったって書いてあるじゃん
0854nobodyさん2012/06/30(土) 20:46:14.07ID:???
おいおい、あれが本人のだと思ってる奴一人もいないだろw
0855nobodyさん2012/06/30(土) 21:57:45.69ID:???
>>851>>853-854
もうねあっちから来たって分かってるんだよね。
さっさと答えろゴミクズ共。
0856nobodyさん2012/06/30(土) 22:01:56.56ID:???
>>855
市ねよニート
0857nobodyさん2012/06/30(土) 23:00:50.01ID:???
Perlをどこでどうやって覚えましたか?
デバッガのことを知っているのに引数の取得の仕方を知らないのは、かなり
不自然なので、きっとみんなはネタだと思ってスルーしていますよ。
0858nobodyさん2012/06/30(土) 23:37:05.04ID:???
これだけレスあるのに?w
0859nobodyさん2012/07/01(日) 01:16:46.79ID:???
使えもしないデバッガを使わずに print で解決しつつある。
0860nobodyさん2012/07/01(日) 01:28:20.30ID:???
お前の話か?
0861nobodyさん2012/07/01(日) 01:43:44.80ID:???
>>854
本人かどうかは知らんけど本人ならそれはそれでもう終わった話だし、
違うなら本人が貼りにくるんじゃないの?
0862nobodyさん2012/07/01(日) 02:09:11.20ID:???
>>850
そんな質問してる基地害は泣いてればいいと思うよ 世の中に必要ないしw
0863nobodyさん2012/07/01(日) 05:57:35.97ID:???
うるさいゴミ
0864nobodyさん2012/07/01(日) 13:19:59.70ID:???
>>862
いいからクズニートは市ね
マジで市ね
ニートに生きてる価値あると思ってんの?
0865nobodyさん2012/07/01(日) 14:58:36.35ID:???
もちろんニートだろうがなんだろうが生きてるだけで価値はある。
■ このスレッドは過去ログ倉庫に格納されています