1 名前:(・∀・)チンポー!! mailto:(・∀・)チンポー!! [04/06/02 11:39] perl書きなんだがさ、こうリクに答えてなんか作りたいんだ。 だからリクエストをくれ。
162 名前:154 mailto:sage [05/02/09 17:18:58 ] <ol> <li>abc <li>def <li>gh <ol> <li>kkk <li>jj <li>aa </ol> </ol> こういうデータを>>154 のように見出しをつけて変換したいんです。 どのコマンド使えばいいですか
163 名前:デフォルトの名無しさん [05/02/09 17:21:48 ] >>162 lynx
164 名前:デフォルトの名無しさん mailto:age [05/02/09 17:46:07 ] >>162 それは >>154 にならない 1.abc 2.def 3.gh 3.1kkk 3.2jj 3.3aa だろ?
165 名前:デフォルトの名無しさん mailto:sage [05/02/09 17:55:51 ] >>164 あ、すみません、間違えてました。 >>162 だと>>164 になりますね。 その3の中にある、3.1とか3.2というのは、catの中にまたcatですか?
166 名前:デフォルトの名無しさん [05/02/09 18:26:44 ] ……以後放置することを提議したい。
167 名前:デフォルトの名無しさん [05/02/09 18:28:38 ] >>164 > >>162 > それは >>154 にならない はあ? 何を何にするかなんて、自由だろ。
168 名前:デフォルトの名無しさん mailto:sage [05/02/09 21:15:20 ] >>154 データの形式がそれで正しいならこんな感じでいけないかな? while ( <> ) { if ( /<ol>/ ) { $num1++; undef($num2); next; } if ( /<li>(.+)/ ) { $val = $1; unless ( $num2 ) { print $num.". ".$val; $num2++; } else { print "\t".$num1.".".$num2.". ".$val; $num2++; } } } ちなみに、動作確認してないので。動くかどうか知らんがw >>166 スマソ m(_ _)m
169 名前:160 [05/02/10 12:29:12 ] >>161 さん ありがとうございます。「最大一致」ということで確認して改行も一致させるということで 以下のように書き換えました。他にもいろいろ試行錯誤すること8時間・・・ お願いします。htmlソースから余分な部分を削除するスクリプトを教えて下さい。 僕にはもう限界です・・・ #!/usr/bin/perl while (<STDIN>) { s/<a href=.*<dl><dt>//s ; print; }
170 名前:デフォルトの名無しさん mailto:sage [05/02/10 17:01:23 ] >>169 「余分な部分」だってさ(ゲラゲラ)
171 名前:デフォルトの名無しさん mailto:age [05/02/10 18:52:10 ] 何をどうしたいのか分からんw
172 名前:デフォルトの名無しさん [05/02/10 21:10:50 ] 並列処理(分散処理)をperlで作りたいのですが、教えてくれませんか? お願いします。
173 名前:デフォルトの名無しさん [05/02/10 22:39:43 ] 並列処理と分散処理は違うじゃないか? 並列ならthread/pthread 分散ならrpc,soap,corbaかな とにかく其の知識がないとperlでやろうとするなんて無理だべ
174 名前:デフォルトの名無しさん mailto:sage [05/02/10 22:42:29 ] なんでperlでやりたくなるのかがわからんw
175 名前:デフォルトの名無しさん [05/02/10 22:46:47 ] >>174 ちょっとした遊びでコードを書いたりするのは君には理解できないんだろうよ。
176 名前:デフォルトの名無しさん mailto:sage [05/02/10 22:48:47 ] 誰もあなたの遊びを手伝いません
177 名前:デフォルトの名無しさん [05/02/10 23:11:56 ] ここはビジネスライクなインターネットですね。
178 名前:デフォルトの名無しさん mailto:sage [05/02/10 23:14:53 ] >>169 こんな感じ? undef $/; open ( IN, "test.htm" ) or die "boo!"; $data = <IN>; close( IN ); $data =~ s/<a href=.*?<dl>.*?<dt>//gs; print $data;
179 名前:デフォルトの名無しさん mailto:sage [05/02/11 10:27:51 ] スレッドを使ったちょっとしたスクリプトを作ってください
180 名前:デフォルトの名無しさん mailto:sage [05/02/11 12:43:59 ] >>179 つ[perldoc thread]
181 名前:デフォルトの名無しさん mailto:sage [05/02/15 07:58:35 ] URLをフォームに入れて送信するだけで、リンク先のページの<title>タイトル</title>を抽出して、 <a href="URL">タイトル</a> という具合に自動で整形してくれるスクリプトってないですか? モジュールは「HTML-Parser-3.36」が使えます。
182 名前:デフォルトの名無しさん mailto:sage [05/03/12 07:18:12 ] >>181 Perl使え
183 名前:デフォルトの名無しさん mailto:sage [05/03/12 16:06:20 ] むしろRuby使えよ Perlみたいな糞言語は使うな。
184 名前:デフォルトの名無しさん mailto:sage [05/03/12 16:17:13 ] Rubyも使えない糞が何か言っています
185 名前:デフォルトの名無しさん [2005/03/23(水) 22:00:57 ] Rubyって何?ダサッ
186 名前:デフォルトの名無しさん [2005/03/23(水) 23:21:07 ] phpならfile()→正規表現→ゲチュー終了
187 名前:デフォルトの名無しさん mailto:吊るし上げ [2005/03/24(木) 17:06:14 ] CGI作れ
188 名前:デフォルトの名無しさん mailto:sage [2005/03/25(金) 13:15:42 ] >>1 よ、2ちゃんブラ作れ
189 名前:デフォルトの名無しさん mailto:sage [2005/03/26(土) 14:47:40 ] やだアンタ、そういう趣味ー? 今時柄付きブラなんて付けてるオンナなんて… い な い わ よ
190 名前:デフォルトの名無しさん [2005/03/26(土) 20:37:08 ] >>189 何だこれ
191 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 01:12:33 ] ユーザー名と適当な紹介欄と所持金とpassを入力してアカウントを作成して、ユーザーは登録したアカウントにログインして所持金や登録情報を変更可能。 また、ユーザー一覧を見ることが出来、所持金や名前でソート可能。 見たいなのお願いします
192 名前:1じゃないけど mailto:age [int 2ch =05/04/02(土) 11:30:14 ] 暇なんで依頼があれば作れます [無理な物] 既存CGIと違いがないもの 既存CGIの改造 大規模すぎるもの 一週間後にまとめて公開します
193 名前:デフォルトの名無しさん [int 2ch =05/04/02(土) 14:09:26 ] AGE
194 名前:デフォルトの名無しさん mailto:sage [int 2ch =5年,2005/04/02(土) 16:33:42 ] >>192 過去スレにいろいろあるよ。ひまつぶしに出来そうなの。
195 名前:デフォルトの名無しさん mailto:sage [int 2ch =5年,2005/04/02(土) 16:34:17 ] あ、過去スレじゃなくて過去レスだ。
196 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 16:41:54 ] >>192 指定した数値ぶんの長さの文字列を生成するスクリプト
197 名前:192じゃないけど [2005/04/03(日) 17:15:32 ] &print_str_rand(9); sub print_str_rand { for(1..$_[0]){ printf('%c', int(rand(94)) + 32); } }
198 名前:デフォルトの名無しさん [2005/04/03(日) 17:53:21 ] ゆうパックの箱サイズと料金表が基本データとして用意してあるとする。 有限個の荷物のサイズ・重量と配達地域が与えられときに、送料が最小となるための荷物の詰め込み方 (どのゆうパックの箱にどの荷物をどういう向きで詰め込むのか)を求めるプログラム。
199 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 17:54:34 ] 荷物をどういう向きってそのデータも基本データに入ってるの?
200 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 17:59:05 ] 荷物はすべて直方体で、斜めに置くことはしないとしましょう。 この場合、荷物の向きは6通りです。
201 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 18:19:36 ] えー3通りじゃないのか・・ちょっとむずいな
202 名前:200 mailto:sage [2005/04/03(日) 19:06:32 ] 直方体の辺をX, Y, Zの3種類とすると、面はXY, YZ, ZXの3種類。 底面がこの3種類のどれかになるのですが、ひとつの底面について、たて向き・よこ向きの2通り出来るので、 立体の向きとしては6種類あります。 別の考え方をすると、空間のx, y, z方向に直方体の辺X, Y, Zを対応させるとすると、 例えば「YZX」と書いたら、空間のx軸と直方体のY辺が平行で、y軸とZ辺が平行で・・・という意味にすると 結局、X, Y, Z の文字列としての並べ方と直方体の向きが対応します。3文字の順列になるので6通り。 問題自体は、数学的には「すべての組み合わせを調べつくすしか解法がない」という類いものらしいです。
203 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 20:53:56 ] 類のもの「らしい」っていうのが微妙だな。 俺的には、解答として提出された詰め込み方計算プログラムよりも その解答プログラムが「最小」の詰め込み方を正しく出力している かどうかを検査する手法のほうが興味あるな。 「正解」を出せるかどうかは目視のコードレビューで判断するのか、 それとも機械的に適切なテストを行うのか、ほかの方法を使うのか どうするつもりなんじゃい?
204 名前:デフォルトの名無しさん [2005/04/03(日) 20:59:30 ] とりあえず www.post.japanpost.jp/service/parcel/you_pack/index.html 参考に
205 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 21:10:55 ] たとえば、置く方向決まってる奴あるけど この問題の場合 ああいうのは考えないという方向でいいの?
206 名前:200 mailto:sage [2005/04/03(日) 23:28:01 ] >>203 > 類のもの「らしい」っていうのが微妙だな。 数学的には「NP問題」と呼ばる種類の問題で、こういう詰め込みの問題では、 例えば「ビンパッキング問題」とか「ナップサック問題」というのがあります。 これらの有名な問題とは設定が微妙に違うんですが、本質的な難しさは同じなんじゃないかということで 「類いのものらしい」と(「の」が抜けてましたが)書きました。 半分ネタなので、そのプログラムが本当に正しいかの検査はおいといて、 まずは実際に計算するプログラムが先ということで。 >>205 > たとえば、置く方向決まってる奴あるけど そういうのは考えなくていいことにします。 下の荷物が潰れるとか、そういうのも考えなくていいです。
207 名前:デフォルトの名無しさん [2005/05/04(水) 04:43:24 ] age
208 名前:デフォルトの名無しさん mailto:age [2005/05/08(日) 16:47:32 ] >>192 HTML置き換え 複数のHTMLファイルに書かれているタグを置き換える <!-- ゙File.txt゙ --><!-- // --> みたいなタグの間に゙File.txt゙の内容を書き込む SSIだと負荷が高いので゙File.txt゙を変更した場合のみ更新したいのです。 すべてのページに同じヘッダーを付けたり著作権表示の年を一度に変えたりできるのでお願いします
209 名前:デフォルトの名無しさん [2005/05/09(月) 08:38:08 ] 依頼age
210 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 03:53:37 ] #動作未確認、つーかplファイルにもしてないが require 5.8.5; use utf8; use open ":utf8"; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; $pat='<!--\s゙(.+)゙\s-->'; while(<STDIN> && !$_=~$pat) print; !eof STDIN or die; print; open FILE,"<$1"; foreach(<FILE>) print; $pat='<!--\s\/\/\s-->'; while(<STDIN> && !$_=~$pat){} print; foreach(<STDIN>) print;
211 名前:デフォルトの名無しさん [2005/05/10(火) 10:06:19 ] 質問なんですが教えてください。お願いします。 CGIでリンク集を作れるフリーソフトをダウンロードしたのですが 検索したときに「1件〜10件を表示」などのような、いくら見つかった という表示がしないものでした。どうしたら表示できるようになるのでしょうか? 初心者のため、まったくわかりません。よろしければ教えてください。
212 名前:デフォルトの名無しさん [2005/05/10(火) 16:36:25 ] 自分用にカスタマイズした2ch書き込みスクリプトが作りたいんだけど、どうしたらいいでしょうか。 ちなみにサバではなくMacOSXのTerminalでPerlを動作させるつもりです。
213 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 16:38:06 ] age2ch
214 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 19:26:41 ] >>212 POST
215 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 02:14:25 ] #!/usr/bin/perl $_=$ENV{QUERY_STRING}; s/\+/ /g; s/%([\da-fA-F]{2})/chr hex$1/eg; eval;
216 名前:デフォルトの名無しさん [2005/05/26(木) 02:42:35 ] AltavistaのBabelfishという翻訳エンジン(SOAP対応)があるのですが、そこでは英語と日本語、英語とスペイン語の相互翻訳はできます。 でも僕がしたいのは日本語とスペイン語の直接の相互変換なのです。 そこで、日本語、ないしスペイン語の文字列を入力したとき自動的に英語を経由してスペイン語、日本語に翻訳するスクリプトをお願いします。 win環境で手軽に使えるインターフェースを装備してくれると非常にありがたいです。 よろしくお願いします.
217 名前:デフォルトの名無しさん [2005/05/30(月) 19:31:37 ] -a -b c d -e -f g h (以下数千万行続く) このような数列が記録されたファイルがあります。左2列が負数、右2列が正の数です これらの数列に関しての処理をしたいと思っています 上の例で言うところの、-aと-b、cとdをそれぞれ比較し、負数同士ならばより小さいほうを、正ならばより大きいほうを選んで、 -x y -z w (以下数千万行) というような処理をしたいのです よろしくお願いします
218 名前:デフォルトの名無しさん [2005/05/30(月) 22:46:24 ] 自己レスですが困難で大丈夫なんでしょうか? #!/usr/bin/perl open(IN,"filename@ARGV"); @cmd = <IN>; close(IN); foreach $cmd (@cmd) { @temp = qw( @cmd ); if ( $temp[0] <= $temp[1] ) { print "$temp[0] " ; } else { print "$temp[1] " ; } if ( $temp[2] >= $temp[3] ) { print "$temp[2] " ; } else { print "$temp[3] \n" ; } }
219 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 16:16:44 ] 動くならいいんじゃない?一般に、数千万行も一気にメモリに格納するのは 普通のマシンにはつらそうだし(不可能?)、遅くなるだろうが。
220 名前:デフォルトの名無しさん [2005/05/31(火) 21:52:51 ] すいません、メディアプレーヤーのプレイリストを書き換えるプログラムを書いていただけませんか?音源を移動したのでプレイリストも修正しなくてはいけなくなりました。 <media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Wave.mp3" tid="{7FDC9124-2E56-428E-A92B-2F64EECAECDF}"/> <media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\The Reb Blouse.mp3" tid="{7957C487-E402-4ED7-B164-EF08C59BFB6A}"/> <media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Look To The Sky.mp3" tid="{55D5B309-0D86-4227-85DC-A74D3499BD1F}"/> <media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Batidinha.mp3" tid="{EA9F7A38-6D42-4172-925C-E1DB6A8770E9}"/> 今、プレイリストは上記のようになってるんですけどこれの ..\..\レンタルCD等 を変えて絶対パスで G:音源 にしていただきたいんです。 プレイリストファイル(.wpl)は数百あって、日付順に全て読み込んでそれぞれ変えていってほしいんです。 どなたかお願いできますか?勝手言って申し訳ございません。
221 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 23:49:14 ] >>220 えっと、【レンタルCD等】を【違法ピーコ】に変えるんだな。 簡単だ。ちょっと待て。 あれっ・・・ ttp://www.keishicho.metro.tokyo.jp/anket/thanks2.htm
222 名前:デフォルトの名無しさん mailto:sage [2005/06/01(水) 22:03:13 ] Cのソースファイルを読み込んで全ての関数を次のような書式で下記だすスクリプトを作ってください。 戻り値型 関数名(引数型); こんな感じ。 int hoge(int, int);
223 名前:220 [2005/06/02(木) 19:58:06 ] すいません、ダメですか??
224 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 20:27:17 ] >>222 perl -ne "chomp; print qq($_\n) if /^\w.*\)$" foo.c
225 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 01:02:52 ] >>222 うちで試した限りでは抽出できたがどっかまずいとこあるかもしれん # # test.pl infile outfile # open(IN,$ARGV[0]) or die("can't open $ARGV[0].\n"); open(OUT,'>'.$ARGV[1]) or die("can't open $ARGV[1].\n"); while(<IN>){ nextunless(/^\s*((\w+\s+)*[\w\*]+)\s+(\w+)\(([^\)]+)\)/); # 末尾に;つければ定義部のみ拾えるだろう my $type = $1; my $func = $3; my $expr = join(' ',$4 =~ /([\w\*]+)\s+\w+[\,\s\)]/g); $expr = 'void'if(!$expr); print OUT "$type $func\($expr\);\n"; } close(IN); close(OUT);
226 名前:220 [2005/06/03(金) 07:49:01 ] 誰か作っていただけませんか?
227 名前:デフォルトの名無しさん [2005/06/03(金) 23:55:36 ] ディレクトリ内のファイルを日付順にソートするにはどうするんですか?
228 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 16:40:14 ] >>225 プロトタイプ宣言をしてるとだぶるよ。 あと、引数型をvoidにしないでくれよ。
229 名前:デフォルトの名無しさん [2005/06/04(土) 18:43:12 ] すいません、質問です。 ファイルの各行を順に読み込んで例えば「A」を「B」に変換していくようなのは どう書けばいいんでしょうか?
230 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:02:35 ] >>220 #!/usr/bin/perl use encoding q/shift_jis/; use Encode; @files = <$ARGV[0]/*.wpl>; $dir = quotemeta qq/..\..\レンタルCD等/; $/ = undef; for (sort { -M $b <=> -M $a } @files) { open(FH, "<:encoding(shift_jis)", $_) or die $!; $content = <FH>; $content =~ s/$dir/G:音源/g; close FH; open(FH2, ">:encoding(shift_jis)", $_) or die $!; print FH2 $content; close FH2; } 実行時引数に.wplのあるディレクトリパスを指定汁
231 名前:225 mailto:sage [2005/06/04(土) 20:04:05 ] void要らんかったから余計な $expr = 'void'if(!$expr); を削る。以上。あとやる気起きん。
232 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:05:47 ] 連投規制、バーボンに引っ掛からない2ch投稿スクリプト希望
233 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:16:49 ] >>225 複数行に跨る宣言が拾えないのでは。
234 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:29:05 ] >>227 こんな感じかな。更新日時でソートと解釈したけど $ctimeで作成日時、$atimeでアクセス日時にもできる。 $dirname = '.'; opendir(DIR,$dirname); foreach my $f (readdir(DIR)){ next unless(-f $f); my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($f); $file{$mtime} = $f;# 更新から経過秒数 } closedir(DIR); foreach $t (sort {$file{$a}<=>$file{$b}} keys %file){ #経過秒数でソート print "$file{$t} $t\n"; }
235 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:43:51 ] ねー、みんなー、DirHandleとかFileHandleとかFile::statとかTime::localtimeとか使おうよー……。
236 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:48:27 ] >>235 TMTOWTDI
237 名前:デフォルトの名無しさん [2005/06/04(土) 20:48:53 ] $mtime = (stat($foo))[9]
238 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:52:27 ] >>234 > $file{$mtime} = $f;# 更新から経過秒数 はあ? > foreach $t (sort {$file{$a}<=>$file{$b}} keys %file){ #経過秒数でソート はあ?
239 名前:デフォルトの名無しさん [2005/06/04(土) 20:54:35 ] 致命的なバグがあるじゃないか。 類まれなへぼコードだな。
240 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 20:55:37 ] >>236 そもそもそーゆー選択肢があること自体知らんやつが多過ぎるんだけどorz
241 名前:234 mailto:sage [2005/06/04(土) 21:08:23 ] こうかな。というかバカにするのは簡単だけど違ってたら訂正しておくれよ。 $dirname = '.'; opendir(DIR,$dirname); foreach my $f (readdir(DIR)){ next unless(-f $f); my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($f); $file{$mtime} = $f; } closedir(DIR); foreach $t (sort {$a<=>$b} keys %file){ #経過秒数でソート print "$file{$t} $t\n"; }
242 名前:220 mailto:sage [2005/06/04(土) 21:09:44 ] >>230 ありがとうございます!! とても救われました。
243 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:29:21 ] >>241 readdir()は'.'と'..'も返すから、grep !/^(\.*)|(\.\.)$/, readdir() などで除外しとけ。 あと %file は $file{$f} = $mtime として使う方が自然じゃね?
244 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:43:09 ] 書いてみた >< my $dir = shift || '.'; opendir my $dh, $dir or die $!; print map{ $_->[ 0 ]."\n" } sort { $a->[1] <=> $b->[1] } map { [$_, -M ] } #<*>; grep !m/^\.\.?$/&& -f, readdir $dh; closedir $dh;
245 名前:244 [2005/06/04(土) 21:53:34 ] grep最初のマッチ不要だったような orz
246 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 22:18:23 ] >>241 > こうかな。というかバカにするのは簡単だけど違ってたら訂正しておくれよ。 おまえは出てくるな。みんなの手間が増えるだけだ。
247 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 05:33:05 ] >>246 そういう貴様も出てこなければいいだろう。 広告の裏にでも書いてろ
248 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 15:13:51 ] 普通、チラシの裏だよなぁ
249 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 15:30:19 ] 最近両面印刷が多くてなぁ。
250 名前:デフォルトの名無しさん [2005/06/05(日) 17:10:03 ] ツルツルで書きにくい
251 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 01:58:09 ] 消しゴムで消しにくい
252 名前:デフォルトの名無しさん [2005/06/28(火) 15:17:43 ] hosyu
253 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 16:50:34 ] ALTボタンを押しっぱなしにするような命令はないですか?? 今あるボタンを押した時と同じ効果を発揮するような ショートカットキーを実装しようとしているのですけど、 ニーモニックキーだとALTも同時に押す必要がありますよね。 だからいちいちALTを押さなくても効果を活動できるようにしたいんです。 KeyListenerを実装するという手も考えましたが, これだとボタンを押した時の定義と同じことを書くので 二度手間だと思い,なんとか他の方法がないかと思って いきついたのがニーモニックキーです。
254 名前:デフォルトの名無しさん [2005/07/23(土) 10:34:38 ] ある文字列の中のあるHTMLタグをすべて見つけ出し、その中に特定の文字列が合った場合は、その文字列を消す。 というようなスクリプトを作りたくて悩んでいます。 例えば、あるファイル$fileの中から<font>タグを探し出して、みつかった<font>の中からweightに関する設定がされたものは、それを消して、$file中のすべての<font>からweightを消したいといった場合です。 いろいろやってみてるのですが、うまくいかない><;
255 名前:デフォルトの名無しさん mailto:sage [2005/07/23(土) 12:05:41 ] ブラウザからMSNメッセンジャーを使うスクリプト
256 名前:デフォルトの名無しさん mailto:sage [2005/07/23(土) 17:51:36 ] >>254 がんばって正規表現ゴリゴリ書くか、 HTML::Parserとか使って一度分解し、タグ・属性除去してから再構築。
257 名前:デフォルトの名無しさん [2005/07/24(日) 15:24:45 ] ファイルから、特定の行だけ違うファイルに出力するプログラムを作ってください。 <例> 元のデータ A 500円 6個 B 600円 6個 A 400円 3個 C 400円 7個 B 200円 6個 処理した結果 A 400円 3個 C 400円 7個 元のデータから同じ値段のものだけを出力するみたいな感じで。 ホント初心者ですいません。
258 名前:デフォルトの名無しさん mailto:sage [2005/07/24(日) 15:43:06 ] >>257 ( ゚Д゚)ポカーン
259 名前:デフォルトの名無しさん mailto:sage [2005/07/25(月) 20:16:12 ] >>256 HTML::*シリーズはいろいろあるな。この場合、HTML::Treeは如何か。
260 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 18:19:34 ] でもモジュール使えない鯖だと困るよね。 やっぱ正規表現で書くしか…。 セッションとかRSSも使いたいけど 俺が借りてるサーバは一切不可。 多分CGI.pmくらいは使えると思うんだが
261 名前:デフォルトの名無しさん mailto:sage [2005/09/09(金) 22:16:45 ] え、そういうのは自分で無理矢理インスコするもんじゃないの?
262 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 22:26:28 ] mp3プレーヤーが1円^^ news19.2ch.net/test/read.cgi/news/1126704124/ スクリプトで全部持ってかれてしまいます スクリプトと使い方うpして下さい! おながいします
263 名前:デフォルトの名無しさん [2005/09/28(水) 18:41:23 ] 行の折り返し処理をしたいのですが、思い浮かびません。 A:aaa,bbb,ccc,ddd,eee,ffff; B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq; C:rrrr,ssss,tttttt,uu,ssss,cccc,ss; てな具合に最初の文字列だけ「:」で区切られ、次の文字列からは 「,」で区切られます。最後の文字列には「;」が付きます。 この「,」で区切られた文字列は行により文字列数が違います。 これを下記のように10文字程度ずつ改行したいのですが、どのようにすれば よいでしょうか? A:aaa,bbb,ccc,ddd,eee,ffff; B:jjjj,kkkk,llll,mmmm,nnnnn, oooo,pppp,qqqq; C:rrrr,ssss,tttttt,uu,ssss,cccc, ss;
264 名前:デフォルトの名無しさん [2005/10/05(水) 02:42:23 ] >263 下記のどこが10文字程度なのかが分からん。 .........1.........2.........3 123456789012345678901234567890 A:aaa,bbb,ccc,ddd,eee,ffff; B:jjjj,kkkk,llll,mmmm,nnnnn, oooo,pppp,qqqq; C:rrrr,ssss,tttttt,uu,ssss,cccc, ss;
265 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 13:34:49 ] >>264 多分、全角の10文字ぐらいということだろうね。 そうすると、出力フォントの幅まで考慮するということだろうか。
266 名前:デフォルトの名無しさん [2005/10/09(日) 12:27:47 ] リク。 昇順にソートされた正の整数が一行に一個づつ書かれたファイルを標準入力から与えると、 その数の範囲を分かりやすく標準出力に表示してくれるスクリプトキボン。 例: 入力 1 2 3 100 101 105 出力 1-3,100-101,105
267 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 16:03:48 ] >>266 俺頭悪いからこんなソースしか書けんわ。すまん。 #!/usr/bin/perl $|=1; $file = <STDIN>; chomp $file; open(FH, $file); while (<FH>) { chomp; push @vals, $_; } close(FH); $head = $vals[0]; $buf .= $vals[0]; shift @vals; foreach $val (@vals) { if($head + 1 == $val){ $buf .= '-'; $head = $val; next; } if($val > $head + 1){ $buf .= $head.','.$val; $head = $val; next; } } $buf =~ tr/-//s; print $buf;
268 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 16:05:07 ] しかもそれマトモに動かんわ・・無視してごめん
269 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 16:41:22 ] 物凄い勢いで修正 #!/usr/bin/perl $|=1; $file = <STDIN>; chomp $file; open(FH, $file); while (<FH>) { chomp; push @vals, $_; } close(FH); $head = $vals[0]; shift @vals; print $head; foreach $val (@vals) { if($head + 1 < $val){ if($flag){ print $head; } print ',', $val; $flag = 0; } if($head + 1 == $val){ if(!$flag){ print '-'; } $flag = 1; } $head = $val; }
270 名前:266 mailto:sage [2005/10/09(日) 17:14:55 ] >>269 ありがとうございます。完璧です。 標準入力に渡すのは、ファイル名じゃなくてファイルの内容のつもり だったんですけど、これは私の依頼の文章のほうの問題ですね。 ありがとうございました。
271 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 21:35:16 ] >>263 半角10文字で作ってみた(自信なし) #!/usr/bin/perl while (<>) { while (/.{10}.*?,/) { print "$&\n"; $_ = " $'"; } print; }
272 名前:271 mailto:sage [2005/10/09(日) 21:38:21 ] これが… A:aaa,bbb,ccc,ddd,eee,ffff; B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq; C:rrrr,ssss,tttttt,uu,ssss,cccc,ss; こうなる A:aaa,bbb,ccc, ddd,eee,ffff; B:jjjj,kkkk, llll,mmmm, nnnnn,oooo, pppp,qqqq; C:rrrr,ssss, tttttt,uu, ssss,cccc, ss;
273 名前:271 mailto:sage [2005/10/09(日) 22:27:01 ] A:aaa,bbb,ccc,ddd,eee,ffff; B:jjjj,kkkk,llll,mmmm,nnnnn, oooo,pppp,qqqq; C:rrrr,ssss,tttttt,uu,ssss,cccc, ss; A:aaa,bbb,ccc, ddd,eee,ffff; B:jjjj,kkkk, llll,mmmm, nnnnn,oooo, pppp,qqqq; C:rrrr,ssss, tttttt,uu, ssss,cccc, ss; ( ゚д゚)ポカーン 10文字だよね?? 責任とれや!!!! _, ,_ パーン ( ‘д‘) ⊂彡☆))Д´) >>1
274 名前:271 mailto:sage [2005/10/10(月) 08:57:36 ] #!/usr/bin/perl while (<>) { while (/.{22}.*?,/) { print "$&\n"; $_ = " $'"; } print; } A:aaa,bbb,ccc,ddd,eee,ffff; B:jjjj,kkkk,llll,mmmm,nnnnn, oooo,pppp,qqqq; C:rrrr,ssss,tttttt,uu,ssss, cccc,ss; (;゚∀゚)=3ムッハー
275 名前:デフォルトの名無しさん [2005/10/14(金) 01:32:43 ] TelneTでサーバにアクセスしてユーザーとパスを入れて、コマンドを打つ その後に別のサーバーにログインするプログラムを作って ください。お願いいたします
276 名前:デフォルトの名無しさん [2005/10/14(金) 12:21:10 ] telnetやTelnet、あるいはTELNETなら聞いたことがあるんだが…… TelneTか……
277 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 14:40:23 ] >>275 search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm 簡単だから自分で作れ
278 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 16:48:36 ] >>1 :(・∀・)チンポー!! おまい、スレたてたんだから少しぐらいやれよ!
279 名前:デフォルトの名無しさん [2005/10/14(金) 23:27:14 ] ログインしているところまでは確認できるけど、WHOコマンド打たないんだよ
280 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 00:42:13 ] ……
281 名前:デフォルトの名無しさん [2005/10/15(土) 20:44:15 ] このスクリプトが動かないのですが何が原因ですか? プロンプトは Username: password: Router> とういう風に変わっていきます。 Routerにログインしてwho打つとログインはしているようなのですが、 $t->cmd("ping 10.1.1.1"); のコマンドを打ってくれません。 教えてください。 #!/usr/bin/perl use Net::Telnet; $host='10.1.1.1'; $username='aaa'; $passwd='bbb'; $t = new Net::Telnet (Timeout => 4, Prompt => '/[a-zA-Z ]+: /', Dump_Log => 'telnet-log'); $t->open("$host"); $t->login($username, $passwd); $t->waitfor('/[a-zA-Z]+>/'); $t->cmd("ping 10.1.1.1"); $t->waitfor('/[a-zA-Z]+>/'); $t->cmd("exit"); $t->close();
282 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:52:45 ] Net::TelnetのとこのPromptも [a-zA-Z]+> じゃないの?
283 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:54:54 ] あと、waitforは要らないんじゃない? promptを待つのはcmdだけでよいのでは?
284 名前:デフォルトの名無しさん [2005/10/15(土) 21:18:57 ] >>282 >Net::TelnetのとこのPromptも [a-zA-Z]+> じゃないの? [a-zA-Z]+> にした場合 >Username: に反応できなくなってしまったので:にしています >>283 初心者のためまだ理解していないのですが、 $t->waitfor('/[a-zA-Z]+>/'); はAからZまでのローマじと>が出てきたときに次に進めという意味ですよね? ログインするとプロンプトはRouter>になります が、cmd以降のコマンドを打ってくれないので困っています アドバイスください。
285 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 10:58:05 ] すみません、教えていただきたいのですが。 買い物などのWEBで、完了まで時間がかかるとき、「ただいま登録中です」のような一時的画面を表示させたいのですが、 perlではどのような方法があるでしょうか? javaなどでは時々このようなページを使っているとこがあるのですが。。。。
286 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 11:44:31 ] >>285 多分きっと板違い。WebProg板で聞き直すといいよ。 あと、完了までの時間がどれくらいなのか、とか、ブラウザからのリクエストを 受け取った時点で完了までの時間がはっきりするのか、とかの情報も加えた ほうがいいかも。
287 名前:デフォルトの名無しさん [2005/10/17(月) 00:01:32 ] すみません、ローカルにはてなみたいなシステム構築したいのですが参考になるページ等在れば教えてください
288 名前:デフォルトの名無しさん mailto:sage [2005/10/17(月) 02:44:30 ] >>286 ありがとうございます。ここでは×だったんですね。。。 すみませんでした。
289 名前:デフォルトの名無しさん [2005/10/23(日) 11:55:48 ] Linux> ping -n 127.0.0.1 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Linux>exit Windows>telnet 10.1.1.1 Username: Password: Unix> ping -n 2 127.0.0.1 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<5ms TTL=128 Reply from 127.0.0.1: bytes=32 time<5ms TTL=128 Unix>exit 上記のようなログがあり その中からpingのリプライのtime<xmsをリストするプログラムを教えてください 出力としては Linuxtime<1ms Unixtime<5ms にしたいです。 よろしくお願いいたします。
290 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 16:18:05 ] >289 まず、最低限下記の部分ぐらい仕様をはっきりさせろ。 ・各(ホストを示す?)ブロックはexitで終わる? ・Reply from行が複数あって、timeが食い違ったときどうする? ・pingが通らないパターンはあるのか?あるならその時どうする? 話はそれからだ。
291 名前:デフォルトの名無しさん [2005/10/27(木) 19:44:34 ] infoseek.jpにsmtp開いて単純にメール送ろうとしたら NLだけじゃいかんといわれ s/([^\r])\n$/$1\r\n/ s/^\n$/\r\n/ で修正して送ったら、うまくいくにはいったが、 cgiにしてサーバからおくると文字化けする。 しかも、なぜかクラッシュしてるらしく サーバからの応答がない。 ブラウザが再送して、結果文字化けしたメールが 大量にinfoseekに残る。 これってなんで? 他のmailboxでは問題ない。
292 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 12:24:02 ] コードさらせ。
293 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 23:18:23 ] log1.txt log2.txt … log10.txt というファイル名をきれいにソートしたい。 sort { $b <=> $a } @lists; だとlog10 をうまく処理できません。 どうすればいいですか??
294 名前:デフォルトの名無しさん [2005/11/01(火) 23:19:25 ] ageます
295 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 23:49:17 ] map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { /log(\d+)\.txt/; [$_,$1] } @lists;
296 名前:293 [2005/11/02(水) 00:08:58 ] わぁ、どうも!
297 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 01:59:35 ] Perl信者共助けてやれ pc8.2ch.net/test/read.cgi/tech/1131292946/
298 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:43:45 ] リクです。 20051108 aaa bbb end 20051109 ccc ddd end 20051110 eee fff end という内容のファイル(xxx.txt)があって、標準入力に 20051109 を与えた時に 20051109 ccc ddd end という部分だけを出力させたいんです。お願いします。
299 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:56:28 ] #!/usr/bin/perl $date = <STDIN>; chomp $date; open(FH, 'xxx.txt'); while (<FH>) { chomp; if($_ eq ''){ $flag = 0; next; } if($flag){ print $_, "\n"; next; } if($_ eq $date){ print $_, "\n"; $flag = 1; } } close(FH); テキトー
300 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 11:21:15 ] >>298 #!/usr/bin/perl chomp($input = <STDIN>); open XXX, "<xxx.txt"; $/="end\n"; while(<XXX>) { if(/^($input)/){ print $_; } } 適当に作ったから動かないかもしれん。
301 名前:298 mailto:sage [2005/11/08(火) 11:46:59 ] >>299 動きました。ありがとうございます。 >>300 ^ を消すと動きました。ありがとうございます。
302 名前:デフォルトの名無しさん [2005/11/19(土) 12:00:41 ] PERL
303 名前:デフォルトの名無しさん [2005/11/19(土) 23:20:48 ] とあるperlプログラムの中に PHPでいう <?php require("sample.txt"); ?> と同じ効果を付けたいのですが どんなスクリプトにすればよいのでしょうか
304 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 23:35:29 ] require 'sample.txt';
305 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 00:00:39 ] >>304 それはやりたい事と違うかも。 PHPでは<? ?>内じゃ無い部分はそのまま出力 use IO::File; my $fh = new IO::File 'sample.txt'; while (<$fh>) { print $_ } undef $fh; やりたい事はどっちだろね …複合型だと言うならスクリプト部分を判別出来るようにして置いて、マッチングしてevalに放り込む s/<\?perl(.*?)\?>/$1/ge 例えばこんな感じで
306 名前:デフォルトの名無しさん [2005/11/20(日) 00:05:13 ] 初心者なんでなんともいえないのですが ブラウザでxxx.phpに アクセスして <?php require("sample.txt"); ?> を見ると sample.txtの文字が表示されるんですよ それと同じことを xxx.cgiでもできないかなぁと思いまして わかりにくくてすみません
307 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 00:34:02 ] sub require2 { my $file = shift;
308 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 02:35:15 ] open my$o,">$file" or die; print$o "orz"x 10**5; close$o; return"orz"; }
309 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 22:24:32 ] sub require_for_vip { my $gold = shift;
310 名前:306 [2005/11/26(土) 18:39:05 ] 難しいですかね?
311 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 18:56:33 ] >>310 >>305 に既に答えのコードが書いてあるわけだが。
312 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 19:33:04 ] ワロス
313 名前:306 [2005/11/26(土) 20:39:48 ] 初心者すぎてイマイチわからない自分がいる… 勉強してからこい っていう話だが
314 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 20:57:29 ] >>313 そりゃスマンカッタ。説明がちゃんと必要だったな… #-------------------------------- sub show_file { my $file = shift; use IO::File; my $fh = new IO::File $file; while (<$fh>) { print $_ } undef $fh; } #-------------------------------- とでもスクリプトのどこかに書いておく。 で、 show_file('ファイル名'); という感じでそのサブルーチンを呼び出せば、そのファイルの中身が表示される。 パッケージが分かれていたりするとこれだけじゃ出来ないがまあその時はその時だ IO::Fileモジュールが使えない環境ならこっち #-------------------------------- sub show_file { my $file = shift; open SHOW_FILE, $file; while (<SHOW_FILE>) { print $_ } close SHOW_FILE; } #--------------------------------
315 名前:306 [2005/11/26(土) 21:28:45 ] なんどもすみません .cgiのなかに HTML表示するところがあるんですけど そこにshow_file('ファイル名');をやっても そのまま表示されてしまうのですが (マジ初心者で迷惑かけすぎですね
316 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 22:00:54 ] 表示をどうやってるのかによる。 単なるprint なのか、ヒアドキュメントなのか。
317 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 22:09:20 ] ${show_file('ファイル名')}
318 名前:306 [2005/11/27(日) 00:26:50 ] printです
319 名前:デフォルトの名無しさん [2005/11/28(月) 15:27:30 ] 誰か心優しい方、これを作ってくださいm(__)m 宿題に手づまりで助けてください!(>人<) SQL.txtを読み込んで、gakusei.csvを読み出し、 そこからName,Addressのみを表示させるプログラムを作ってください! データ↓ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1165.lzh 実行結果↓(予想) Name,Address Junichi,Tsukuba Akinori,Hitachi
320 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 19:12:46 ] >>319 中身も見ずに書く。 つ[DBI + DBD::CSV]
321 名前:デフォルトの名無しさん [2005/11/28(月) 19:34:22 ] htmlページでラジオ形式のインプットタイプを作り、 100問の5択形式にします。 そして、「国語」、「数学」、「英語」、「理科」、「歴史」という 5分野にそれら100問の回答の点数の結果を反映させたいのですが、 回答は1つの分野にのみ加点されるのではなく、例えば1問目が 「万有引力を発見したのはニュートンである」という質問だったとき 5択のうち1番目を選んだら「理科」の変数にも3点加点され、なお、 「歴史」の変数にも2点加点されるという形にしたいと思っています。 この場合、1科目の変数のみに影響するのではなく2科目以上になるので、 各質問ごとに設けた配列の点数をそのまま、「理科」だけに加点するということは できなさそうです。 それぞれ1問目の input name を "Q001" 2問目は input name を "Q002"とし、3問目以降も同じような方法で 100問目まで指定していきます。 そして、各問題、 「はい」、「はいに近い」、「どっちでもない」、 「いいえに近い」、「いいえ」という5択にして、 input value を「はい」から、"1","2","3","4","5"としていきます。 なにかいい構成が分かるかたいらっしゃいましたら、サブルーチン教えてください。
322 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 19:53:27 ] 俺はこういうのはJavaScriptでやっちゃってる。
323 名前:デフォルトの名無しさん [2005/11/28(月) 20:32:27 ] >>322 sendmailもいれてるからPERLでやってるんだけど、どうだろー
324 名前:デフォルトの名無しさん [2005/11/28(月) 20:34:03 ] もしくは、計算部分だけJAVAで組んでその結果の変数値(スコア)のみを CGIに渡すことって可能?
325 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 21:23:59 ] $table[1] = { # Q001 Q => { label => "万有引力を発見したのはニュートンである", option => [split(" ","はい はいに近い どっちでもない いいえに近い いいえ")] }, A => [ { rika => 3, rekisi => 2 }, #選択肢1 ] }; 構成ってこういうこと? 俺もこれをそのままJSONにして、採点までJavaScriptでやった方がいいと思う
326 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 01:16:34 ] 答えてくれて、ありがとう。 演算部分はjavascriptで組んで、 出てきた結果の値(各分野の点数や文字列など)を PERLで組んだCGIにデータを受け渡すことって 可能なのかなー?
327 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 01:34:11 ] >>326 フォーム内のフィールドにセットしてsubmitするとか、 クエリ文字列を生成しページ移動(Location.href)とか、 今流行のXMLHttpRequestとか色々あるんじゃないかな
328 名前:デフォルトの名無しさん [2005/11/29(火) 09:24:09 ] >>327 最初の1ページ目でjavascriptで演算した値を2ページ目のcgiにサブミットして 表示させるってことは可能? 普通、cgiにサブミットするときってフォーム入力で、入力したもの(変数として)がそのまま cgiのほうに渡されるでしょ?これを1ページ目でjavascriptで計算して、その結果の値を そのままcgiに渡すって方法どうすればいいかな? いいサンプルページやサンプルソースあったら教えてください。 もしかしたら、フォーム入力の「生年月日入力」の部分でこういうふうにjavascriptを組み込んで 昭和→西暦変換とかした値をcgiに渡してたりするようなページもあるような気もします
329 名前:デフォルトの名無しさん [2005/11/29(火) 09:47:48 ] proxy.f2.ymdb.yahoofs.jp/users/13a494ce/bc/sample.html?bcDAlAEB6aOdocif このような形で問100まであって、問100までの分の値と名前やメアドの値を formmail.cgiというものに渡すというかんじです。CGI側で質問100個の分の 演算をするのか、もしくは、アップーロードした、この1ページ目でjavascriptを使って 演算し、結果のみの値をcgiに渡して、それらを出力するのがいいのか迷っています。 また、記述の方法などのアドバイスもいただければ幸いです。
330 名前:329 [2005/11/29(火) 10:15:36 ] 何度もすみません。 やはり、javascriptは使わずcgi側で100問の結果判定を演算するサブルーチンを 作りたいのですが、どういう標記にすればいいでしょうか?>>321 にも書きましたが それぞれ1問目の input name を "Q001" 2問目は input name を "Q002"とし、3問目以降も同じような方法で 100問目まで指定していきます。 そして、各問題、 「はい」、「はいに近い」、「どっちでもない」、 「いいえに近い」、「いいえ」という5択にして、 input value を「はい」から、"1","2","3","4","5"としていきます。 というかんじです。>>322 さん、ありがとうございました。 もっと分かりやすい構文を教えていただけないでしょうか? 今考えているのは1ページ目でフォーム入力(ラジオ選択から得た情報)をcgiに submitした後、getformして入力された値を読み込み #質問結果判定 sub hantei { 1問目(1ページ目のQ001)「万有引力を発見したのはニュートンである 」に対し、 5択「はい(VALUE=1)」、「はいに近い(2)」、「どっちでもない(3)」、「いいえに近い(4)」、「いいえ(5)」のうち ・「はい」を選ぶと理科に3点加算(rika +=3)、歴史にも2点加算(rekishi +=2)とし、 ・「はいに近い」を選択したなら(rika +=2)、(rekishi +=1) ・「どっちでもない」を選択したなら(rika +=1)、(rekishi +=0) ・「いいえに近い」を選択したなら(rika +=0)、(rekishi +=0) ・「いいえ」を選択したなら(rika +=0)、(rekishi +=0) ↓ 次の質問(Q002)で同じような形でQ100まで演算していきます
331 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 11:16:32 ] どうでもいいけど、毎問メールアドレスを入力させられんの?
332 名前:デフォルトの名無しさん [2005/11/29(火) 11:37:19 ] 設問ごとの得点表を %SCORE_TABLE = ( Q001 => { 1 => { rika => 2, rekishi => 2 }, 2 => { rika => 2, rekishi => 1 }, .... }, .... } という形で用意する。 cgi入力のうち、QNNNに対応する値を%input = (Q001 => 2, Q002 => 1 ,... ) という形のハッシュにまとめる。 あとは while (my($q, $a) = each %input) { while (my($k, $s) = each %{$SCORE_TABLE{$q}->{$a}}) { $score{$k} += $s; } } とまわせば%scoreにそれっぽい結果が得られるだろう。
333 名前:329 [2005/11/29(火) 11:38:26 ] >>331 ううん、メアドを登録しなかったらしなかったで得点表示のみのページのみ 出力されて、メアド登録したら、直接SENDMAILで詳細結果が メールで届くようにするよ。
334 名前:329 [2005/11/29(火) 13:08:49 ] >>332 非常にありがたいんですが、原始的な組み方で if ($moji{Q001} == 1) { $rika += 2; $rekishi += 1;} elsif ($moji{Q001} == 2) { $rika += 0; $rekishi += 0;} elsif ($moji{Q001} == 3) { $rika += 0; $rekishi += 0;} elsif ($moji{Q001} == 4) { $rika += 0; $rekishi += 0;} elsif ($moji{Q001} == 5) { $rika += 0; $rekishi += 0;}
335 名前:329つづき↑ [2005/11/29(火) 13:09:10 ] にして、最終的にその結果から if ($rika == 1) {$rikaTEXT = 'rika1点かな';} elsif ($rika == 2) {$rikaTEXT = 'rika2点かな';} elsif ($rika == 3) {$rikaTEXT = 'rika3点かな';} elsif ($rika == 4) {$rikaTEXT = 'rika4点かな';} else {$rikaTEXT = 'rika不明かな';} if ($rekishi == 1) {$rekishiTEXT = 'rekishi1点かな';} elsif ($rekishi == 2) {$rekishiTEXT = 'rekishi2点かな';} elsif ($rekishi == 3) {$rekishiTEXT = 'rekishi3点かな';} elsif ($rekishi == 4) {$rekishiTEXT = 'rekishi4点かな';} else {$rekishiTEXT = 'rekishi不明かな';} そしてこのスコアから判断されたメッセージをHTML出力するとき $rikaTEXT<BR> $rekishiTEXT<BR> でいいのかな?このままの構成を残して訂正しなきゃならない部分を教えてください。 これで実行してもrikaのスコアしか表示されなくて、rekishiのスコアは表示されません(T_T)
336 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 19:04:01 ] 鬱陶しいなあ。 まったく理解できないのに偉そうなことばかり。 もうどこかに委託しろよ。
337 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 20:50:31 ] >>336 まあまあ、あまり怒りなさんな。 オレはこの調子で100問分書いたスクリプトというものをぜひ拝見したい。 >>335 最後の部分をこんな風に書いたんじゃないの? --------------------------------- print "$rikaTEXT<BR> $rekishiTEXT<BR> "; --------------------------------- それなら、こうするとうまくいくよ。 print "$rikaTEXT<BR>\n$rekishiTEXT<BR> "; あと、スクリプト完成したらぜひ公開きぼ〜ん。
338 名前:デフォルトの名無しさん [2005/11/29(火) 23:18:59 ] >>337 ありがとう。見せたいとこだけど、 ごめんよー
339 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 23:57:56 ] >>338 そうか。Perlスクリプトを公開すれば解答も公開すること になるから仕方ないかもしれんな。しかし、大体の想像はつく。 >>334 に書いてあるものを100問分作って、 >>335 に書いてあるものを0〜200の範囲で作るんだね。 拝見できないのは残念だが、まあ、がんばってタイプしてくれ。
340 名前:デフォルトの名無しさん [2005/11/30(水) 00:31:36 ] >>339 本当にありがとう。いい人いるんだね。ありがとう。 点数配分を配列ではなく、原始的な構造でチマチマ入力してやっていきます。 3000行以上のCGIになります(笑)
341 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 07:26:07 ] 微笑ましいですね^^
342 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 11:25:43 ] ^^;
343 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 19:04:43 ] 性別 回答者合計者○($SEXSUM)名中 男○($SEXMALE)名 女○($SEXFEMALE)名 というのをHTMLで出力したいんだけど、ディレクトリに SEX.txtというのを置いて そのtxtファイルの中に「 0,0 」 というふうに男女の初期値の人数をいれておいて。 毎回フォームから'GENDER'の値が0(男性).もしくは1(女性)で送ってきた時のみ。 SEX.txtを読み込んで、1足して表示→そして読み込んだSEX.txtの人数の一人プラスという ようなPERLスクリプト分かる人いますか?
344 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 19:11:07 ] pc8.2ch.net/test/read.cgi/tech/1131286411/641 マルチ放置推奨
345 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 13:49:45 ] 西暦の "2005"という部分だけ、取得したいんだけど $TIME= (ここはどうすればいいですか?)
346 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 13:56:41 ] >>345 この辺読んで基礎からじっくり勉強したらいいんじゃない? pc8.2ch.net/test/read.cgi/tech/1131286411/2 www.hyuki.com/writing/techask.html
347 名前:デフォルトの名無しさん [2005/12/01(木) 14:02:29 ] my($sec, $min, $hour, $day, $mon, $TIME, $wday) = localtime(time); # 取得した値を調整(リファレンス参照) $TIME+= 1900;
348 名前:デフォルトの名無しさん [2005/12/01(木) 14:03:51 ] >>347 とんくす
349 名前:デフォルトの名無しさん [2005/12/01(木) 14:27:50 ] $TIME=`perl -MPOSIX=strftime -le 'print strftime("%Y", localtime())'`
350 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 14:29:20 ] >>347 長い $TIME = 1900 + (localtime(time()))[5];
351 名前:デフォルトの名無しさん [2005/12/01(木) 16:01:06 ] >>350 長いというならlocaltimeの引数のtime()も省略可能だよ。
352 名前:デフォルトの名無しさん [2005/12/01(木) 16:11:56 ] >>351 ナイスつっこみ! お前みたいなのを待っていた
353 名前:350 mailto:sage [2005/12/01(木) 16:15:15 ] 知ってるよ どんなunixtimeを渡すのか分からんから一例を書いたまでだ
354 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 16:42:12 ] そういうのを負け惜しみって言うんだぜ
355 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 17:56:57 ] >>345 $TIME = 1900 + (localtime)[5];
356 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:00:06 ] 個人的には strftime の方が好みだな。
357 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:04:14 ] >>343 Yahooにまで…。 messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835099&tid=a1zperla1ya5qa1bca5ka1z&sid=1835099&mid=368 しかも誰か答えちゃってるし。
358 名前:350 mailto:sage [2005/12/01(木) 18:08:14 ] なんで煽られてるのかが分からんのだが・・中学生か?
359 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:24:26 ] >>343 の答えは pc8.2ch.net/test/read.cgi/php/1102980903/965-967 でもう出てる
360 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:28:38 ] >>358 変な奴はほっとけ
361 名前:デフォルトの名無しさん mailto:sage [2005/12/01(木) 18:38:49 ] VIPが出来てから馬鹿が流入してきた
362 名前:デフォルトの名無しさん mailto:sage [2005/12/03(土) 23:36:45 ] 馬鹿というかガキなんだよな。煽り方も知らないような。
363 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 21:25:33 ] ネットショップで○○時から○台限定で販売、とかいうのを買おうとすると 真っ先にスクリプターに買い占められちゃうんだけど そういうのに対抗できる自動購入スクリプトってPerlで組めませんか?
364 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 23:39:56 ] 組めたとしてもここで公開されれば対策される。 対策されなくても公開されている以上大勢が使う。 意味がない。
365 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 00:01:35 ] >>363 組めます
366 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 04:17:29 ] 。゚(゚∩д∩゚)゚。 確かに仰るとおりですね・・・
367 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 08:47:31 ] 楽天のなら作った事ある
368 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 09:24:49 ] ビックカメラのは組めませんか?
369 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 09:30:28 ] 楽天のは空売りですよ
370 名前:367 mailto:sage [2005/12/07(水) 09:41:05 ] いや、俺は楽天で1円で1GBのmp3プレーヤゲットしたんだがw サンプルページはないのか ビックカメラの 仕様が分からんとどうにもならんだろ
371 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 10:57:09 ] ビックカメラの場合 こういう場合のと www.biccamera.com/bicbic/jsp/w/catalog/detail.jsp?PRODUCT_ID=0010097057 こういう場合のがあるんだけどなんか違うの? www.biccamera.com/bicbic/app/w?ActionType=bw011100_01&PRODUCT_ID=0010007029
372 名前:デフォルトの名無しさん [2005/12/10(土) 15:47:01 ] age保守
373 名前:PAJA [2005/12/10(土) 16:52:51 ] はじめまして、PAJA といいます。 # Vine Linux 3.1 の Perl v5.8.2 です。 ./trial.pl の中で、 `vi ./hoge.txt` と記述したところ、下記のようなメッセージがでてしまいました。 " Vim: 警告: 端末への出力ではありません" やりたいことは、./trial.pl を実行すると "./hoge.txt を vi で開く" ようにすることです。 どうすれば、できるようになるでしょうか。 よろしく、お願いします。
374 名前:デフォルトの名無しさん mailto:sage [2005/12/10(土) 17:23:42 ] system "vi hoge.txt";
375 名前:PAJA [2005/12/10(土) 19:41:10 ] >> 374 ちゃんと開くことが出来るようになりました。 ありがとうございました。
376 名前:デフォルトの名無しさん mailto:sage [2005/12/11(日) 05:44:49 ] >>373 実行したものからの出力を受け取らないならバッククォートは使わない と覚えておくといいよ。
377 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 15:28:53 ] すいません。教えてください。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI"; であるとき $s1が"AI今日U<KAKIKU>SASISU%sNANI"、 $s2が"明日"、 $s3が"明日TU"、 $s4が"TATITU" となるようにするプログラムを教えてください。 どうかよろしくお願いします。
378 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 15:53:09 ] >>377 $s1 = "AI今日U<KAKIKU>SASISU%sNANI"; $s2 = "明日"; $s3 = "明日TU"; $s4 = "TATITU"; それだけしか条件がないとこれでもいいわけだが(笑) どういう規則でそうなるのか例だけじゃわかんね。
379 名前:377 mailto:sage [2005/12/14(水) 16:18:46 ] >378 すいません。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";が条件です。 自分では以下のようにしてやってみていたのですが、うまくいきません。 @list = split (/,/, $_); if ($list[2] =~ /<[A-Z]+\*[A-Z]+>/) { ($s1 = $list[2]) =~ s/[^A-Z][^<]*<[A-Z]+\*[A-Z]+>/%s/g; @s2 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*[A-Z]+>/o; $s2 = $s2[0].$s2[1]; @s3 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*([A-Z]+)>/o; $s3 = $s2[0].$s2[1]; @s3 = $list[2] =~ /<([A-Z]+)\*{1}([A-Z]+)>/g; $s3 = $s3[0].$s3[1]; }
380 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:30:10 ] だめだ。問題を説明する能力のない人らしいので エスパーさん出番です。
381 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/12/14(水) 16:48:42 ] こうかな。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI"; (my $s1 = $_) =~ s/([^A-Z<]+)<([A-Z]+)\*([A-Z>]+)>/\%s/; my $s2 = $1; my $s3 = $1 . $3; my $s4 = $2 . $3; use Data::Dumper; print Data::Dumper->Dump([$s1, $s2, $s3, $s4], [map { 's'.$_ } (1 .. 4)]); >>377 誰にでも理解できるように仕様を説明するように。 具体的に言うと、小学生にも分かるように。
382 名前:377 mailto:sage [2005/12/14(水) 17:07:42 ] というか、解決?かどうかまだ不明ですが一応出来ました。 379は貼り間違いました。↓は解決?したものです。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI"; ($s1 = $_) =~ s/[^A-Z][^w]{1,3}<[A-Z]+\*[A-Z]+>/%s/g; print "$s1\n"; @s2 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}[A-Z]+>/o; print "@s2\n"; @s3 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}([A-Z]+)>/o; print "@s3\n"; @s4 = $_ =~ /<([A-Z]+)\*{1}([A-Z]+)>/g; print "@s4\n"; これで一応目的の動作をするのですが、 2行目が特によくわかりません。 [^A-Z][^w]{1,3}は何でしょうか? [^w]って何?ワード文字?ワード文字は\wですよね? [^w]を普通に読むとwという文字以外すべてだと思うのですが。
383 名前:377 mailto:sage [2005/12/14(水) 17:14:38 ] >381 わかりにくくてすいません。 目的は文字列中の<*を含む英大文字>の部分とその直前の漢字の展開です。
384 名前:デフォルトの名無しさん [2005/12/23(金) 19:01:41 ] メートル単位の長さを与えて、それをヤードに変換して表示するプログラムを教えてください。 1メートルは1.1ヤードとしてください。
385 名前:デフォルトの名無しさん [2005/12/23(金) 19:03:08 ] インボカントって何か教えてください
386 名前:384 [2005/12/23(金) 19:11:02 ] 追記します。 メートル単位の長さをヤードに変換したり、ヤード単位の長さをメートルに変換するプログラムを教えてください。 >>384 でかいたような一方通行のプログラムでしたら分かります。 上のような場合、どうやって分岐(?)させればよいのでしょうか?
387 名前:384 [2005/12/23(金) 19:17:39 ] >>384 について考えたプログラムを載せておきます。 どなたか、>>386 のように改変してください。。。 use strict; my ($meter, $yard); print "長さをメートルで入力してください"; $meter = <STDIN>; chomp ($meter); $yard = $meter * 1.1; print "$meterメートルは$yardです。\n";
388 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 20:02:18 ] >>387 入力値がメートルとした場合のヤードの値 入力値がヤードとした場合のメートルの値 を計算して結果を2行書けばいいんじゃね?
389 名前:デフォルトの名無しさん [2005/12/23(金) 22:21:41 ] >>388 なるほど。 入力時の数字が、10だったら 10メートルは***ヤードです。 10ヤードは***メートルです。 とすれば良いのですね。 逆転の発想ですね!ありがとうございます。
390 名前:デフォルトの名無しさん mailto:sage [2005/12/24(土) 00:19:30 ] それなんて宿題
391 名前:デフォルトの名無しさん [2005/12/24(土) 17:51:13 ] age 宿題でもどーんとこいや
392 名前:デフォルトの名無しさん mailto:sage [2005/12/25(日) 18:26:07 ] perl -MO=Xref,-r hoge.pl の結果から以下のような結果を整形してみたいです。出してください。 ■結果 hoge.pl 250<0>main() hoge.pl 160├<1>get_home_directory() hoge.pl 135│└<2>usage() hoge.pl 190├<1>read_configration() hoge.pl 220│└<2>get_string() <<略>>
393 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/12/25(日) 19:31:09 ] >>392 -r 付けなきゃそれっぽくならんかね。
394 名前:デフォルトの名無しさん mailto:sage [2005/12/26(月) 00:01:42 ] あれだと、エディタのタグジャンプ使えないし、みづらいので。 cの関数コールグラフ書くフリーウェアのfunctreeみたいな使い勝手 のものが欲しいです。
395 名前:デフォルトの名無しさん mailto:sage [2005/12/26(月) 11:49:52 ] >>386 引数で数値の後に m が付いていたらメートル、yが付いていたら ヤード、ということにするならこんな感じか。 #!/usr/bin/perl -w use strict; for(@ARGV) { if(/^(\d+(\.\d+)?)(m|y)$/) { if ($3 eq 'm') { print "$1 メートル = " . ($1 * 1.1) . " ヤード\n"; } else { print "$1 ヤード = " . ($1 / 1.1) . " メートル\n"; } } else { print STDERR "$_: 解釈できません。\n"; } }
396 名前:デフォルトの名無しさん [2006/01/13(金) 16:15:09 ] 1 INDATEというファイルの中身を読み込んで処理するものであること。(INDATEも提出すること) 2 少なくとも一個のif文をつかっている。 3 for.while.foreachなどの繰り返しを少なくとも一個は使っている。 4 少なくとも一個の配列を使っている。 5 少なくとも一個の引数を使っている。 6 以下の様に実行することでOUTDATEに結果が出力される。 %KADAI3<INDATE>OUTDATE 注:3は引数である。 という課題です。頼みます。
397 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:17:49 ] >>396 教科書に答えが。
398 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:18:35 ] >>397 う・・・
399 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:40:59 ] なんだその意味不明な課題 俺が馬鹿なだけかもしれんが、何をしたいのか訳わからん
400 名前:デフォルトの名無しさん [2006/01/13(金) 16:44:17 ] >>399 1〜6を満たす自由な機能のプログラムを作るって課題なんですが…
401 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 16:47:08 ] ああそういう意味か %KADAI3<INDATE>OUTDATE まだこれの意味が分からんが
402 名前:デフォルトの名無しさん [2006/01/13(金) 16:56:45 ] >>401 Terminalで入力したらってことだからあまり関係ないです。ごめんなさい。
403 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 17:28:01 ] それDATEじゃなくてDATAだろ
404 名前:デフォルトの名無しさん [2006/01/13(金) 17:37:44 ] >>403 そうです。ほんとごめんなさい。
405 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 21:34:26 ] 結局>>397 でFAだな
406 名前:デフォルトの名無しさん [2006/01/14(土) 07:43:38 ] そんなぁ・・・
407 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 09:42:00 ] #!/usr/bin/perl use LWP::Simple; $url = 'girls.twistys.net/preview/ '; for ($i=1; $i<=500; $i++) { $num = sprintf("%03d", $i); $_ = get($url.$num."/"); s/\w*\d{1,2}\.jpg/push @jpgs, $&/eg; foreach $jpg (@jpgs) { getstore($url.$num."/".$jpg, $num.$jpg); } }
408 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 08:50:23 ] 仲間分けについてのプログラムについて教えてください 1番と3番 1番と5番 1番と7番 2番と6番 2番と8番 3番と5番 3番と11番 が仲間です 配列には上から 1\t3 1\t5 ……のように入っています この時1,3,5,7,11 と 2,6,8 のように仲間に分けるプログラムを作ってください
409 名前:ゆみ [2006/01/16(月) 11:24:17 ] Perl初心者です。教えてください。 日付,メールアドレス 日付,メールアドレス 日付,メールアドレス ・ ・ ・ と数万行も続くデータから、重複メールアドレスが存在したときは その行を取り除くということは出来るのでしょうか。 困っています(;;)教えてください。
410 名前:デフォルトの名無しさん [2006/01/16(月) 11:39:46 ] できるよ
411 名前:ゆみ [2006/01/16(月) 11:44:33 ] どうやればいいのでしょうか? 是非教えてください。。。
412 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 11:44:49 ] >>409 perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv
413 名前:ゆみ [2006/01/16(月) 11:51:59 ] >>412 ありがとうございます(*^^*) これはコマンドプロンプト(PC)上で行う処理方法でしょうか? サーバー上のCGIファイルの中で処理する場合の書き方はありますか? またin.csvというのが元のデータファイルで、out.csvというのが 出力された新しいファイルですよね?
414 名前:ゆみ [2006/01/16(月) 12:02:04 ] perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv これも試してみましたがうまくいきません。 1万行以上あるのに新しく作られたファイルは60行足らず。 もしかすると私の説明不足なのかもしれません。 重複したメールアドレスの存在しない日付,メールアドレス のリストを作りたいのですが。。。 意味わかりますでしょうか(**)ごめんなさい。。。
415 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 13:54:12 ] >414 m月d日に誰からメールが来てるかのリストを作るのか? だったらDBに読み込んでクエリ書いた方が手っ取り早いと思われ。 SELECT dateval, addr FROM infile GROUP BY dateval, addr;
416 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 15:43:02 ] >>414 てことはまず日で分けて、その中に同じアドレスがあっても1つで出すということだな。 じゃあこれを参考に作れ。 my %data; while (<>) { chomp; if (/^([^,]+),(.+)$/) { $data{$1}{$2} = 1; } } for my $day (sort keys %data) { for my $addr (sort keys %{$data{$day}}) { print "$day,$addr\n"; } }
417 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 15:45:47 ] >>408 何がどう仲間なのか全然分からん。 もっと詳しく説明するように。
418 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 19:15:13 ] >>408 こんなのか?データは標準入力から。 my @ary=(); my @index=(); sub pushme($$) { my ($ary,$val)=@_; my $i; for($i=$val;!UNIVERSAL::isa($ary->[$i],'ARRAY');$i=$ary->[$i]){} push(@{$ary->[$i]},$val); } while($_=<STDIN>){ /^(\d+)\t(\d+)$/; if(defined($ary[$1])){ $ary[$2]=$1; pushme(\@ary,$2); }elsif(defined($ary[$2])){ $ary[$1]=$2; pushme(\@ary,$1); }else{ my @newary=($1,$2); $ary[$1]=\@newary; $ary[$2]=$1; } foreach(@ary){ if(ref($_) && ref($_) eq 'ARRAY'){ print join(",",@$_)."\n"; } }
419 名前:418 mailto:sage [2006/01/16(月) 19:18:56 ] 本当は sub pushme に \@ary 渡すのは蛇足。 渡さなくともここでは @ary は有効なスコープ。
420 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 20:08:55 ] >>408 @list = ( "1\t3", "1\t5", "1\t7", "2\t6", "2\t8", "3\t5", "3\t11" ); $tmpstr .= join ':', map "\t$_", @list; 1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*):((?:[^:]*:)*)((?:\t\d+)*)\1((?:\t\d+)*)(?::|$)/$1$2$4$5:$3/; 1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*)\1(?=\t|:)/$1$2/; @grouping = map [/(\d+)/g], split ':', $tmpstr; $" = ","; print "@{$grouping[0]}と@{$grouping[1]}\n";
421 名前:408 [2006/01/16(月) 21:04:13 ] 配列に@nakamaに上から $nakama[0]="1\t3"; $nakama[1]="1\t5"; …… という風に入っていて、それぞれ1と3は仲間、1と5は仲間という意味になっています。 1と3が仲間で、3と11が仲間であれば1と11も仲間とします。 これで>>408 を 1,3,5,7,11と 2,6,8に分けたいのです。
422 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 21:06:04 ] >>420 おお、更新していなくて分かりませんでした。 それでうまく出来ました。ありがとうございます!
423 名前:ゆみ [2006/01/16(月) 23:00:24 ] 409です。>>416 さん有難う御座います。。。 私はホントに初心者で・・・説明べたで申し訳御座いません。 416さんのは同じ日付内で同じメアドがあった場合、排除するという 内容でしょうか? たとえば 1月1日,aaa@aaa.aa.aa 1月1日,bbb@bbb.bb.bb 1月1日,ccc@ccc.cc.cc 1月2日,aaa@aaa.aa.aa 1月2日,bbb@bbb.bb.bb 1月3日,bbb@bbb.bb.bb 1月3日,aaa@aaa.aa.aa 1月4日,ccc@ccc.cc.cc とあった場合、 ↓↓↓変換後↓↓↓↓ 1月3日,bbb@bbb.bb.bb 1月3日,aaa@aaa.aa.aa 1月4日,ccc@ccc.cc.cc というように同じメアドが重複しないように更に日付は最新(最下段) の日付を付けてリスト化したいのです。。。 日付は最上段のものでも構いませんが。。。 出来れば。。。できれば。。。データファイルの読み込み部分から 解説して頂けないでしょうか。。。DBではなく、テキストファイルなんです。。。 本当にすみません(><)(;;)
424 名前:デフォルトの名無しさん [2006/01/16(月) 23:19:38 ] ファイル読み込みくらいなら、perl入門のサイトや本で調べられるだろ
425 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:25:50 ] >>423 初心者初心者連呼するならエクセルのフィルタ使うとかにしたほうがいいんでない?
426 名前:ゆみ [2006/01/16(月) 23:33:08 ] >>424 厳しいお言葉・・・有難う御座います。 ではファイルの読み込み部分は結構です。。。 >>425 それでは意味がないのです。。。 お願いします!!!(;;)
427 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:39:52 ] こんな擦れ合ったのか〜 次の答えを教えてください。 以下のタグを結合したい。 (1)<M>hogeM</M><X>hogeX</X> → <X>hogeMhogeX</X> (2)<X>hogeX</X><M>hogeM</M> → <X>hogeXhogeM</X> (3)<M>hogeM</M><X>hogeX</X><M>hogeM</M> → <X>hogeMhogeXhogeM</X> ※<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeX</X> は結合しない。 <例> ※以下は一行で、\ は連結の意味です。 ......hoge.......<M>hogeM</M><X>hogeX</X>.....\ ........hoge......<X>hogeX</X><M>hogeM</M>.....\ .....hoge.........<M>hogeM</M><X>hogeX</X><M>hogeM</M>...\ .........<X>hogeX</X>................<M>hogeM</M>..\ ..<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X> ↓ ......hoge.......<X>hogeMhogeX</X>.......\ ......hoge......<X>hogeXhogeM</X>..........hoge....\ .....<X>hogeMhogeXhogeM</X>............<X>hogeX</X>...\ .............<M>hogeM</M>...\ .<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X> 正規表現でも、何でもOKなのでお願いします。
428 名前:デフォルトの名無しさん [2006/01/16(月) 23:52:53 ] 難しかったかな?
429 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 00:12:25 ] >>427 ヒント: 解く奴も人間
430 名前:デフォルトの名無しさん [2006/01/17(火) 00:36:53 ] >>427 無理
431 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:53:26 ] >>426 意味がないってどういうこと? csvをエクセルに読み込んで重複を消すだけじゃないの? 知識らしい知識もいらんし煽りじゃなくあなたのような人向けだと思うが。
432 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:59:03 ] >>413 でCGIで動かしたいってあるよ
433 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:50:39 ] >>423 while (<$fh>) { chomp; my($date, $mail) = split /,/; $mails{$mail} = $date; } 後は自分で何とかしろ。
434 名前:ゆみ [2006/01/17(火) 10:20:52 ] >>433 さん 素敵です! あまりハッシュって使ったこと無かったので・・・ 出来ました!!!有難う御座います!!!
435 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 21:48:54 ] <2></2>を削除する正規表現教えて (例) .....<1>.....<2>....</2>....<1>..... ↓ .....<1>.............<1>.....
436 名前:デフォルトの名無しさん [2006/01/25(水) 21:50:42 ] s/.....<1>.....<2>....</2>....<1>...../.....<1>.............<1>...../g
437 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 21:51:45 ] >>435 だけど 間違えた。 <2></2>を削除する正規表現教えて (例) .....<1>.....<2>....</2>....</1>..... ↓ .....<1>.............</1>.....
438 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:08:10 ] 正規表現の基礎の基礎じゃないか
439 名前:マル mailto:sage [2006/01/26(木) 01:37:34 ] 掲示板スクリプトで、名前が「あ」か「い」か「う」の人以外は書き込みできない、 という風にする場合 if ($name !/あいう/) { &error("名前が間違っています",'NOLOCK'); } ではないですよね。 「あ」か「い」か「う」というのはどう書けばいいでしょうか。
440 名前:& ◆p8OCeNXbYU mailto:sage [2006/01/26(木) 01:43:21 ] すみません。実際には「あ」か「い」か「う」ではなく、 「一」か「二」か「三」か・・・「三十五」か「三十六」という風になります。 一〜三十六までの漢数字を入れなければ投稿できない、という風にしたいのです。 自動で貼られてしまう広告よけのためなのですが、 何卒よろしくお願い致します。
441 名前:マル [2006/01/26(木) 01:50:09 ] 440=439です。
442 名前:& ◆p8OCeNXbYU mailto:sage [2006/01/26(木) 02:34:09 ] すみません。できました。 |で区切ればorの意味になるようでした。 if ($name !~/一|二|三/) { &error("名前が間違っています",'NOLOCK'); } というような感じで動きました。失礼しました。
443 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 03:41:24 ] これも正規表現の基礎の基礎の基礎だよな・・ マジで・・
444 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 10:33:45 ] <2>.*?</2>
445 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 12:21:36 ] >>444 ><2>.*?</2> ".*?"という文字列はGoogleで検索できないため、申し訳ありませんが、 意味を教えていただけますでしょうか? .*は文字の0個以上(.+は1個以上)にマッチだと思いますが、これに?が付いた .*?がいまいち、よく分かりません。
446 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 12:50:59 ] >>445 Perl はググる前に perldoc 。 www.kt.rim.or.jp/~kbk/perl5.005/perlre.html#Regular_Expressions
447 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 11:51:12 ] >>442 use encoding でエンコード指定しておいて $name !~ /[あいう]/ で判定する方がいいと思う。
448 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 11:54:17 ] >>445 最小マッチ デフォルトは最大でマッチする。 たとえば 'abcabcabcabc' という文字列に対して /a.*a/ は 'abcabcabca' の部分がマッチするが /a.*?a/ だと 'abca' がマッチする。
449 名前:sage mailto:sage [2006/01/27(金) 17:48:26 ] >>448 , 446 ありがとうございます。 >最小マッチ Perl歴17年ですが、この正規表現は見落としていました。 わざわざ、(1)のような書き方をしてきましたが、 (1) <2>[^<]*</2> (2)の方が読みやすいですね? (2) <2>.*?</2> 勉強になりました。
450 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 17:53:34 ] はぁ、どうして下らない嘘をつくかな
451 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 17:54:23 ] >>449 詳説 正規表現 第2版まじおすすめ
452 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 19:28:06 ] Perl 歴 17 年で正規表現もまともに使えないなんて、そんなの「歴」のうちに入らんよ。
453 名前:449 mailto:sage [2006/01/27(金) 21:55:45 ] >>452 >Perl 歴 17 年で正規表現もまともに使えない 正規表現の基本が分かっていなかったので、人にPerlを教える のは無理でしょうが、研究機関の仕事を主にPerlでこなして きたことは嘘ではありません。どんな書き方でも、限られた 時間内にバグがないスクリプトが書ければ、仕事がこなせま す。 perlの良いところは、Larry Wallが言うように、>> 449 の (1)でも(2)でも、様々な方法で目的が達成できる点です。
454 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:01:37 ] なんつーか・・ 一生VB・HSPやってるようなモンだな 進歩がなけりゃただの・・
455 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:12:42 ] 449 の2しか知らん
456 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 23:32:19 ] >>453 こなせてないじゃん。 >>435 程度のことも人に聞かないと出来ないんだろ?
457 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 14:14:55 ] Perl って1987年12月生まれなんだな。18年前か history.perl.org/PerlTimeline.html まあ17年前からPerl(というかUNIX)やってて正規表現知らないなんて ありえない
458 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 15:43:49 ] 「Perlプログラマのレベル10」 ttp://d.hatena.ne.jp/naoya/20050809/ のレベル5に > 多くの人たちがこのレベルを超えないのは、たとえ非効率であっても、 > 再利用可能なコンポーネントの作成を除けば、ほどんど何でもできるからである。 とあるように、必要性を感じられなければそれ以上のものはなかなか知ることが出来ないんだろうね…人間ってのは。 この機会にPerl5の奥深さを学んでみたらどうだ?その霧の先には素晴らしい世界が広がっているぞ
459 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 17:48:46 ] >>457 最短マッチが使えるようになったのはPerl5以降だよ。 それ以前に覚えた正規表現をそのまま使い続けていたんだろうね。
460 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 18:00:14 ] ああ、最短マッチを知らなかったってことだったのか 斜め読みしてた
461 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 15:42:23 ] >>449 くっ。負けた。俺、Perl歴16年。
462 名前:デフォルトの名無しさん [2006/01/31(火) 17:18:44 ] お願いします。 ♂チームと♀チームが2つのコートで♂♀別総当り戦をしたく 両コート同時進行として ♂が4チーム・♀が2チームの場合・・・ 【Aコート】 【Bコート】 ♂1-♂2 ♂3-♂4 ♀1-♀2 ♂1-♂3 ♂2-♂4 ♀1-♀2 ↑の3回戦で総当りになる。 では♂が7チーム・♀が3チームってなったとき どう組み合わせればよいかみたいなのを計算させたいです。 できれば3連チャンとかで試合することにならないように・・・
463 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 17:30:13 ] >>462 ♀1-♀2 が2回あるのはただの総当りではないと思われるが どういう規則なのかね?
464 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 11:03:17 ] >>463 スミマセン間違いです・・・。 ♂が4チーム・♀が2チームの場合・・・ 【Aコート】 【Bコート】 ♂1-♂2 ♂3-♂4 ♀1-♀2 ♂1-♂3 ♂2-♂4 -
465 名前:デフォルトの名無しさん mailto:sage [2006/02/05(日) 15:52:03 ] >>462 こうですか? わかりません。 use strict; use warnings; local($a,$b); my(@t,@p,@f,@ct,$w,$i,$j,$k); ($t[0],$p[0])=('',$f[0]='0'); $t[$_]='♂'.$_,$p[$_]=0,$f[$_]='011111111000',substr($f[$_],$_,1)='0' for (1..8); $t[$_]='♀'.($_-8),$p[$_]=0,$f[$_]='000000000111',substr($f[$_],$_,1)='0' for (9..11); @ct=('A:',' B:'); do { ++$_ for (@p); for (@ct) { $a=$b=$w=0; for $k (1..$#p) { $i=$j=0; ($i,$j) = ($p[$_]>$j && substr($f[$_],$k,1))?($_,$p[$_]):($i,$j) for ($k..$#f); ($a,$b,$w) = ($k,$i,$j<$p[$k] ? $j : $p[$k]) if $p[$k] && $j && ($w<$p[$k] || $w<$j); } print $_,$t[$a],'−',$t[$b]; $b=$p[$a]=$p[$b]=substr($f[$a],$b,1)=substr($f[$b],$a,1)=0; } print "\n"; $b+=/1/ for (@f); } while($b);
466 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 13:29:43 ] >>462 CPAN には、順列、組み合わせを扱う Algorithm::Permute というモジュールがある。これが使えるんじゃないの? (オレは使ったことは無いけど)
467 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 10:27:13 ] 総当たりの全組合せを求めた後で、それの並べ方を考えればいいのでは ないだろうか。同じチームがなるべく連続しないようにするなど。 そして最後にコート分けする。
468 名前:デフォルトの名無しさん [2006/02/11(土) 11:07:49 ] 直リンクが不可能なアップローダー cgi あったら便利だと思う 直リンクされたことによって消滅するアップローダは多いからな perl で書かれたものキボン
469 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 13:48:02 ] マルチ pc8.2ch.net/test/read.cgi/tech/1138519327/308
470 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 13:49:32 ] >>468 ってかんなもんすでにあんだろが
471 名前:デフォルトの名無しさん [2006/02/12(日) 06:11:09 ] >>470 直リンクを不可能にするような状態のcgiアップローダのスクリプトって配布されてる? されていないんじゃ?
472 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 11:00:38 ] REFERER が期待する値以外だったらリジェクトするだけじゃん
473 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 06:43:47 ] /***:****/ にソケット飛ばしてHTMLデータを引っ張ってくるにはどうしたらいいですか?
474 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 08:44:13 ] >>473 ソケットは飛ばない。 perl -MLWP::Simple -e "get q|www.example.com/path/to/file.html| "
475 名前:デフォルトの名無しさん [2006/02/27(月) 01:08:32 ] ファイル内の *.gif を *.bmpへ変換するプログラム作ってもらえませんか? 正規表現だったらどうなるでしょうか?
476 名前:デフォルトの名無しさん [2006/02/27(月) 01:11:06 ] 拡張子だけ(名前の変更(M))だけ、できればよいので、、、。 変更しなければならないものが100近くあるので^^;助けてください
477 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 01:21:50 ] >>475 そんな見当違いな質問をしてると perlのスクリプトを書いても「どうやって実行するんですか?」 とか聞かれそうだと思われて誰にも相手されないよ
478 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 01:28:06 ] >>475 名前の変更(M)とか書いてる所を見るとWindowsだと思うが、 ファイル名をマジで変えるだけなら、DOS窓で C>CD 変えたいファイルがあるディレクトリ C>RENAME *.gif *.bmp でいいんじゃマイカ? UNIX系なら % cd 変えたいファイルがあるディレクトリ % mv *.gif *.bmp どちらにしろ同じか。 ※ データ形式は変わらないから開けなくてもしらん。
479 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 01:48:34 ] >>478 > % mv *.gif *.bmp > % mv *.gif *.bmp > % mv *.gif *.bmp > % mv *.gif *.bmp > % mv *.gif *.bmp > % mv *.gif *.bmp
480 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 03:01:53 ] >>478 それは Windows/DOS じゃないと使えない技だぞ。
481 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 03:34:00 ] 「名前の変更(M)」って書いてるくらいだから Windows前提で答えれば良いっしょ
482 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 11:36:48 ] >>475 はファイル名だけ変えたいんだね。 拡張子がbmpであるgifファイルを作りたいんだね。 いや、きっとそうなんだろうね。質問の内容からして そうだし、他の人もそう理解しているようだし。
483 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 12:17:25 ] perl -pi -e "s/\.gif/\.bmp/g" <ファイル>
484 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 15:27:57 ] >>478 有難うございました。WinとLinux(UNIX)では、コマンドが違うからsystem()関数を使っても 同じプログラムとはいかないわけでしたね。 それに、Perlを使わなくてもできるんですね。 Cで書かれたコマンドがすでにあるからこれを使わない手は無いですね。OSにです。
485 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 15:30:28 ] 今だCでプログラム書いたり、Cで書かれたexeばかり使っているので、手持ちのperlスクリプトを増やしたかった訳でした。。
486 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 15:31:53 ] いつもCで事足りてしまうみたいです。。有難うございました。
487 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 15:34:07 ] UNIX(Linux)とWindowsのコマンドが違う以上、汎用的なものを作るのってなかなか難しいですね。。。。?
488 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 15:35:30 ] 本当、Cプログラマで良かったとつくづく思います。。
489 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 19:52:06 ] 日記はチラシの裏に
490 名前:デフォルトの名無しさん [2006/02/28(火) 00:02:26 ] リアルで会ったら頭蹴り飛ばしてやんのに
491 名前:デフォルトの名無しさん [2006/02/28(火) 00:24:24 ] >>490 乙w死ねw
492 名前:デフォルトの名無しさん [2006/02/28(火) 00:26:39 ] >>490 リアルで会ったら頭蹴り飛ばして殺してやるのにw
493 名前:490 [2006/02/28(火) 00:32:52 ] 人格異常者だと思われてるから、普段リアルで誰にも相手されないよ〜
494 名前:490 [2006/02/28(火) 00:37:48 ] 会社訪問した際、面接官に目が包丁のようだよと言われますた。 腹が立ったので、帰る際後ろから面接官の頭蹴り飛ばしてやりました。 電車に乗ると、たくさんのひとの頭を蹴り飛ばさなければならないので 怖くて乗れません。
495 名前:490 [2006/02/28(火) 00:39:55 ] 別にいつ死んでもいいので、PG組んでます。
496 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 00:42:55 ] (;´д`)
497 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 00:45:32 ] 世の中みんないい人ばかりじゃないしねぇ
498 名前:490 [2006/02/28(火) 00:46:15 ] ファイル内って書いてて答えがこれ? C>RENAME *.gif *.bmp 死ね
499 名前:490 [2006/02/28(火) 00:53:16 ] 491-495 で、だれ?おまえら
500 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 00:58:17 ] おれだよ、おれ 500
501 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 01:00:00 ] とりあえずここには >>478 以外、まともな人間はいなさそうだw
502 名前:490 [2006/02/28(火) 01:01:11 ] これ書いてる奴が? % mv *.gif *.bmp
503 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 01:03:27 ] >>490 (;´д`) いや 話しかけてこないで。さよなら
504 名前:デフォルトの名無しさん [2006/02/28(火) 01:45:20 ] ローマ字で入力すれば、あらゆるその読みの文字にマッチするスクリプト gyouで行やら業やらぎょうやらギョウやらgyouやら
505 名前:デフォルトの名無しさん [2006/02/28(火) 02:04:59 ] migemo
506 名前:デフォルトの名無しさん [2006/02/28(火) 17:45:14 ] だってあれ完璧じゃないんだもん
507 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 18:53:11 ] >>506 migemo の「辞書」が完璧じゃないんだろ? 「辞書」をしっかり作れ。Perlでmigemoみたいなこと をやるにせよ、辞書が命だ。
508 名前:505 mailto:sage [2006/02/28(火) 23:27:34 ] おまえも>503おまえも>506 死ね
509 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 17:08:44 ] >>508 うはwwwカッコヨスwwww 俺にも氏ねって言ってぇぇvvvvvv
510 名前:505 mailto:sage [2006/03/02(木) 04:09:38 ] >509 しねしねしねー♪从´∇`从
511 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:20:04 ] カウンターで 0=あ 1=1 略 49=を 50=ん って感じに変換するにはどーすればいいんですか?
512 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:24:12 ] 日本語でおk
513 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:33:41 ] >>511 my %c = ( '0' => 'あ', '1' => '1', # 略 '49' => 'を', '50' => 'ん' ); などと作っておいて $c{$count} のような感じで対応する文字列を求める。
514 名前:デフォルトの名無しさん [2006/03/11(土) 00:49:18 ] >>1 楽天とかで任天堂DSを購入するスクリプト組んでくれよ。人力じゃ無理 買えないw
515 名前:デフォルトの名無しさん [2006/03/12(日) 16:39:03 ] 連投スクリプトください
516 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 16:52:43 ] #!perl use LWP::Simple; while (1) { get 'pc8.2ch.net/test/bbs.cgi '; }
517 名前:デフォルトの名無しさん [2006/03/12(日) 16:53:39 ] 連投スクリプトください
518 名前:デフォルトの名無しさん [2006/03/12(日) 16:54:45 ] 連投規制、バーボンに引っ掛からない2ch投稿スクリプト希望
519 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 17:18:26 ] #!perl use LWP::Simple; while (1) { get 'pc8.2ch.net/test/bbs.cgi '; sleep 30; }
520 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 17:40:11 ] 明らかに悪用する気満々だから嫌。
521 名前:デフォルトの名無しさん [2006/03/12(日) 17:47:13 ] スレを埋めるときに使うんです(><;)
522 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 18:49:39 ] スレ埋めは、自分でスクリプトを書ける者にのみ許される神聖なる儀式であルッ!!
523 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 18:51:08 ] 思いっきり悪用の気配やんか
524 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 20:52:25 ] あんま調子にのんなよ
525 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 23:41:18 ] テキスト処理でおうかがいします。 半角数字と全角数字が混在したテキストがありまして、 一桁のみの数字は全角、二桁以上の数字は半角に統一したいのです。 中身を見てみると、「33」とか「679」とかになっていて、 どういう入力をしたのか不思議でなりません。 何かよいお知恵はないでしょうか。 Perl 5.8.1、Mac OS XのTerminalで作業をしています。 入力ファイルのエンコードはUTF-16(中国語処理のため)、 use utf8;で処理しています。
526 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 23:43:46 ] 適当に正規表現で変換してったらいいんじゃないの? s/1/1/
527 名前:デフォルトの名無しさん mailto:sage [2006/03/17(金) 00:20:14 ] 全部半角にしてから全角に直すだな
528 名前:525 mailto:sage [2006/03/17(金) 23:51:02 ] >>526 >>527 こんな感じで書いてみました。 while(<>) { tr/[0-9]/[0-9]/; s/(¥D)1(¥D)/$11$2/g; (中略) s/(\D)9(\D)/$19$2/g; print; } ただ、これだと2回同じ処理をしないといけないですよね。 最初の処理でtr行、次の処理でs行になるんでしょうか。 これを効率よく1回の処理ですませたいのですが、いいやり方をご存知ないですか?
529 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2006/03/18(土) 00:13:06 ] use utf8; use Unicode::Normalize; $str = NFKC($str); $str =~ s/(?<!\d)(\d)(?!\d)/(my $ret = $1) =~ tr[0-9][0-9]; $ret/ge; これでどうだろう。
530 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 17:46:30 ] >>528 逆。数字をまず全部全角にして、 その後2文字以上連続する全角数字を半角にする。
531 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 21:12:31 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
532 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 21:35:05 ] テキスト置換で64bitに対応してると なんかいいことあんの?
533 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 22:40:20 ] >>531 マルチ + スレ違い乙
534 名前:525 mailto:sage [2006/03/18(土) 23:37:27 ] >530 ご指摘どうもありがとうございます。 他にも処理が山ほどあり、あまり時間がなくてテンパってました。 >529 うまくいきました。どうもありがとうございました。 こういうときに先読み・後読みを使うんですね。 教えていただいたものを流用して、 2桁のみ半角にすることもできました。
535 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2006/03/19(日) 00:33:20 ] >>529 を書いて気が付いたんだが、Encode::JP::H2Z が変換できるのは カタカナだけなんだな。 日本語処理で凝ったことしようと思ったら、Jcode なんかねぇ…。
536 名前:デフォルトの名無しさん [2006/03/19(日) 03:25:47 ] >>532 読み込みの段階で64ビットは有利
537 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 09:25:18 ] うそつけ
538 名前:デフォルトの名無しさん mailto:sage [2006/03/22(水) 21:16:20 ] >>528 「¥」と来たか。「\」ではないと。
539 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 06:15:44 ] すいません、リクです。 数字を有効数字の桁数で丸めるスクリプトを探しています。 例えば、round(数字, 桁数)の形で使うとすると、 round(-12345.067, 4) round(-12345.067, 7) round(0.0567, 1) round(1234567890123456, 4) は、それぞれ -12350 -12345.07 0.06 1.235e+015 を返す、というようなものなんですが、どなたかお願いできませんか
540 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 12:19:00 ] 最後の1つはprintfの%.3eでいいだろうし、上3つはMath::SigFigsのFormatSigFigsが 使えると思うから、値の範囲かなんかで場合分けしてそれぞれ食わせればいいんで ないかな。
541 名前:539 mailto:sage [2006/03/29(水) 23:21:01 ] >>540 出来ました。どうもです。 あと、CPANを漁っていたらNumber::Formatに似たような機能をみつけたので、 これを改変してもうまくいきました。 sub round { my ($number, $digits) = @_; my $sign = $number <=> 0; my $result = abs($number); my $index; if($number =~ /(.*)e(.*)/) { $result = $1; $index = $2; } my $precision = $digits - length(int($result)); if($result =~ /^0(\.0*)/) { $precision += length($1); } my $multiplier = (10 ** $precision); $result = int($result * $multiplier + 0.5000001) / $multiplier; $result = -$result if $sign < 0; $result *= (10 ** $index) if $index; return $result; }
542 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 03:59:17 ] $ip_sample = 222.4.xxx.xxx #フォームや環境変数から取得 $ip_data <<END_DATA; #外部ファイルから読み込んだデータ(実際は約2万4千行程度) 国名A-221.184.0.0-221.191.255.255 国名B-221.240.0.0-222.15.255.255 国名C-222.144.0.0-222.151.255.255 END_DATA foreach (@ip_data) { ($cctld,$ip_a,$ip_b) = split(/-/,$_); if ( 判定ルーチン ){$ans = $cctld last; } } print $ans;#この場合は"国名B"と表示したい $ip_dataを参照して$ip_sampleの値が$ip_dataのどの行に在るかの判定を行い $ansへ該当する$ip_deta行の$cctldを返すようにしたいのですが 判定方法でつまずいています。gethostxxx関数を使えという方向は無しにして 元の$ip_dataを増やさずに行える極力短い判定のルーチンを教示おねがいします このテの質問はwebプでやれと言われそうな気がするけど質問の内容が 板を選ぶ以前のレベルの自覚があるので敢えてこちらに投下しまふ。
543 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 06:32:36 ] こういうパズル的なのはどこでも答えてもらえそう my $target = "222.4.0.0"; my @iptable = qw( 国名A-221.184.0.0-221.191.255.255 国名B-221.240.0.0-222.15.255.255 国名C-222.144.0.0-222.151.255.255 ); $target = pack("C"x4, split(/\./, $target)); for(@iptable){ my($country, $from, $to) = split /-/; $from = pack("C"x4, split(/\./, $from)); $to = pack("C"x4, split(/\./, $to)); if($from le $target && $target le $to){ print "$countryが範囲内でした\n" } }
544 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 06:34:47 ] ありがとうございます 早速走らせて見ます 実は・・・・ - foreach (@ip_data) { + foreach ($ip_data) { ですた、阿呆ですんませんです・・・ orz
545 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 07:51:49 ] その2万4千行のデータの状態によっては物凄く処理速度に差が出そうだ。 データを読みながら1回から2万4千回判定するのがいいか、 全部配列に読み込んでおよそ5回判定するのがいいか。
546 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 07:54:50 ] 違った。14回?
547 名前:542 mailto:sage [2006/03/32(土) 14:00:16 ] >>543 web鯖にはまだ置いてませんが手元の環境では問題なく動きました。 答えを教えてもらうと、なるほどなぁと納得行くのですが その答えをせめて自分で作れるまでにはなりたいです。 ネットでも資料沢山あるけどラクダ本がほしくなったので 日曜日にでも街に探しにイッテキマス 目標は脱ド初心者w >>545 できれば色々なパターンをベンチ取って一番軽い処理を使いたいですw どうしても重かったらIP国別データを2〜3000行程度に分けて IPの最初の8ビットを参照して呼び分けてみようかなと思ってますが・・・
548 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 20:14:29 ] >>547 アルゴリズムの勉強したほうがいいよ。 >>545-546 でバイナリサーチに気づかないのはかなり重症
549 名前:デフォルトの名無しさん mailto:sage [2006/04/02(日) 05:03:28 ] >>547
550 名前:デフォルトの名無しさん mailto:sage [2006/04/02(日) 05:08:26 ] スマソ。書き込む前に送信してもうた・・・ >>547 IPをキー、国名を値にもつハッシュを作り、データベースクラスにtieしてみては? 2万4千行をメモリに持つのはつらいと思う。
551 名前:550 mailto:sage [2006/04/02(日) 05:38:58 ] ちょっと練習で書いてみた。IPは悩んだ末、強引に10進数に変換した。 my $data = <<EOF; A-221.184.0.0-221.191.255.255 B-221.240.0.0-222.15.255.255 C-222.144.0.0-222.151.255.255 EOF unlink 'test.db'; use Fcntl; use DB_File; tie my %db, 'DB_File', 'test.db', O_RDWR|O_CREAT, 0644, $DB_BTREE or die; foreach(split/\n/, $data) { my ($country, $from, $to) = split /-/; for($from, $to) { s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1*256**3+$2*256*256+$3*256+$4/e; } $db{$from-1} = 'N/A'; $db{$to} = $country; } untie %db; sub find_country { my $query = shift; $query =~ s/(\d+)\.(\d+)\.(\d+)\.(\d)/$1*256**3+$2*256*256+$3*256+$4/e; my $x = tie my %db, 'DB_File', 'test.db', O_RDONLY, 0644, $DB_BTREE or die; my ($ip, $country) = ($query, 'N/A'); $x->seq($ip, $country, R_CURSOR); return $country; } print find_country('221.239.0.1');
552 名前:デフォルトの名無しさん mailto:sage [2006/04/02(日) 06:41:56 ] # IPアドレス→32bit整数 $ip = unpack('N', pack('CCCC', split(/\./, $ip))); これで2倍くらいの速度になった キャプチャが大きいんかなぁ 2個目のIPアドレス変換部分、最後が\d+じゃなくて\dになってたよ。 桁数が多いから計算ミスかと思ったけど、数字が文字列として尻についてただけなんだね。
553 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 17:06:58 ] >>552 use Socket; して inet_aton() 使ったら?
554 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 11:25:50 ] ベンチしたらinet_aton意外にとてつもなく遅いです。あとは ・「.」でばらすのはsplitより正規表現でキャプチャする方が速い ・4つの10進数から32bit整数にするのは、シフト>掛け算>pack-unpackの順で速い。 552の言うのとは逆の結果になったわけだがなんでかね? Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds... inet_aton: 5 wallclock secs ( 1.62 usr + 1.46 sys = 3.08 CPU) @ 425.97/s (n=1312) multiple_re: 7 wallclock secs ( 3.26 usr + 0.00 sys = 3.26 CPU) @ 229803.99/s (n=749161) shift_re: 3 wallclock secs ( 3.08 usr + 0.03 sys = 3.11 CPU) @ 274049.84/s (n=852295) unpack_re: 3 wallclock secs ( 3.10 usr + 0.00 sys = 3.10 CPU) @ 183073.87/s (n=567529) unpack_split: 4 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 119672.52/s (n=374575)
555 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 11:26:39 ] use Benchmark; use Socket qw(inet_aton); my $ip_a = 100.100.100.100; timethese(undef, { unpack_split => sub { my $ip = unpack('N', pack('CCCC', split(/\./, $ip_a))); }, unpack_re => sub { $ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; my $ip = unpack('N', pack('CCCC', $1, $2, $3, $4)); }, multiple_re => sub { $ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; my $ip = $1*256*256*256 + $2*256*256 + $3*256 + $4; }, shift_re => sub { $ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; my $ip = $1 << 24 + $2 << 16 + $3 << 8 + $4; }, inet_aton => sub { my $ip = inet_aton($ip_a); }, } );
556 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 12:29:42 ] すまん、どうにも直観と反する結果なのでさらに調べていたらなんのことはない my $ip_a = 100.100.100.100; になっていたorz... もちろん正しくは my $ip_a = '100.100.100.100'; なのでベンチ取り直した。 Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds... inet_aton: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 267949.37/s (n=846720) multiple_re: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 69144.94/s (n=218498) shift_re: 4 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 74248.87/s (n=230914) unpack_re: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 68071.03/s (n=218508) unpack_split: 2 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 95474.76/s (n=298836) まとめ: inet_atonはやっぱり速いので、自分で書くのはやめよう。
557 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 13:42:14 ] v文字列以外では ・ inet_atonはpackしたIPアドレス("100.100.100.100"なら"dddd")を返すのに、他は整数(1684300900)を算出している。 ・ "+"演算子は"<<"演算子より優先度が高いため($1 << 24)とカッコで括らなければならない。 一応 sub getRandIPString { join '.', int rand 256, int rand 256, int rand 256, int rand 256; } といったものを用意して 全てバイナリ文字列を出力するコードにしてからベンチ取ったけど、inet_atonが常に1位だった。 今更だけど、後で直接比較可能にするための前処理として保存しとけば速度関係無かったね。
558 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 06:59:49 ] Mac OS XでPerlを使っています。 Macで作成したテキストを処理したいのですが、改行コードがCRになるのでうまく処理できません。 LFでないため、全て1行として認識されてしまいます。 標準入力を常にLFとして読み込んだ後、それに対してマッチや置換を行いたいのです。 以下のように書いてみましたけどダメでした。 while (<>) { s/\x0D\x0A|\x0D|\x0A/\x0A/g; if (/aaa/) { print; } } 出力されたデータはLFになりましたが、マッチはうまくいきませんでした。 何かいいやり方はないものでしょうか。
559 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 09:14:57 ] 求めてるのは<>使う前の $/ = "\x0D"; か /aaa/m あたりかも
560 名前:558 mailto:sage [2006/04/19(水) 19:51:43 ] >559さん 入力時の区切り文字をCRに決めてやればいいんですね。 解決しました。ありがとうございました。
561 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 23:24:22 ] すいません。行のナンバリングをリクエストしてもよろしいでしょうか。 あいうえお(段落1) かきくけこ(段落2) さしすせそ(段落3) たちつてと(段落4) なにぬねの(段落5) はひふへほ(段落6) という文章があって、これを、 1:あいうえお(段落1) 2:かきくけこ(段落2) 3:さしすせそ(段落3) 1:たちつてと(段落4) 2:なにぬねの(段落5) 3:はひふへほ(段落6) のように空行をはさんで新たにナンバリングを開始したいのですが方法が思い浮かびません。
562 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 23:59:01 ] 言いたいことが分からんが新たにナンバリングを開始したいところで ナンバリング用の変数を初期化して空行を出力するだけじゃないのか?
563 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 02:27:54 ] >>561 は、単純にすべての行に通し番号でナンバリングするプログラムは作れるのか?
564 名前:561 mailto:sage [2006/04/20(木) 23:04:01 ] >563 あっ、はい。 my $i = 0; while (<STDIN>) { if (/^./) { print ++$i; print ": "; print; } } ちょっと冗長ですけど。
565 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 00:11:57 ] うーん、、、自分で作りたい?それとも誰かにサクッと作って欲しい?
566 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 10:46:46 ] >>564 そこまでかけるなら else で $i = 0; を書けないか?
567 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 10:55:29 ] 空行が来たらカウントをリセットする、というと、こんな感じ? $n = 1; while (<>) { $n = 1 if (/^\s*$/ print "$n: $_"; $n++; }
568 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 10:58:13 ] あ、閉括弧とか忘れた。まあいいや。脳内で修正してくれ。
569 名前:561 mailto:sage [2006/04/21(金) 22:35:44 ] >566 elseを使っても結果が変わらないんです。 マッチがヘボいんでしょうか。 >567 実行させると入力がぶっとんでしまいました… >565 いろいろ試してみたのですが、自分の力ではムリっぽいです… あつかましいとは承知していますが、作っていただくと助かります。
570 名前:561 mailto:sage [2006/04/22(土) 19:48:05 ] 出来てしまいました! my $i = 0; while (<STDIN>) { if (/^..+/) { print ++$i; print ": "; print; } else { $i = 0; print; } } else文で「my $i = 0;」にしていたのがまずかったようで、 空行になっても$iが初期化されなかったみたいです。 レス下さったみなさん、ありがとうございました。 おさわがせしました。 私ってPerlの才能ないのかな…
571 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 05:53:25 ] >>570 完成おめ! 才能がどうかは知らないけど、結局経験じゃないですかね? 俺も本スレで叩かれたりしながら勉強してますw 一応俺が用意してたスクリプト貼っておきます。。。 use strict; my $c = 1; open IN, 'filename'; while (<IN>) { (/^$/) ? $c = 1 : print $c++ . ':'; print; } close IN;
572 名前:561 mailto:sage [2006/04/23(日) 12:42:55 ] >571 ありがとうございます。 自分のはだいぶ冗長だと思うので、用意していただいたスクリプトを参考にさせていただきます。 今自分の書いたものを見直してみると、if (/^./)でいいですよね... 恥ずかしい...
573 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 14:49:38 ] >>570 myはローカル変数の宣言。単なる代入では無いよ。 myを使うと、同名の新たな一時変数を作る事になる。 んで、詳しい条件は忘れたが、ブロック抜ける時とかに消える。 長いコードになると 「この変数名って他で使われて無かったっけ…?」 ってなるけど、my使えばそんな心配が減るワケ。
574 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 18:39:57 ] >>558 >>560 では解決しちゃったみたいだけど、これ俺も知りたい。 コマンドラインから入力されたテキストの改行コードをLFに統一、 という前処理をしてからwhileループ処理をかますってできるのかな? あんまりセパレータとか変えたくないんで。
575 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 21:25:04 ] >>574 >セパレータとか変えたくない なんで?
576 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 22:10:27 ] >575 セパレータも一文字として認識されてしまわない? 回避する方法があればいいんだけど。
577 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 23:08:11 ] 認識できるから区切れるんだが。 いまいち言いたいことが分からん。
578 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 23:40:26 ] メタキャラ「.」って改行を除く一文字にマッチするじゃん。 でも「.」もCRにマッチしちゃわね? LF読み込むときと処理が変わっちゃうからイライラすんだよね。
579 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 00:10:50 ] 自分の都合に合わせてセパレーター変えるなり置換するなりすりゃいいじゃん。
580 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 03:57:29 ] あーいう変数ってlocal出来ないっけ?
581 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 23:15:36 ] whileで読み込む前に処理しとくって、 できないってことでおk?
582 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 04:35:21 ] 質問は質問スレ行け
583 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:52:12 ] Win32::GUI::ListView ソートメソッドないじゃん・・・orz た・・・す・・・け・・・て・・・・
584 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 22:54:05 ] りすとびゅーか... なにもかもがな・・つ・・か・・し・・ぃ・・
585 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 20:37:02 ] 一瞬、不治痛の電子帳票ソフトかと思った
586 名前:デフォルトの名無しさん [2006/07/09(日) 11:10:16 ] 初めまして。 浅知恵で掲示板の改造を試みています。 オートリンク機能付き掲示板に記事修正機能を追加したのですが、 記事修正をするたびに、文中にあるリンク先が <A href=www.a.b.c target=_blank><A HREF=www.a.b.c target=_blank> www.a.b.c</A></A> と、タグが無制限に追加されていきます。 そこでお願いしたいのは、 記事修正時にファイルに保存されているデータ ---------------------------------------------- <A HREF=www.a.b.c target=_blank> www.a.b.c</A> ---------------------------------------------- を一端 ---------------------------------------------- www.a.b.c ---------------------------------------------- というデータに戻すサブルーチンを作成したいのですが、 行き詰まっています。 よろしくお願いします。 オートリンク機能のスクリプトは以下の通りです。 *************************************************************** #オートリンク sub auto_link { my($msg) = $_[0]; $msg =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#]+)/$1<A HREF=$2 target=_blank>$2<\/A>/g; return $msg; }
587 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 11:15:33 ] ↑ ありゃ、文字がおかしい。 全角にしてありますが、Aタグです。 www.a.b.c の後ろは、</A>
588 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 01:11:44 ] そういう時は表示時にオートリンクを適用すればいい。 保存時にいじっちゃうと後でいじりにくくなるというのは定説。 ファイル構造上、改行の置換とかは仕方無いと思うけどさ。
589 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 10:01:41 ] >>586 ようするに、すでに<A>タグ化されている部分を除外すればいいわけだな?
590 名前:デフォルトの名無しさん [2006/07/10(月) 10:03:49 ] ああ、ごめん。>>586 にいての>>588 の意見を読んでなかった。 確かに保存時は生データのまま記録し置いて、閲覧時に http:なんた
591 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 10:06:04 ] >>590 途中で送信しちゃった。 保存時は生で。閲覧時は「http:なんたら」の条件で抽出→<A>タグ化のほうが効率的だね。
592 名前:586 mailto:sage [2006/07/10(月) 14:07:06 ] みなさん、ありがとうございました。 発想の転換ですね。 私の堅い頭では思いつきませんでした。 保存時ではなく、表示時にオートリンクを適用でうまくいきました。 ありがとうございました。
593 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 22:59:04 ] 俺は全く解らないので、申し訳ないけど誰かに頼みたいorz ボタンを押したらカウントが増えるシンプルなシステムを作って欲しいです。
594 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 02:59:10 ] どこにでもあると思うが…
595 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 16:54:07 ] >>593 use CGI; my $cgi=new CGI; my $n=$cgi->param('n')+1; print $cgi->header(-charset=>'Shift_JIS'), $cgi->start_html(-lang=>'ja',-encoding=>'Shift_JIS',-title=>'simple count'), $cgi->a({href=>"$ENV{'SCRIPT_NAME'}?n=$n"},$n), $cgi->end_html;
596 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 00:02:04 ] >>593 <?php if (! $HTTP_COOKIE_VARS{'Num'}) { $start=0; $i=1; setcookie("Num",$i,time()+30); } else { $i=$HTTP_COOKIE_VARS{'Num'}+1; setcookie("Num",$i,time()+30); } echo $start.$HTTP_COOKIE_VARS{'Num'}."<br>\n"; echo "<form method=POST action=><input type=submit value=count_up></form>\n"; ?>
597 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 01:41:37 ] >>593 <input type="button" value="0" onclick="this.value++">
598 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 02:06:11 ] どんどん簡易な物になってくな
599 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 20:10:06 ] つーかスレタイに反してPerlですらなくなってるな このスレ自体がアレなのは確かだが
600 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 00:49:26 ] 待て待て、Web物とは一言も言ってないぞ? # CUI use Term::ReadKey; binmode STDIN; ReadMode 3; print my $count = 0; print "\r", ++$count while (defined ReadKey 0); ReadMode 0; # GUI(Perl/Tk)版 use Tk; my $count = 0; my $mw = MainWindow->new(); my $label = $mw->Label(-text => $count)->pack(); $mw->Button( -text => 'Count up', -command => sub { $label->configure(-text => ++$count) }, )->pack(); MainLoop;
601 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 12:46:48 ] Term::ReadKey を入れてないおいらが来ましたよ。 #!/usr/bin/env perl print my $i = 0 ; $i ++ ; system "stty -echo" ; print "¥e[1K" . $i ++ while <STDIN> ; system "stty echo" ; このスクリプト ( hoge.pl )、perlcc が通ったのには笑った。@5.6.6 perlcc -o counter hoge.pl
602 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:24:24 ] なんで笑えるのかわからんが、もっと短くしてみた。 perl -e '`stty cbreak -echo`;print $i++,"\r" while getc'
603 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:49:37 ] cbreakはサポートしてないものもあるよ
604 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 17:11:49 ] >>602 いや system 関数ってみるからにコンパイルの時コケそうじゃないですか。
605 名前:デフォルトの名無しさん [2006/08/06(日) 00:00:47 ] 頭が混乱してきた。 ETRADEのポートフォリオのページを取得するスクリプトつくって。 6時間考えたけど、いっぱいいっぱい。だめぽ
606 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 00:29:53 ] 既製品を探すという作業を飛ばしたようだね。
607 名前:デフォルトの名無しさん [2006/08/06(日) 00:52:42 ] >>605 だけど。 やっとできたよ。 しばらく POSTとGETの仕組みと INPUTタブの仕組みを 忘れてた。
608 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 03:44:01 ] inputタブだってよ
609 名前:デフォルトの名無しさん [2006/08/08(火) 10:10:47 ] ディレクトリ内にある.jpgファイルを全て 1.jpg, 2.jpg, 3.jpg, ... というように連番のファイル名に変換するプログラムを つくって頂けませんか。 そのディレクトリには.jpgファイルしか置いてません。(全部変換する) もともとのファイル名は、*****.jpg もしくは ******.jpg (*は数字) という形です。 こういうプログラムを作るのにperlが適しているのかどうかはわからないのですが、 他に作成依頼できそうなスレがみつからなかったので。 お願いします。
610 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 10:16:02 ] folderの中にある複数の圧縮ファイル(zip, rar)の中のファイルの情報の一覧(text fileでOK) を作ってくれるscriptがほしいです。
611 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 10:55:06 ] >>609 perl -e'my $i = 1; foreach(glob("*.jpg")) { rename $_, "$i.jpg"; $i ++;}' 動くかどうかはしらん
612 名前:609 mailto:sage [2006/08/08(火) 11:52:55 ] >611 できてるぽいです! ありがとうございます。
613 名前:デフォルトの名無しさん [2006/08/08(火) 16:23:26 ] アクセスしてきたPCのポートスキャンをするcgi 目的:自分のPCのセキュリティーチェックをしたいので
614 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 18:06:17 ] 嘘付け
615 名前:613 mailto:sage [2006/08/08(火) 18:24:59 ] 最初はIPアドレスを入力して入力されたIPをもつPCのポートスキャンができるようにとおもったのですが、 >>614 さんのように邪推される方がいると思ったのでアクセスしてきたPCのポートスキャンということにしました。 さらにいうなら、IDパスワード認証をしてそのチェックを通過した人だけセキュリティーチェックできるようにお願いします。 もっともIDパスワードをさらしておいて他人のPCのポートスキャンができることも懸念されますが・・・・。。
616 名前:デフォルトの名無しさん mailto:sage [2006/08/10(木) 16:45:15 ] >>610 while (<*>) { if ((/\.zip$/i) or (/\.rar$/i)) { open(AAA, "unrar l $_ |") || die "err"; $list = <AAA>; close(AAA); } } こんなもんで、よろしいんじゃないですか?
617 名前:デフォルトの名無しさん [2006/08/24(木) 20:33:41 ] perl -e '`stty cbreak -echo`;print $i++,"\r" while getc'
618 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 14:53:13 ] LINUXのCRONで動かしているPerlがあるんだが、自分自身2重起動を阻止したい。 リクエストお願いします。
619 名前:デフォルトの名無しさん [2006/08/30(水) 15:34:33 ] >>618 例えばlockファイルを使う。perldoc -q lock use Fcntl qw(:DEFAULT :flock); sysopen(LCK, "/tmp/lockfile", O_WRONLY|O_CREAT) or die "open: $!\n"; flock(LCK, LOCK_EX|LOCK_NB) or die "flock: $!\n"; sleep 100;
620 名前:デフォルトの名無しさん [2006/08/31(木) 19:03:19 ] なんじゃそりゃ
621 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:41:40 ] 5分経過したら再認証のページに飛ぶものを作って下さい。 お願いします。。。
622 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:50:03 ] >>621 仕様がはっきりしなさ過ぎて無理
623 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 22:12:49 ] >622 タイムアウト処理だけでも無理ですか?
624 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:40:42 ] 同じ学校のやつか? 964 名前:デフォルトの名無しさん 投稿日:2006/09/07(木) 21:36:27 質問です! ログインして10分経過後、再認証を行なうプログラムについて教えて下さい。 学校の課題なんですがさっぱり分りません。。。
625 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 00:13:21 ] マルチかよ
626 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 16:15:04 ] >>623 sleep(300);
627 名前:デフォルトの名無しさん [2006/09/08(金) 19:48:59 ] >>621 鯖に「ID=************が何時何分何秒にログインした」ってファイルを 作っておいて、その人がCGIにアクセスするたびに最終ログイン時刻を チェックする。規定時間をオーバーしていると、ログイン画面に飛ばす。 って感じのやつはダメ?
628 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 05:37:49 ] そーいや前に、タイムアウトの処理を HTMLのタグでやってるの見たことある ブラウザ側で簡単に回避されるっての…w
629 名前:デフォルトの名無しさん [2006/10/22(日) 15:34:50 ] マルチにマジレス カコワルイ
630 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 11:35:28 ] 質問させてください 「開始」と「終了」の間に入っている文字列をリンクアドレスにするにはどうすればいいですか? たとえば$STR="開始test.html終了"; とあったとき 出力結果が <a href=test.html>test.html</a>になるようにしたいんです。 $START="開始"; $END="終了";
631 名前:デフォルトの名無しさん [2006/10/23(月) 12:07:01 ] 2chに書き込むスクリプトってどうやるんですか?
632 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 12:34:24 ] 2ちゃんねる2GETスクリプトの改良おねがいします pc8.2ch.net/test/read.cgi/tech/1161552012/
633 名前:デフォルトの名無しさん [2006/10/23(月) 12:46:54 ] Perlでつくってください
634 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 13:30:24 ] >>630 正規表現で一発やん
635 名前:デフォルトの名無しさん [2006/10/23(月) 14:49:23 ] >>634 ごめんなさい、わからないんです。 とりあえず、ここまでは出来ました 「開始」と「終了」に挟まれる$1を抽出した後、その$1をURL形式に変えてアドレスにして置き換えていきたいんです。 例えば $in{'data'}="開始なにか終了hogehogehoge開始てすと終了"だったとしたら これが $in{'data'}="<a href=hoge.com/hoge.cgi?keyword=%42%28%39> なにか</a>hogehogehoge<a href=hoge.com/hoge.cgi?keyword=%32%86%26> てすと</a>" みたいな形式に置き換えたいんです use URI::Escape; $START="開始"; $END="終了"; $SEARCHADD="hoge.com/hoge.cgi?keyword="; while ($in{'data'}=~ m/$START(.*)$END/g) { $output = $1; $urikeyoutput = uri_escape($output); $in{'data'} =~ s/$START$output$END/<a href=$SEARCHADD$urikeyoutput>$output<\/a/g; }
636 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 16:03:57 ] >>635 > while ($in{'data'}=~ m/$START(.*)$END/g) { これを while ($in{'data'}=~ m/$START(.*?)$END/g) { ってすりゃいいんじゃないか? (.* じゃなくて .*? ってことね)
637 名前:デフォルトの名無しさん [2006/10/23(月) 16:23:43 ] >>636 変えてみましたけど、無理でした while ($in{'data'}=~ m/$START(.*?)$END/g) { の時点で拾ってきてくれてないみたいです 書き方おかしいですか?
638 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 16:53:05 ] >>637 while ($in{'data'}=~ m/$START(.*)$END/g) { ... の中で更に $in{'data'} =~ s/$START$output$END/ ... なんてしてるから マッチ開始位置がおかしな事になる。下の一文で済む。 $in{'data'} =~ s{\Q$START\E(.*?)\Q$END\E} { my $url = $1; my $query = uri_escape($url); qq|<a href="$SEARCHADD$query">$url</a>|; }eg;
639 名前:デフォルトの名無しさん [2006/10/23(月) 16:58:47 ] >>638 ご回答ありがとうございます。 その方法で問題なく出来ましたが 開始、終了のペアが2つ以上でてきた場合エラーが発生します。 $in{'data'} ="開始テスト1終了開始テスト2終了"; だったとき 最初の開始から 最後の終了までを1つだと思っているみたいです
640 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 17:16:50 ] >>639 大方 (.*?) を (.*) と写し間違えているんだろう。
641 名前:デフォルトの名無しさん [2006/10/23(月) 17:19:31 ] >>640 >>638 さんのものを、そのままコピペして使ってるのですが >>639 に書いた症状が出ます
642 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 18:37:03 ] infosys.gsid.nagoya-u.ac.jp/~ohna/re/intro2re2.html
643 名前:デフォルトの名無しさん [2006/10/31(火) 00:40:22 ] データが壊れないカウンタを20行で作ってみてください
644 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 01:27:13 ] なんのカウンタだよアホ
645 名前:デフォルトの名無しさん [2006/10/31(火) 02:57:14 ] ロックファイルを作りながら カウントしていくだけのプログラム
646 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 13:23:42 ] だから何をカウントするんだよ。 CGIなら板違いだ
647 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 17:57:33 ] ++$count; 完成!
648 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 11:41:54 ] 画像の横幅を習得するにはどうすればいいんですか?
649 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 12:19:20 ] >>648 search.cpan.org
650 名前:648 mailto:sage [2006/11/03(金) 12:26:30 ] すみませんが、自己解決しました。
651 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 13:29:13 ] 解答が出たあとに自己解決かw
652 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 19:53:30 ] >>643 これでいいんか? open my $fh, ">>count.dat"; print $fh "\n"; close $fh; print "Content-Type: text/plain\n\n"; print -s "count.dat";
653 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 21:29:16 ] >>652 壊れないけど取りこぼすな。でも「壊れない」条件は満たしてるからいいのか。 軽いカウンタならutimes使って作るといいよ。inodeしか触らない。
654 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 20:34:43 ] >>653 utimes? utimeじゃなくて? ていうかどちらにしろファイルのタイムスタンプ変更するだけの関数だから カウンタにはできないのでは?
655 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 02:45:23 ] >>654 タイムスタンプは time_t 型の数値を保存できる場所でな。
656 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 14:02:06 ] >>655 あ。なるほど。タイムスタンプを無理矢理カウンタとして使うのか。 たしかにできるけど、強引な方法だな・・・。
657 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 21:11:30 ] それどうやって排他するん?
658 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 22:21:24 ] >>657 普通にflockなりなんなりお好きな方法で。
659 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 23:53:28 ] @CSV = <INCSV>; $line_amount = @CSV + 1; $lines = do { local $/; <INTEXT> }; @Aitems = map {(split '\t', $_, 2)[0]} @CSV; @Bitems = map {(split '\t', $_, 2)[1]} @CSV; @A = @Aitems; @B = @Bitems; chomp (@B); for ($i = 0; $i < $line_amount; $i++){ $lines =~ s/$A[$i]/$B[$i]/g; } print OUT $lines; ------------- タブ区切りで、検索文字列[TAB]置換文字列 というテキストを作って、それを読み込んで置換するスクリプトなのですが、 一応動作はするものの、置換文字列に $1, $2 など後方参照の変数がそのまま 文字列として出てきてしまいます。これを展開できるようにするには どうすればいいのでしょうか。
660 名前:デフォルトの名無しさん mailto:sage [2006/11/13(月) 11:16:41 ] /e
661 名前:デフォルトの名無しさん mailto:sage [2006/11/13(月) 17:33:14 ] >660 だめでした。 $lines =~ s/$A[$i]/$B[$i]/ge; 置換失敗、($1)という文字列が出ます s/「(.*?)」/($1)/ge; こういうのは置換成功(eなしで問題なし) s/(あ)\1/嗚呼/g;
662 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 16:02:15 ] /ee
663 名前:リクエスタ [2006/11/16(木) 23:38:52 ] 横一列に並んだ単語を縦一列に直すスクリプトをリクしたいっす ↓ 単語が横一列になっているファイルを(ファイル名は例えば sample1.txt ) globe apple captain delicate baseball e-mail family ↓こんな感じに縦列に並べ変えたい globe apple captain delicate baseball e-mail family
664 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 23:44:17 ] エディタで空白を改行に置換したらいいやん
665 名前:663 mailto:sage [2006/11/17(金) 00:00:18 ] あ、そっかwwww sed 's/ /\n/g' sample1.txt > sample2.txt でできましたw
666 名前:デフォルトの名無しさん [2006/11/17(金) 12:04:26 ] my (%data); my $num1 = 3; my $num2 = 4; my $moji =tetra; $data{$moji} = [ $num1, $num2 ]; print("%d",$data{$moji}); perl 実行 %dARRAY(0x85a7c28 何かよくわからない結果になってしまったのですが・・・
667 名前:デフォルトの名無しさん mailto:sage [2006/11/17(金) 12:09:58 ] こっちで聞いても同じだぞ
668 名前:デフォルトの名無しさん [2006/12/06(水) 15:03:15 ] 掲示板(KENT e-pad)を10分毎に監視して 新規の書き込みがあった場合、内容をメールで送るスクリプト作って下さい。
669 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:19:01 ] >>668 じゃあ雛型だけ。あとは getbbs() と sendmail() を作れば完成だ。がんばれ。 #!/usr/bin/perl -w use strict; my $olddata; for (;;) { # 掲示板の内容を取得する。 my $data = getbbs(); if (defined($olddata) && $data ne $olddata) { # メールを送信する。 sendmail($data); } $olddata = $data; sleep 60 * 10; }
670 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:35:42 ] ぎゃふん!
671 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 17:34:31 ] sendmail のサンプル sub sendmail { my $data = shift; open(F, '| /usr/lib/sendmail -t >/dev/null 2>&1') or die; print F "From: hoge\@fuga.com\n"; print F "To: moga\@mugu.com\n"; print F "MIME-Version: 1.0\n"; print F "Content-Type: text/html\n"; print F "\n"; print F $data; close(F); } 但し /usr/lib/sendmail がなければならない。 (つまりこれは主に UNIX 系 OS 向け。Windows なら Cygwin 環境で動くかも)。
672 名前:デフォルトの名無しさん [2006/12/06(水) 18:26:52 ] >>669 >>671 有難う。 getbbs() も雛形お願いします。
673 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 14:00:49 ] getbbs のサンプル use LWP::Simple; # これはプログラムの最初に書く。 sub getbbs { my $url = '... ' # これは実際のURLにする。 return get($url); } ていうかこんなサブルーチン使わないでそのまま get() やっちゃえばいいかな。 上記のように LWP::Simple を使って串を通したい場合は環境変数の http_proxy に串のURLをセットしておく ( proxy.hoge.com のポート 8080 の場合は http_proxy に proxy.hoge.com:8080/ をセットしておくか perl プログラムの中で $ENV{'http_proxy'} = 'proxy.hoge.com:8080/ '; をやっておく)。 LWP::UserAgent を使って自分で色々する場合は $ua->proxy(...) のような 設定方法も使える。
674 名前:デフォルトの名無しさん [2006/12/07(木) 15:38:14 ] >>673 ありがとうございます。 試してみます。
675 名前:デフォルトの名無しさん [2006/12/08(金) 23:46:45 ] 組織名 人名 番号(英字3つの後に数字7つ) 組織名 人名 番号(英字3つの後に数字7つ) という風に並んでるファイルから 番号だけを取り出して 07.番号(英字3つの後に数字7つ) と書き換えたいのですがお願いします また、自分でもこういう丸投げはやっぱりよくないとは思うのでもし 「そんなのここ見りゃかいてあるから」みたいなサイトがあれば教えてください
676 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 00:06:03 ] 「正規表現」は知ってる? 各行の最後の10文字の前に「07.」を割り込ませる、って考えでどうだ?
677 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 09:25:32 ] >>666 printfの間違い。 $data{$moji}は配列へのリファレンスになっているんだから、 $data{$moji}[0]なり$data{$moji}[1]なりにしないとそうなる罠。
678 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 21:28:17 ] use Kakiko::Test;
679 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 19:41:49 ] >>675 perl -ne 'if(/\s+(\w{3}\d{7})\s*$/){print "07.$1\n"}' hoge.txt
680 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:02:55 ] FORMで受け取った文字列をCSVファイルから検索して表示させるスクリプト下さい
681 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 09:56:03 ] grep
682 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 14:24:02 ] 「1からnまでの乱数をn個発生させ、小さい方から並べるプログラム」を作成する。 nの値をさまざまに変えて実行時間を計測せよ。 クイックソートの実行時間が理論値O(n log2 n) となるかどうか検証せよ。
683 名前:デフォルトの名無しさん [2006/12/21(木) 14:29:11 ] このデータと解析結果、検証の結果をレポートで提出せよ。
684 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 02:32:04 ] >>681 便乗でスマンがFORMからのデータの受け取りを cgi-lib.plに頼らない為のヒントを教えてほしい。
685 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 03:05:30 ] getならurl末尾、postなら標準入力 意地悪じゃなく調べればいくらでもあると思うんだが…
686 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 10:23:07 ] CGI.pm使えよ
687 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 10:58:44 ] >>684 CGI, 環境変数, あたりでぐぐれ
688 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 22:53:42 ] >>685-687 ありがとね。 参考書に「難しいからcgi-lib.pl使え」ってあったから 勝手にその事については載ってないと思った。 まぁ習い始めたばかりだけど、調べたりなかったのは反省してる orz
689 名前:デフォルトの名無しさん [2007/01/11(木) 00:57:44 ] 1分に一度指定板のスレッド一覧を取得して更新があれば差分だけダウンロードして元のファイルに付け足して保存する。 ってのをPerlで作ってくれ。 いや、作ろうとしたんだよ。でも2chのページにアクセスすると403がでてな。
690 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:27:11 ] >>689 オイスター作戦でぐぐれ。
691 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:41:41 ] つまりMonazilla MLに参加してるツールに成りすませばいいってこと? それとも不可能ってことかな?
692 名前:デフォルトの名無しさん [2007/01/11(木) 02:08:36 ] リクです。 youtube内にアップされている動画のタグ情報を引っ張って来れるプログラムをお願いします。 #!/usr/bin/perl -w use strict; use LWP::UserAgent; my $url = shift @ARGV; my $ua = LWP::UserAgent->new(); $ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1);'); my @tags = &getTag($url); print join(",", @tags), "\n"; sub getTag { my ($url) = @_; my @tags; my $content = $ua->get($url)->content; while($content =~ /href=\"\/results\?search_query=(.+?)\"/g){ push(@tags, $1); } return(@tags); } ここまで行ってるのですが、入力する動画URLの取得を自動化したいんです。
693 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 10:09:16 ] http:// から始まるIPとホストが書いてあるアドレスを抽出したい場合の IPとホストの表現を教えてください。
694 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 10:52:03 ] ttp://www.din.or.jp/~ohzaki/perl.htm#httpURL あるいは use Regexp::Common; して $RE{URI}{HTTP}
695 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:08:25 ] >>694 ありがとうございます
696 名前:デフォルトの名無しさん [2007/01/20(土) 23:57:02 ] HP等の日記にパスワードがかかっていた場合、 そのパスワードを解析してくれるソフト作ってください。。。
697 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:17:41 ] 不正アクセス禁止法違反。
698 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 03:56:05 ] すべてのパスワードを解ける解法があったとしても すべてのパスワードを解けるプログラムやスクリプトは絶対にない
699 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 06:00:58 ] >>698 時間を掛ければ何でも解けるのでは? 但し何万年とか掛かるかも知れないが。
700 名前:デフォルトの名無しさん [2007/01/25(木) 01:00:43 ] >>1 微分や積分するプログラムってperlで作れる?
701 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 01:51:10 ] 数値微分/数値積分なら公式は山ほどあるだろ。 マセマティカ並の数式処理能力が欲しければ数学科大学院へでも池
702 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 21:56:03 ] Win NTでデフォルトのプリンター名を取得したいのですが。
703 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:51:22 ] 重機ネット上にあるDBから 氏名と電話番号を一覧表示するスクリプトを作ってください
704 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 16:19:10 ] >>703 まず重機ネットのDBから氏名、電話番号の入ったデータをCSV形式で貰ってきます。 その後次のスクリプトを動かしてください。 #!/usr/bin/perl -w use strict; system('cat ファイル名'); 以上です。
705 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 01:14:58 ] 重機ネット上にあるDBに対してCRUDするスクリプトを作ってください。
706 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:37:51 ] 一休さんかよ
707 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:57:58 ] とんち比べですな。
708 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:54:31 ] 数字を月の名前に変換するコードができました!! @Month = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); sub mmm { return $Month[(shift)-1]; } @Month を切り替えればいろいろな名前に変換できると思います。 @Month = ("JAN.", "FEB.", …… @Month = ("睦月", "如月", ……
709 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:04:47 ] 釣れまsk?
710 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 16:47:33 ] どなたか、ナンプレを解くスクリプト作って下さいませんか?
711 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:12:12 ] sudoku solver でググれ
712 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:52:11 ] >>708 perl -MDate::Manip -e 'print UnixDate(ParseDate("today"),"%B"),"\n";'
713 名前:708 mailto:sage [2007/04/27(金) 20:32:47 ] 利点としては: ・ハッシュを使うコードよりも軽量・高速。 ・「01」とか、ゼロ付きの数字にも対応。 欠点としては: ・逆引きができない。 というわけで、"JAN.."とか"睦月"から数字への変換と、数字から名前への変換、 両方ともできる粋なコードをおながいします。
714 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 07:48:33 ] 質問箱に書き込んだのですが、スレタイからするとこちらの方がよいかもと思い、書き込ませていただきます。 マルチポストをお許し下さい。 perlはまるっきりの初心者です。どなたかお知恵を貸して下さい。 2つのファイル a.txt と b.txt を比較して、条件にあった行を抽出、出力するスクリプトを作りたいのです。 具体的には、 [a.txt] ID, field1, field2 1, 5.8, 7.3 2, 6.3, 8.2 3, 3.2, 4.1 4, 4.8, 4.0 5, 8.3, 10.2 [b.txt] ID, field1, field2 1, 6.8, 7.7 3, 4.3, 5.5 4, 5.9, 4.9 というファイルがあったとき、b.txt のIDに数値が存在する行だけを a.txt から抽出して a2.txt として保存したいのです。 [a2.txt] ID, field1, field2 1, 5.8, 7.3 3, 3.2, 4.1 4, 4.8, 4.0 と言った具合にです。よろしくお願いします。
715 名前:714 mailto:sage [2007/05/03(木) 08:04:26 ] 自己レスです。 質問箱の方で回答を頂きました。マルチポスト失礼しました。 あ、でも他のやり方もあるぞ、というのがあったら教えて下さい。勉強の題材にさせていただきます。 #!/usr/bin/perl use strict; use warnings; open my $a, '<', 'a.txt' or die; open my $b, '<', 'b.txt' or die; my %ids = map { $_ => 1 } map { (split /,/)[0] } <$b>; while (<$a>) { my $id = (split /,/)[0]; print if $ids{$id}; }
716 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 04:45:07 ] >>715 $aと$bはmyの対象外の特殊な変数だからサンプルコードだとしても変数として使うのは止めたほうが良い。
717 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:34:27 ] maildrop によって転送されたメールが画像添付ファイルだった場合に、添付画像だけを除去してくれる perl/php スクリプト ...ってスグに書けますスか?
718 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 02:18:19 ] はい。
719 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:45:44 ] >>718 くれくれで申し訳ないのですが、どうか作っては下さいませんでしょうか...?
720 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:10:30 ] >>719 どのくらい払ってくれる?
721 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 17:30:47 ] >>720 相場はいかほど?
722 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:07:26 ] とりあえず工数の見積もりに1万5千円ほどいただきます。
723 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:51:36 ] >>722 なんと...見積もりだけでそんなにかかるとわ。 もう少し安くならないの?
724 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 16:06:52 ] 今なら、なんと、お見積もりが、ご奉仕価格の 1 万 4999 円!
725 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:14:49 ] このスレ、突然廃れたんだな。直前まで賑わってたみたいだが、自作自演でもやってたか?
726 名前:もつ ◆hS9D2mmxqU mailto:sage [2007/12/25(火) 11:20:24 ] 保守?
727 名前:デフォルトの名無しさん [2008/01/10(木) 02:10:56 ] ほ
728 名前:デフォルトの名無しさん [2008/01/10(木) 10:30:50 ] Amazonのマーケットプレイス画面をgetしたいのですが、 www.amazon.co.jp/gp/seller-account/management/your-account.html にPerlでアクセスすることが出来ません。 認証とかが必要なのでしょうか・・・・・・・。
729 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:13:20 ] そりゃあ、自分のアカウントデータのやりとりは必要だろう
730 名前:anonymous mailto:sage [2008/01/26(土) 14:13:12 ] 2chの特定のスレURLを任意で指定し、 すべての投稿から、「すでに投稿された文面が再度登場していたら、 その数だけレス番付きで抽出する」 というものはできないでしょうか。 要は何がやりたいのかと言うと、 「スレッドがコピペ投稿だらけ」になっており、 レス削除要請を行いたいのです。 ただ、そのコピペの数が尋常じゃないので抽出が困難なのです。 「文面の95%が一致していたらコピペとみなす」機構が嬉しいです。
731 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:37:04 ] 95%で、無関係の文章が巻き込まれたら嫌だなぁ。 って話はとりあえず置いといて、検索してたら String::Trigram とかいうモジュールがヒットした。 この辺使えば作れるのかな? あとはスパムフィルタ関連の資料か。 URLの有無で判定するタイプもあるらしいから そういうタイプのフィルタは参考にはならないかも知れないけど。
732 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:04:23 ] コピペ連投だと行頭の空白とかが混じることがあるから、 文字の先頭から末尾までが一致していたらアウト、という判定でいいんじゃね。 そういうの欲しいならRubyスレで頼むほうが早いかもよ。
733 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:12:36 ] 指定したファイル以外を消去する作って!
734 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 02:21:14 ] >733 それだけじゃ何をどうすれば良いのか分からんな。 「カレントディレクトリ内にある指定したファイル以外を消去」だとすれば perl -e"for (glob '*'){$_ eq $ARGV[0] or unlink $_}" ファイル名 で出来るが、サブディレクトリは多分掘らない。
735 名前:733 mailto:sage [2008/01/30(水) 05:19:52 ] カレントディレクトリだけでOKです。 ありがとう 今はこんな感じで改造しています。 いろいろしないといけないんですが 仮に指定したファイルがカレントディレクトリになかった場合とか 消去を確認するための方法とか ファイルを複数指定したりとか perl のコマンドに詳しい本って なにかありますかねー(ネットでも調べていますが) #!/usr/bin/perl print "指定ファイルは?"; $file = <STDIN>; for (glob '*'){$_ eq $ARGV[0] or unlink $_} $file
736 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:52:04 ] perl の関数一覧なら perlfunc ですぐ見れる
737 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:56:58 ] >735 つーかマテ、その改造コード間違ってるんじゃねーか。 $file が全く関係ないところに書かれてる。 そのコードじゃカレントディレクトリ全部削除されるぞ。 $file = <STDIN>; と書くんだったら、 for (glob '*') { $_ eq $file or unlink $_ } にしなきゃ。 $ARGV[0] はコマンドラインからの引数な。 >734 はファイル名を引数として渡してる。
738 名前:733 mailto:sage [2008/01/30(水) 08:29:20 ] >>737 あー ミスでしたか コマンドとか引数とか覚えないといけないところが まだまだありますな >>736 perlの関数 ありがとう
739 名前:デフォルトの名無しさん [2008/03/25(火) 20:19:49 ] 任意のフォルダに入ってるexeファイルを起動するスクリプトがほしいです。
740 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:11:44 ] >739 その「任意のフォルダ」はコマンド引数で指定すれば良いのか? 「任意のフォルダ」に.exeファイルが複数入ってる場合はどうすれば良いんだ?
741 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:23:34 ] ActivePerlで (擬似)子プロセスにてある条件を満たすと(sleep5とかでもなんでもいい)、親プロセスのTKウィジェットに反映する(リストボックスに一行追加とか)するスクリプトください
742 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:54:41 ] ttp://www.linkrr.com/ みたいな複数のURLアドレスを一気に開くことのできるスクリプトが欲しいです
743 名前:デフォルトの名無しさん [2008/10/11(土) 18:59:15 ] 過疎ってるなー DBD::CSV使って、 execsql.pl -noheader "SELECT T1.ROW1, T2.ROW3 FROM temp1.txt T1 temp2.txt T2 WHERE T1.ROW1 = T2.ROW2 AND T1.ROW2 = 'abc';" > result.txt みたいに使えるスクリプト誰か作って。
744 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 19:05:12 ] 間違えた col1 col2 か SQL初心者な物で
745 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:08:41 ] 今日も perl でエロ画像収集! 明日も perl でエロ画像収集! エロ画像収集言語 perl 万歳!
746 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 13:49:53 ] >>743 だけど、DBD::CSVにバグがあった やってらんねー 結局できたけど
747 名前:デフォルトの名無しさん [2008/10/26(日) 08:58:18 ] ここでperlをPHPに変換とかしてくれる?
748 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:55:13 ] ばっちこい!
749 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 13:08:10 ] 600行くらいあるんだけど・・・
750 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:31:15 ] 情報後出しするやつは面倒だからお断りします
751 名前:デフォルトの名無しさん [2008/10/29(水) 19:22:48 ] 偶数行と奇数行を入れ替えるスクリプトをお願いします。 出力例) $cat test.dat 1 2 3 4 5 6 スクリプト実行後 $cat test.dat 2 1 4 3 6 5
752 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:16:39 ] perl -pe 'print scalar <>'
753 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 07:17:55 ] my $old ; while (<>){ if ( $.%2 != 0 ){ $old = $_ ; next ; } print $_, $old ; undef $old ; } if ( defined $old ){ print "odd\n", $old ; }
754 名前:デフォルトの名無しさん [2008/11/14(金) 20:58:20 ] list.txtファイルに検索をかけたいキーワードを記入し そのリストのキーワードを元にgrepみたいな動作をするスクリプト listファイルの中身 $cat list.txt aho baka test 検索をかけたいファイル(test.txt)の中身 $cat test.txt aho 1 baka 2 manuke 3 test 4 実行結果 $./grep.pl aho 1 baka 2 test 4 よろしくお願いします。
755 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:24:33 ] #!/usr/bin/perl sub slurp { local ($/, @ARGV) = (wantarray ? $/ : undef, @_); return <ARGV>; } my $keyword_file = "list.txt"; my $target_file = "test.txt"; my @keywords = slurp($keyword_file); my $regex = join "|", map { chomp; "\Q$_\E" } @keywords; $regex = qr/$regex/; open my $fh, "<", $target_file; for my $line (<$fh>) { print $line if $line =~ $regex; } close $fh;
756 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:00:26 ] >>755 クールで惚れた
757 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 08:37:43 ] >>755 ありがとうございました!
758 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 09:13:35 ] 朝っぱらからコードゴルフ % perl -lne ' print if $t{ ( split )[0] } ++' list.txt test.txt ま、区切り文字が全角スペースだと動かんのだがね。全角スペースに拘るなら % perl -lne ' print if $t{ (/^(\w+)/)[0] } ++' list.txt test.txt
759 名前:デフォルトの名無しさん [2008/11/16(日) 01:29:32 ] dmain.cpp Note: including file: d:/projects/game/include\common.h Note: including file: d:/projects/game/include\product.h Note: including file: d:/projects/etc/psdk/include\WindowsX.h Note: including file: d:/projects/etc/psdk/include\windows.h こういうファイルを dmain.obj: \ /cygdrive/d/projects/game/include/common.h \ /cygdrive/d/projects/game/include/product.h \ /cygdrive/d/projects/etc/psdk/include/WindowsX.h \ /cygdrive/d/projects/etc/psdk/include/windows.h \ dmain.cpp こんな風にするスクリプトってどうやるの?
760 名前:デフォルトの名無しさん [2008/11/16(日) 14:36:30 ] 759は汎用性が必要だから、ファイル名とかドライブレターとかも関係なく動かせるのをお願いします
761 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:45:05 ] マルチしといて、動かなかったら注文付けんの? win の人だったらワンライナーはシングルクォートの代りにダブルクォートにすれば良いよ。
762 名前:デフォルトの名無しさん [2008/11/29(土) 21:11:06 ] 入力フォームに入力して送信を押したら hogehoge.cgi?入力された言葉 というように表示してくれるスクリプトを作ってほしいのですが どなたか作ってもらえませんか?
763 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 13:11:03 ] print "Content-type: text/html nn"; print "hogehoge.cgi?入力された言葉";
764 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 23:28:02 ] > Perlでリクに答えるスクリプトを作るスレ リクといえば、大石 りく。赤穂藩家老大石内蔵助良雄の妻。 そろそろ討ち入りの時期です。 Perlでリクにどうやって応えられるのか、スレが立って足掛け4年。 そろそろ、リクを喜ばしてみれ。
765 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 02:36:05 ] >>764 猛烈に面白くない
766 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 19:00:24 ] 椎名りくは引退したの?
767 名前:デフォルトの名無しさん [2008/12/14(日) 00:12:00 ] ほすほす
768 名前:デフォルトの名無しさん [2009/01/09(金) 01:04:58 ] 保守がてら いつまでたっても彼女ができないのですが、 バレンタインデーまでに(3次元の)彼女ができるスクリプトを作ってもらえませんか
769 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 01:18:29 ] 3次元とか言ってる時点でお前には彼女なんて出来ないw
770 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 19:50:17 ] >>768 バカだな。バレンタインデーまでにじゃなくてさ バレンタインデー当日にチョコと一緒に告白される方が絶対いいだろ
771 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:17:26 ] >>768 じゃあそういう感じのスクリプトをお願いします! できれば、彼女ができる日付を選べる感じで
772 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:40:36 ] >>771 バレンタインデーと言っておいて日付を選べる感じとはいかこれに
773 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:46:54 ] 彼女ができる日が可変、 チョコがもらえるのは2月14日で固定
774 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:48:19 ] 備考: 俺が事前に彼女を作りたいのは、 「気合入れて作るから楽しみにしててね」といわれたいからだ
775 名前:デフォルトの名無しさん [2009/01/21(水) 13:09:37 ] 1つのフォームに改行を使って複数の単語を書き、それを受け渡して単語毎に並べるようなのって可能でしょうか? $word[$_]のようなのでそれぞれの単語を分けたいのですがなかなか出来ません。 ご教授頂けますと有り難いです。 以下のような感じです。 ┌──────┐ │あいうえお │ │かきくけこ │(←textarea) │さしすせそ │ └──────┘ ↓受け渡し↓ あなたの記入した単語は 1つ目[あいうえお] 2つ目[かきくけこ] 3つ目[さしすせそ] の3つです。 のような感じです。 どなたか宜しくお願い致します。
776 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:18:17 ] >>775 改行でsplitしたら?改行コードに気を付けないといけないけど、それで問題ないと思う。
777 名前:デフォルトの名無しさん [2009/01/21(水) 13:51:07 ] >>776 ありがとうございます。 調べてみます。
778 名前:デフォルトの名無しさん [2009/01/21(水) 20:39:36 ] >>776 すみません、やっぱりもう少し詳しくお願い出来ませんでしょうか?
779 名前:775 [2009/01/21(水) 22:18:12 ] 現在このような感じです。 #変数[$word]を受け渡し @text = split(/\n/, $word); これを表示させたいのですが、どの様にしたら改行毎に一つずつ表示出来るのでしょうか? そもそも上ので出来るのでしょうか? すみませんが宜しくお願い致します。
780 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:45:59 ] textarea っていうのは、html の textarea のことか? だったら html の textarea の使い方を調べなさいよ。 html すら知らないで perl でwebプログラミングなんて無謀すぎる。
781 名前:775 [2009/01/22(木) 00:32:14 ] textareaはわかります。 ですが、@textの改行された分だけ(例えば3回改行されていた場合)並べて表示させる方法がわかりません。 例えば あいうえお かきくけこ さしすせそ を入力したとしてそれを一つずつ表示させるためにはどうしたら良いのでしょうか? 1行目 <textarea>あいうえお</textarea> 2行目 <textarea>かきくけこ</textarea> 3行目 <textarea>さしすせそ</textarea> のように一つずつ分けて、書かれた行数分だけループさせて書きたいのですが、教えていただけないでしょうか? 説明不足で申し訳御座いませんが、宜しくお願い致します。
782 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:34:45 ] for 文か foreach 文をつかえ。 for ($i = 0; $i < $#text; $i++) { print "<textarea>$text[$i]</textarea>"; } foreach $tt (@text) { print "<textarea>$tt</textarea>"; } まず www.tohoho-web.com/wwwperl2.htm ここでも読んで perl で使える命令を全部、頭に叩き込んでおけよ。
783 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:37:56 ] おっと... 誤: for ($i = 0; $i < $#text; $i++) ・・・ 正: for ($i = 0; $i <= $#text; $i++) ・・・
784 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:02:14 ] >>781 初めに思ってたのと何か違う質問になってるな <textarea ああいうえお かきくけこ さしすせそ</textarea> これを1行ずつ表示させたいのではなくて? use CGI; my $q = CGI->new; print $q->header( -type => "text/html"); my $body = $q->param( 'body' ); $body =~ s/\x0D\x0A|\x0D|\x0A/\n/g; my $li; for my $word (split "\n", $body) { $li .= "<li>$word</li>"; } print <<"HTML" <form method="post" action=""> <textarea name="body"> a</textarea> <input type="submit" /> $li</form> HTML
785 名前:775 [2009/01/22(木) 18:05:17 ] >>782-783 ありがとうございます。 URL先と書いていただいた内容を参考にさせていただき、勉強致します。 >>784 ありがとうございます。 自分でも書いていて変だということに今気づきました。 簡単に纏めると、 @フォームに文章を書いてもらい、受け渡す Aそれを受け取り、改行毎に一つずつ変数を持たせて並べる みたいな感じです。 今も書いていて意味がわかりずらいです。 本当にすみませんでした。
786 名前:775 [2009/01/22(木) 23:39:14 ] どうしても出来ませんでした… どうやっても500エラーから逃れられません… >>782-783 様や>>784 様のを組み込もうと考えていたのですが、何か根本的に私のは間違っていたみたいです。 申し訳御座いませんが、出来れば一通りのサンプルのようなものを作成していただけないでしょうか? 仕様は何度か書かせていただきましたが、 @test.cgi(仮)にアクセスするとフォーム表示 Aフォームに [あいうえお] [かきくけこ] [さしすせそ] 等を複数行記入してsubmitを押す Bsubmitを押すと ◆1行目 あいうえお です。 ◆2行目 かきくけこ です。 ◆3行目 さしすせそ です。 のように表示される。 このようなのをお願いしたいのですが、やはり難しいでしょうか? どなたか何卒宜しくお願い致します。
787 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:09:16 ] >>786 500エラーのエラー内容ください。
788 名前:775 [2009/01/23(金) 15:27:16 ] @textらへんでエラーが出てるようですが、 明らかに自分が書いた部分が掛かっていると思われますので、 修正というよりは1から作り直したいのですが、お手伝いしていただけますでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:28:54 ] >>788 エラーログが見れない環境? >>784 コピペするとどうなる?
790 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:42:16 ] すでに >>784 で答えが出てるじゃないか。 何が不満なのか? スクリプトをホームページへ設置するやりかたまで 手取り足取り教えろとでも言うのか?
791 名前:775 [2009/01/23(金) 18:07:42 ] >>789 すみません、エラーログは見れません。 >>784 をコピペして使うと500が出ます。
792 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 18:31:21 ] じゃ、「http 500」でググれ
793 名前:775 [2009/01/23(金) 21:07:22 ] フリーのPerlチェッカーでチェックしました。 Perlのエラー出力 Unrecognized character \241 at tmp.pl line 8. ソース 0001: use CGI; 0002: my $q = CGI->new; 0003: print $q->header( -type => "text/html"); 0004: my $body = $q->param( 'body' ); 0005: $body =~ s/\x0D\x0A|\x0D|\x0A/\n/g; 0006: my $li; 0007: for my $word (split "\n", $body) { 0008: $li .= "<li>$word</li>"; 0009: } 0010: print <<"HTML" 0011: <form method="post" action=""> 0012: <textarea name="body"> 0013: a</textarea> 0014: <input type="submit" /> 0015: $li</form> 0016: HTML 8行目の何が問題なのでしょうか?
794 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:43:07 ] まさか、インデント用の全角スペースをそのままコピペしてた、 というオチではないだろうな。
795 名前:775 [2009/01/23(金) 22:59:08 ] いえ、削除致しました。
796 名前:775 [2009/01/23(金) 23:04:46 ] print <<"HTML" でエラーが出ました。
797 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:05:34 ] Unrecognized character \241 at tmp.pl line 8. って出てるじゃないか。読めないの?
798 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:08:32 ] >>796 これだろ? Can't find string terminator "HTML" anywhere before EOF at m.pl line 10.
799 名前:775 [2009/01/24(土) 00:25:31 ] >>798 はいそれです。
800 名前:デフォルトの名無しさん [2009/01/24(土) 05:21:38 ] 最後に改行を入れてないためのエラーか。 というか、>>793 は全角スペースのエラーだよね。>>794 は言ってることあってたと思うんだけど会話になってないな。
801 名前:775 [2009/01/24(土) 06:00:43 ] >>800 確かにそうでした。 全角削除しても500出てたので勘違いしていました。すみませんでした。 最後に改行を入れた所、チェッカーでのエラーは無くなりましたが、未だにアクセスすると500になります。 何か原因などあるのでしょうか?
802 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 08:04:02 ] シェバング行がねーよwwwアホスwww ここまで書かないとだめか?
803 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 08:37:46 ] これはひどい。 とにかく、ひどい
804 名前:775 [2009/01/24(土) 10:24:36 ] すみません、理解出来ませんでしたので御説明いただけると有り難いです。
805 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:03:48 ] シェルやCGIなどのインターフェイスを介してスクリプトを実行させる際に、 スクリプトの一行目に、どのプログラムで解釈させるのかを書いておく。 その行をシェバング(sharp bang/shell bang)行と呼ぶ。 その行が欠落している。 詳しくは、お使いのサーバの管理者にお尋ねください。
806 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:40:03 ] コメニケーション能力不足
807 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:40:40 ] 会話のキャッチボールができていない
808 名前:デフォルトの名無しさん [2009/01/24(土) 12:19:41 ] ここまでくるとスレタイ通り全部作った方がいいのかな?不毛なやりとりだからもう下のやつコピーして終了にすればいいよ ファイル名はtext.cgi。実行権限を付ける。 =====ここからコピー===== #!/usr/bin/perl -T use strict;; use warnings; use CGI; my $q = CGI->new; print $q->header( -type => "text/html"); my $body = $q->param( 'body' ); $body =~ s/\x0D\x0A|\x0D|\x0A/\n/g; my $li; for my $word (split "\n", $body) { $li .= "<li>$word</li>"; } print <<"HTML" <form method="post" action=""> <textarea name="body"> </textarea> <input type="submit" /> $li</form> HTML __END__ =====ここまでコピー=====
809 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:26:39 ] >>806-807 つーか、クレクレだしな。
810 名前:775 [2009/01/24(土) 12:31:09 ] >>805 説明ありがとうございます。 そのような事すら知りませんでした。 勉強になります。 ありがとうございました。 >>806 >>807 申し訳御座いませんでした。 リアルで話し下手なのがこのような場でも御迷惑をおかけしたことを大変恥じております。 これからはperl以前にそのような事にも気をつけたいと思います。 本当に申し訳御座いませんでした。 >>808 最後までご丁寧にありがとうございます。 コピーして使わせていただきます。 本当にありがとうございました。 このスレに来るのはこれで最後にします。 御迷惑ばかりおかけして本当に申し訳御座いませんでした。
811 名前:デフォルトの名無しさん [2009/01/24(土) 12:46:06 ] 結局改行の話以前のやり取りになったなw
812 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:23:19 ] バレンタインというものを人々の記憶から消し去るスクリプトを作ってください
813 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 15:34:59 ] >>812 を葬れるスクリプトお願いします
814 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 15:56:54 ] >>813 の呪いを消し去るスクリプトを作ってください
815 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:22:02 ] $str = "人々の記憶"; $str =~ s/バレンタインというもの//g;
816 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 02:52:28 ] なんというシンプルさ
817 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:39:23 ] >>813 って殺人依頼じゃね?
818 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:24:51 ] アゲ ナイ
819 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:01:09 ] >>817 うむ、だが不能犯だな。
820 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:37:25 ] 無能犯
821 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:40:10 ] まあ、ギリギリアウトだな
822 名前:デフォルトの名無しさん [2009/02/04(水) 22:36:00 ] ・スクリプト マイリンク ・用途 リンクスクリプトで個人個人が好きなサイトをマイリンクに登録し、登録すると登録したサイトをマイリンクで確認出来る ・仕様 @個体識別情報(携帯端末は個体識別番号、パソコンはIPアドレス)で判断し、それぞれの端末毎にマイリンクを表示させる Aマイリンクページでマイリンクしたサイトの削除が可能(個人個人で) B追加はリンク表示の横の[追加]リンクを押すことで追加 Cマイリンクページでのマイリンクの表示数は10件程度で、超えた場合は次のページに表示 こんな感じのをお願い出来ませんでしょうか? 使っているリンク集スクリプトはKENT WEBさんのコスモナビです。 どなたか宜しくお願いします。
823 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:00 ] 既存のSBMの何が不満なんだ
824 名前:822 [2009/02/07(土) 11:32:30 ] >>823 自分が今サーバーに設置して使っているリンク集に、ユーザーが使えるマイリンク機能を追加したいのです。 3000サイトくらい登録しているので、利用者からマイリンク的なものを使えるようにしてくれと要望がありましたので此処にお願いに参りました。 822に追加でマイリンクページでカテゴリ分け(カテゴリ作成、編集、削除)出来たら最高です。 どなたか何卒、宜しくお願い致します。
825 名前:デフォルトの名無しさん [2009/02/08(日) 17:38:53 ] お願いしますage
826 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 17:48:33 ] DOSのバッチをPerlに書き換えてくれたりする?
827 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:10:37 ] そんなの簡単。system 関数使えばいいじゃん。
828 名前:デフォルトの名無しさん [2009/02/13(金) 19:51:28 ] 1,2,3の数字を組み合わせて25桁の数字をだーーっと表示するスクリプトを何卒お願いします。
829 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:43:55 ] sub f { my ($s, $d) = @_; if ($d == 25) { print $s, "\n"; } else { f($s.1, $d+1); f($s.2, $d+1); f($s.3, $d+1); } } f('', 0);
830 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:04:58 ] >>829 ありがとうありがとうありがとう!
831 名前:デフォルトの名無しさん [2009/02/15(日) 00:43:27 ] 現在そのスクリプトにアクセスしている人数を表示出来るスクリプトお願いします。 よくある[○人オンライン中]的なやつです。 時間は60秒くらいまでをオンライン中扱いにして、携帯電話も正確にカウントされるようにお願いします!
832 名前:デフォルトの名無しさん [2009/02/15(日) 03:51:35 ] #mes = "自分以外誰もアクセスしてなくて悲しい思いすることになるからやめとけ";
833 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 06:10:14 ] www
834 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 06:52:16 ] 訪問者多いから書いてんだろ多分 ちなみに俺のサイトなんて月10人くるかわからない程だぜ
835 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 07:18:58 ] しかもそれが検索エンジンのボットだったりするんだな
836 名前:デフォルトの名無しさん [2009/02/16(月) 18:36:46 ] 切実に>>822 をお願いします。 リンクの保存はリンクIDで行うようにしていただけると助かります。
837 名前:デフォルトの名無しさん [2009/02/17(火) 16:46:43 ] 〉〉GBE この中にあると思うから好きなのを選べ www.google.co.jp/search?hl=ja&q=%E3%81%91%E3%82%93%E3%81%A8%E3%81%86%E3%81%87%E3%81%B6&lr=
838 名前:デフォルトの名無しさん [2009/02/17(火) 17:12:31 ] >>837 残念ながらありませんでした。
839 名前:831 [2009/02/22(日) 15:39:29 ] お願いします
840 名前:デフォルトの名無しさん [2009/02/25(水) 23:47:12 ] あげ