【Perl】初心者コーナー Part18
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/11/20 22:04ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/
過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0449nobodyさん
02/12/14 21:36ID:???自動で、別窓で一覧にして永久的に表示するというのをやりたいのですが
どうしたらいいでしょう
0451nobodyさん
02/12/14 21:49ID:???0453nobodyさん
02/12/14 23:14ID:TSZsnHUGAn electric wave boy is the reason which carried out the way which finishes being incomprehensible...
電波少年は不可解な方法を実行した理由です...
微妙ですが
0454nobodyさん
02/12/15 00:32ID:???0456nobodyさん
02/12/15 02:18ID:???0457nobodyさん
02/12/15 02:56ID:N8e98l/q$value{key}
この二つではどちらが書き方として正しいのでしょうか?
0458nobodyさん
02/12/15 03:13ID:brjLalCm↑ここはどうですか?
0460nobodyさん
02/12/15 04:02ID:N8e98l/qいちおうどちらの形にしても、同じ値が見れるので
どっちでもいいのかなと思ったのですが。。。
0461nobodyさん
02/12/15 11:28ID:???perl5以降なら$value{key}
0463nobodyさん
02/12/15 21:08ID:5VtRENUn参考になるサイト、書籍等ありますでしょうか?
0464nobodyさん
02/12/15 22:17ID:V1pBf1mlどなたか教えてください。
use strict;
print ${&return_html};
sub return_html {
return \"<p>てすと</p>";
}
これを実行すると当然のごとく<p>てすと</p>が出力されますが、
1.この”<p>てすと</p>”が記憶される領域は変数を宣言して確保するのとどう違うのでしょうか。
2.これが記憶されている領域はいつまで読めることが保証されているのですか?
(読まれる可能性があるときまで保持して置くように勝手にコンパイルされるのですか?)
3.このように値の参照を返す方法は返す内容が膨大になった時に、
値そのものを返すよりパフォーマンスの点で期待できますか?
いまいち上手く説明できないので質問の意図がわからないかもしれませんがよろしくお願いします。
0465nobodyさん
02/12/15 23:20ID:1E3ue/P5よくわからんけど・・
1. 無名のスカラーのリファレンスだという所。
2. 参照されている間、だから、printの次の行では、もう消滅している(読む手段がなくなるから)、かな??
3. 期待できる
0466464
02/12/16 03:56ID:???それで納得いきました。
0467nobodyさん
02/12/16 14:33ID:P42iaa2L上手く <p>文章</p> としてやりたいのですが、上手くいきません。
改行コードを </p><p> に置換しても、最初の部分で </p> が余ってしまうし。
どうにか上手く囲えないですかね?
0468nobodyさん
02/12/16 14:51ID:3MTAHZ/Xデータを$detaに入れるとして
$deta = "<p>$deta</p>";
$deta =~ s/[\r\n]/<\/p>\n<p>/g;
これでダメ?
0469nobodyさん
02/12/16 18:06ID:y6GM3n5O#改行コードを統一
$str =~ s/\x0D\x0A/\n/g;
$str =~ s/\x0D/\n/g;
$str =~ s/\x0A/\n/g;
#行末の改行を削除
$str =~ s/\n+$//;
#空行があれば段落とみなす
$str =~ s/(.+?)(\n{2,}|$)/($_ = $1) =~ s!\n!<br \/>!gs; "<p>$_<\/p>\n";/gse;
これじゃダメかな。
0470nobodyさん
02/12/16 20:20ID:???467じゃないけど、
いま改造してるヤツでありがたく使わせてもらいます。
うまくできました。
でもなんでそれでできるのか解らない漏れ・・・
0471nobodyさん
02/12/16 23:10ID:???俺だけ?
CGI.pm使ったら、すっきりするような。
0472nobodyさん
02/12/17 00:06ID:x9yr2U770473471
02/12/17 00:56ID:???改行をそのまま<p></p>にするのか、それとも<br/>にするのか、
それとも二行以上あいているのを<p></p>にするのかとかさ。
その辺の処理をきちんとしないときちんとしたものはできないと思う。
0475469
02/12/17 02:04ID:???こういう所にレスをつけるときは、答えを書くというより参考になればなと思って書いています。
今回の例だと少し正規表現いじれば、471さんの言うようなケースには合わせられるわけですし・・・
0476nobodyさん
02/12/17 15:15ID:/cJ6LV5I0478nobodyさん
02/12/17 15:37ID:???○use Socket;
0479434
02/12/17 16:27ID:dfOkftcJう〜ん、パスワードを別ファイルに保存するのは無理なのかな・・・。
0480nobodyさん
02/12/17 16:59ID:dfOkftcJする、っていうのをつけようとしています。
が、500エラーになってしまいました。こういうふうに書いたのですが、何が
間違っているでしょうか。
#設定部
#メール通知機能
#0:使用しない
#1:管理人の投稿も通知する
#2:管理人の投稿は通知しない
$mailing = 2;
#管理人の名前(メール通知2の時設定)
$adname = "管理人";
#sendmailのパス
$sendmail = '*****';
# 通知先
$mailto = '****@*****';
#ここまで。
#以下を「書きこみ処理」サブルーチンの一番最後に追加。
if ($mailing == 1) { &mail_to; }
elsif ($mailing == 2 && Form{'name'} ne "$adname") { &mail_to; }
}
↑サブルーチンの締めかっこ。
元になってる掲示板はLiteboard。
0481nobodyさん
02/12/17 17:00ID:???0482nobodyさん
02/12/17 17:31ID:???>>401の $MIX[] を $pwd に変えて
sub words { ... };
&words;
でやったらちゃんとできた。
&wordsはちゃんと呼び出されてる?
もしかしたら crypt() がMD5専用かもしれないので(BSD系の場合?)、
$words = crypt($in{'word'}, '$1$' . $kw);
でやってみたら。
0483nobodyさん
02/12/17 17:31ID:???ttp://pc.2ch.net/test/read.cgi/php/1028193595/
【 スクリプト改造工房 PART 5 】
0484nobodyさん
02/12/17 18:21ID:???> Form{'name'}
$Form{'name'}じゃないのか?
それと、なぜ$adnameを引用符でかこんでいるのかわからん。
0485nobodyさん
02/12/17 18:44ID:c+lM3tmR---●●●変態痴女を紹介致します。●●●---
例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・
フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・
アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・
SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。
●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●
090-8002-8356番
下のカタカナを小文字に変換してください。
http://www.エムティーティー.jp/i
0486Omoti@2ちゃんねるアナリスト ◆hFOmotia5o
02/12/17 19:17ID:???既婚女性板
● ちょっと奥様今年のご主人のボーナスおいくら?
http://human.2ch.net/test/read.cgi/ms/1039952630/
のスレの書き込みのボーナスの金額をスマートに抜き出して
統計処理したいのです。どうすればいいでしょうか。
0488Omoti@2ちゃんねるアナリスト ◆hFOmotia5o
02/12/17 19:43ID:???アドバイスありがとうございます。
できれば、人間の手でやるのではなくて、
もっとスマートにできないものでしょうか?
0489nobodyさん
02/12/17 20:02ID:???0490Omoti@2ちゃんねるアナリスト ◆hFOmotia5o
02/12/17 20:07ID:???2ちゃんねらーにしては、あきらめが速いですね?
不可能を可能にするのがプログラマーでは?
ま、私自身もうまい方法が思いつかないので
ここで相談してるわけですが(@w餅
0491nobodyさん
02/12/17 23:25ID:???こういうのはゴリゴリソースを書いていくしかないね。
.datを取得して、行に分解する。
その一行一行に対して以下の処理を行う。
・書き込みのみを抜き出し、
・全角数字を半角に変え(正規表現にひっかかるように)、
・半角カタカナを全角に変え(ひっかかりやすくするように)、
・数字の連続+「マン/マソ/万」をボーナス額と考えて正規表現で取得する。
・例外として「ゼロ」は0として扱う。
・以上の条件にあてはまらない時は、その行には金額が書き込まれていないと判断する。
こうして得られたデータを表示するなり別ファイルに書き出したりして保存する。
こういう流れだろうな。
後は実際にスクリプトを起こすだけだが、
それぐらいなら初心者と言ってもできるだろう?
んで、実行してみてうまく抜き出せない場合は、条件を見直す訳だ。箇条書きの部分な。
そんじゃ健闘を祈る。
0492Omoti@2ちゃんねるアナリスト ◆hFOmotia5o
02/12/17 23:33ID:???おお。詳しい説明ありがとうございます。
やってみます。今後ともよろしくお願いします。
0493木田
02/12/18 00:04ID:???http://www.diohosting.com/jp
0494nobodyさん
02/12/18 00:23ID:???0496
02/12/18 01:27ID:uR+QrFPjエラーがでてしまいます。検索してもおかしくなさそうに見えるのですが…
perl -e"s/aaaa/bbb/g;" *.txt
<エラーメッセージ>
Unquoted string "perl" may clash with future reserved word at
"C:\WINDOWS\デスクトップ\test.pl" line 1.
syntax error at "C:\WINDOWS\デスクトップ\test.pl" line 1, near "perl -e"
Unquoted string "txt" may clash with future reserved word at
"C:\WINDOWS\デスクトップ\test.pl" line 1.
"C:\WINDOWS\デスクトップ\test.pl" had compilation errors.
以上、よろしくお願いします。
0497nobodyさん
02/12/18 01:31ID:1Ah7QOiOHOGE
までの中で計算する方法ってなにか無いのでしょうか?
0498nobodyさん
02/12/18 01:49ID:cSfhj2ax夜も更けて参りましたので今宵はお休み下さい。
0499496
02/12/18 02:01ID:???そうですか、ではまた明日伺います。お休みなさい。
0500nobodyさん
02/12/18 03:35ID:???【Perl 】初心者コーナーPart5
http://corn.2ch.net/php/kako/988/988728069.html
ここの256あたりからやり方が書いてあるよ。
0501nobodyさん
02/12/18 04:29ID:???それはスクリプトの中に書くものではなく、コマンドラインから実行するもの。
スタート>プログラム>MS-DOS プロンプト(またはコマンドプロンプト)
C:\WINDOWS>cd デスクトップ
C:\WINDOWS\デスクトップ>perl -e "s/aaaa/bbbb/g;" *.txt
0502nobodyさん
02/12/18 06:19ID:+CI84VDc@a = sort {$a cmp $b} @a;
print @a;
実行すると、一三四二 となります。
漢字の数字って、どうやって並べるの?
できればこれを 一二三四 にしたいんだけど、
どうすればいい?
0503nobodyさん
02/12/18 08:24ID:???漢数字は、漢字コード上では順番に並んでないから、ソートできないよ。
通常は普通の数字で処理して、表示するときに漢数字に変換するといい。
0504nobodyさん
02/12/18 11:45ID:8xOlQixN処理にいささか困ってます。送信フォームから来る情報は
検索文字 and検索(ラジオボタン)にするか 検索ファイル(チェックボックス) です。
and検索にするかと検索ファイルは情報が可変長なので困っています。
このような場合は受け取った情報を一つずつ解析していくのがベストなのでしょうか?
検索という性質上、0.1秒でも処理を早くしたいのでベストな手順を
教えていただけないでしょうか。お願いします。
0505nobodyさん
02/12/18 11:48ID:???0506nobodyさん
02/12/18 12:27ID:???0507nobodyさん
02/12/18 13:44ID:dss5kZ4mとやっても全角スペースが消せません。sjis
簡単な正規表現か何か希望。
\Q\Eつけても、一時的にEUCにしてもだめでした。
いい正規表現かなにかないですか?
0509トリップはマイクロソフト ◆lKiTB20t66
02/12/18 16:55ID:9mUf2zGi配列の任意の場所に値を入れたらそれ以降をずらしてくれる
関数有りますか?
ex.
[a][b][c]
[b]と[c]のあいだに[x]を入れると
[a][b][x][c]
こういう風なイメージです。こんなのありますか?
0510nobodyさん
02/12/18 16:58ID:???0511トリップはマイクロソフト ◆lKiTB20t66
02/12/18 17:00ID:9mUf2zGiいえいえ単次元配列で構いません
配列に値を入れたらそれ以降がずれてくれれば
それで構いません
0512nobodyさん
02/12/18 17:17ID:???s/"活動内容",//;
のように消去させると
<AD><A1>
のようなへんなコードが出来てしまいます。
日本語を安全に置換するにはどうすればいいでしょうか?
0513いきぬきを
02/12/18 17:26ID:xIqy3Dxbダウンロード 世界標準
http://www.kisslovetoco.com/
0514bloom
02/12/18 17:30ID:fboSAjfAhttp://www.agemasukudasai.com/bloom/
0515nobodyさん
02/12/18 17:39ID:???splice
0518nobodyさん
02/12/18 18:12ID:R82phE4X#! Perlのフルパス
を書くことによりファイル名を指定するだけで実行できるというのはLinuxでは出来ないのでしょうか?
0519nobodyさん
02/12/18 18:32ID:???コンパイラー、リファレンスの情報が探しても見つかりません。
ご存じの方はいらっしゃらないでしょうか?
0521518
02/12/18 19:08ID:R82phE4X実行権限を与えないと
Permission denied
の警告が出るんですよね?
実行権限を与える前も与えた後も
そんなコマンドねえよハゲみたいなメッセージがでるんです。
どうしたものでしょうか。
0523nobodyさん
02/12/18 22:06ID:???0524496
02/12/19 00:44ID:Duvh3oq4さっそくプロンプト上で同じコマンドを打ち込んでみたのですが、
なぜかそんなファイルはないというエラーがでました。
試しに存在するファイル名を直接打ってみると、これは動作しました。
ワイルドカードが効かない原因はなんなのでしょうか。
0525nobodyさん
02/12/19 06:29ID:ZsaWrRnVどうやら仕様が変更されて読み込めない。。。
Windowsでは(というかWindows標準のコマンドシェルでは)ワイルドカードは無意味だからね。
Googleで「Perl Windows Wildcard」で探してみるといい。
>>525
dbmopenは、インストールしてあるDBMモジュールから使用できるものを
動的に選ぶ仕様だから、5.6の方に標準以外のDBMモジュールをインストールしたなら
5.8にも同じモジュールをインストールしてみるといいかもしれない。
まぁ、仕様が変わったのかもしれないけど。
0528496
02/12/19 13:52ID:???なるほど、そうだったんですね。どうりでできないはずです。
perl windows wildcardやActive perl wildcardなどで
ググってみましたが、日本語サイトでは諦めている人の
情報しかありませんでした。
英語サイトを見ると解決法があるかなあ、
ここを見ろというサイトがありましたらどなたか教えて頂けませんか。
http://www.google.co.jp/search?q=perl+windows+wildcard&ie=UTF-8&oe=UTF-8&hl=ja&lr=lang_ja
この一番上の"jperl"というタイトルのページで紹介されている"Wildcard.pm"なんてどうかな。
使い方は
perl -MWildcard script.pl *.txt
という感じで。
または、CPANにあるWin32::Autoglobでもいいね。
0530496
02/12/19 16:11ID:???ありがとうございます、ばっちり走りました!
実はwildcard.pmはDLしていたのですが、使い方の説明も
書いてなかったので、どうしていいか分からなかったのです。
インストール先も分からなかったのですが、フォルダを覗いていたら
libフォルダに.pmファイルがたくさんあったので、入れてみたら正解
だったようです。
3日渡りお世話になりまして、皆さんありがとうございました。
0531518
02/12/19 17:17ID:gnHgtnzEありがとうございます。
やってみましたところそれでも
command not found
となってしまいます。
Perlのパスはtype -a perlで表示されたものでいいんですよね?
ちゃんとファイルの先頭に「ドットスラッシュ」を書いてください。
ファイルネームだけだとコマンドパス(/binとか/usr/binね)にあるコマンドのみを探します。
0533518
02/12/19 18:34ID:gnHgtnzE./ファイル名 と打ち込むのでいいのですか?
それでもやっぱり駄目ですね・・・。
どこかおかしいのかもしれないです。
0535518
02/12/19 19:10ID:gnHgtnzEPerl ファイル名 だとちゃんと動作します。
保存してあるディレクトリに移動して
#! Perlのパス や ./ ファイル名 では command not foundとなります。
0536nobodyさん
02/12/19 19:23ID:sSjdESWgっていうのを作ってほしいな・・
鬼のようなコードになってる。。
0537nobodyさん
02/12/19 19:49ID:???同じことをやるにしても、あのコーディングは凡人にはできない。
解析ガンバレ>536
0538nobodyさん
02/12/19 20:27ID:???ビビッタ
0539nobodyさん
02/12/19 21:25ID:???0540nobodyさん
02/12/19 22:58ID:SoXwX8I8http://www.yakin.cc/ch2.gif
0541nobodyさん
02/12/19 22:59ID:lw7wMpYEhttp://petitmomo.com/mm/
ここがちょっぴりエッチ系のめぐが運営している出会いサイトです。
もしよかったら使ってみて、、、
ヨロシクです。
めぐ(^o^)-☆
0542nobodyさん
02/12/19 23:14ID:ZsaWrRnVmother
hanako
father
taro
grandfather
kenzo
grandmother
hana
上記のようなテキストファイルがあります。
これを奇数番目をキーとし、偶数番目を値とする連想配列にしたいのですがどうしたらいいでしょうか?
つまり、
motherは、hanako
fatherは、taro
grandfatherは、kenzo
grandmotherは、hana
としたいのです。ご教授ください。
0544nobodyさん
02/12/19 23:31ID:sSjdESWg1.
%hash = map {
return chop($_);
} <TEXT>;
2.
while (<TEXT>) {
my $key = $_; chop($key);
my $value = <TEXT>; chop($value);
$hash{$key} = $value;
}
もうちょっとまともな手段で改行文字を消すこと。
0545nobodyさん
02/12/19 23:37ID:sSjdESWg0546nobodyさん
02/12/19 23:37ID:???はちょっと不親切のような気がする。
>>544
はちょっと冗長な気がする。
俺なら。
# ファイルを取得してリストに入れる。
open (IN, 'file.txt');
@line = <IN>;
close (IN);
# リストの全ての要素から、末尾の改行を取る。
chomp @line;
# そのまま代入する。
%hash = @line;
こんなもんかな。
0547修正版
02/12/19 23:42ID:sSjdESWgchop($_); $_;
} <TEXT>;
0548nobodyさん
02/12/19 23:44ID:sSjdESWgこう書いたほうが面白いと思って・・・
■ このスレッドは過去ログ倉庫に格納されています