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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/26(月) 00:46:38ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0514nobodyさん2006/07/13(木) 19:59:46ID:???
>>513
お前が働かないのは誰のせい?
0515nobodyさん2006/07/13(木) 20:09:12ID:IeuSyhG1
いまだKENT信者っていたんだなw
0516nobodyさん2006/07/13(木) 20:52:55ID:???
あれ? KENTってindexを使っているんじゃなかったっけ?
0517nobodyさん2006/07/13(木) 21:53:37ID:???
パターンを詰め込んだ変数でevalで局所化もせずぐりんぐりんじゃなかった?
0518nobodyさん2006/07/13(木) 21:58:11ID:???
KENT 曰く
「それでもPerlは動いている」
0519nobodyさん2006/07/13(木) 22:11:56ID:Ms2xB21u
print "location:hoge.gif\n\n";

アクセス解析用のcgiで出力を上記のようにしています。
自分自身先日winXPのIE7のベータ版にブラウザを変えて、気付いたのですが、
キャッシュされてしまってページ間の移動時に思うように動作しないことがあります。

これはベータ版のバグかもしれませんが。普通はcgiファイルをキャッシュして読み込みを省略することはないと思うので。
それでキャッシュ対策のヘッダを付け加えたいのですが、
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="Tue, 20 Aug 1996 14:25:27 GMT">
これのPERLヘッダ?版はどう記述すればいいでしょうか?

宜しくお願いします。
0520nobodyさん2006/07/13(木) 22:22:32ID:Ms2xB21u
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n";

一応こんな感じかなと思いますが、あってるのでしょうか?
http://www.gac.jp/article/index.php?stats=question&category=10&id=11811&command=msg
ここではどうやらNNにはこれでは残ってしまうように書いてあるのですが。
0521nobodyさん2006/07/13(木) 22:23:30ID:???
>>519
ってか Content-type 出すときに Last-modified とか一緒にだしてもダメなん?
05225192006/07/13(木) 22:24:37ID:Ms2xB21u
>>520は>>519ですすみません。
要は私の場合は戻るボタンが効かないように、ではなくて、
アクセス解析CGIがちゃんと動作することと、
チャットで使ってる、
<meta http-equiv="Refresh" content="15">
がちゃんと動作することなのですが。
05235192006/07/13(木) 22:25:35ID:Ms2xB21u
>>521
ありがとうございます。
その書き方がイマイチ自身がもてなかったので投稿して確認に参りました。
0524nobodyさん2006/07/13(木) 22:26:24ID:???
ダミーの値、たとえばtimeをアドレスにくっつけて別のURLにすれば解決。
0525nobodyさん2006/07/13(木) 23:13:19ID:???
'' and '' are identical (not copied) at test.cgi line 60

というエラーが出たんですが、これはどういうときに出るもんなんですか?
test.cgiの60行目で''と''が同じになってるよ(コピーされたとかじゃなくてな)
ってこと?意味が分かりません。
05265252006/07/13(木) 23:16:07ID:???
ちなみに60行目付近はこんな感じです。

59行目}elsif($action eq 'move'){
60行目&move;
61行目&move_complete;
62行目}elsif(......
0527nobodyさん2006/07/13(木) 23:29:36ID:???
>>525
シェルが吐いてるエラー。
どっかで cpしてるんだろうけど、コピー元とコピー先が同じだと出る。
05285252006/07/13(木) 23:46:26ID:???
>>527
該当箇所とは全然違うところが原因ってことですか。
コピーなんてしてたっけなぁ…。
レスありがとうございました!
0529nobodyさん2006/07/14(金) 00:05:57ID:???
Perlプログラムがおいてあるフォルダの中に、「temp」という名前のフォルダがあります。
この「temp」フォルダの中にある各フォルダの名前を$dirnameとしましょう。
各フォルダの中に、
{
$dirname
}
とだけ書かれた、「test.txt」という名前のファイルをそれぞれ新しく作りたいんです。

#!/usr/bin/perl
opendir DIR, "temp" or die "can't open temp\n";
@dir = map { -d "temp/$_" ? $_ : '' } readdir DIR;

foreach $dirname (@dir) {
chdir "./$dirname";
open OUT, ">test.txt" or die "can't create the file\n";
print OUT "{\n";
print OUT "$dirname\n";
print OUT "}\n";
close OUT;
chdir "..";
}

close DIR;
こんな感じにプログラムを書いてDOSプロンプトから実行したのですが何も起きません・・・
どうすればいいのか教えていただけないでしょうか?
05305252006/07/14(金) 00:20:17ID:???
60行目の
&move;を別の名前に変える動いた・・・なぜ??
逆に59行目の'move'を別の名前に変えただけでは同じエラーが。
0531nobodyさん2006/07/14(金) 00:26:19ID:???
>>529
とりあえず、mapで書いてる行をgrepで書き直す。
@dir = grep { -d "temp/$_" && !/^¥./ } readdir(DIR);
05325292006/07/14(金) 00:57:49ID:???
>>531
そのままコピペしてもう一度実行してみました。
が、駄目…。
0533nobodyさん2006/07/14(金) 01:07:41ID:???
横だけど
print @dir ; か
chdir "./$dirname" or die してみそ

@dir の中身は
./temp/hoge
./temp/piyo
じゃなく
hoge
piyo
になるYO @OSX
0534nobodyさん2006/07/14(金) 01:11:29ID:???
>>529
foreachの前の時点で@dirに期待した値が入ってるかどうかぐらいは
確認して問題の切り分けをしろよ。

あとchdirも失敗することがあるので or dieしとけ。
0535nobodyさん2006/07/14(金) 01:13:56ID:???
質問はしてくるけど、何も考えないのか。
誰かがなんか書いたらそれコピペして動くかどうかだけ?
なんだかなぁ。
0536nobodyさん2006/07/14(金) 01:14:40ID:???
わざわざ chdir せずに
open OUT, "> temp/$dirname/test.txt" or die "can't create the file\n";
ってすればいいじゃない
0537nobodyさん2006/07/14(金) 01:21:07ID:???
chdir でやるにしても foreach ループの前で chdir "temp/" が必要だしな。
05385292006/07/14(金) 01:27:17ID:???
>>536
できました!!!
ものすごく賢いやり方ですね。

>>534、>>533
chdirがうまくいってなかったというか、どうやら相対ディレクトリ名の指定とかが根本的
にわかっていなかったようです。openでカレントディレクトリも変わるんだと思ってました。

>>535
(・∀・)

みなさんどうもありがとうございます。
おかげさまで相対ディレクトリ名の指定ということに関してだいぶ理解が進みました。
0539nobodyさん2006/07/14(金) 02:04:03ID:???
あれ、chdir の有効範囲って local だったっけ?
そもそも1回目の
chdir "./$dirname";
でもし成功して temp/hoge/ になっちゃった場合、2回目はそこから chdir だから temp/hoge/fuga/ とかなんじゃねの?
0540nobodyさん2006/07/14(金) 02:23:45ID:???
>538
フルパスも相対パスも知らずにファイル扱ってたのか((( ;゚Д゚)))
0541nobodyさん2006/07/14(金) 02:33:40ID:???
>>539
>>529 のコードではファイルへの書き込みを行なった後に chdir ".." してるから
temp/ → temp/hoge/ → temp/ と戻るはず。

でもやっぱり読みづらいから、カレントディレクトリはあんまり変えて欲しくないなぁ。
0542nobodyさん2006/07/14(金) 16:30:45ID:???
-dはsymbolic linkのリンク先がディレクトリの場合も真を返すので、
前提条件でそういうのはないならOKだが一般的にはchdir ".."では
戻れないかもしれない。

perlのchdirにはファイルハンドルやディレクトリハンドルを渡せるので、
戻りたいディレクトリを開いておいてこっちを使うほうが安全。

0543nobodyさん2006/07/14(金) 18:02:15ID:IyAZlhFk
メールの標準入力からの取得を考えています。
qmailなのですが、perlにパイプさせるにはどうしたらよいでしょうか?

sendmailなら/etc/aliases でできますよね?
0544nobodyさんNGNG
http://man.qmail.jp/jman5/dot-qmail.html
0545nobodyさん2006/07/14(金) 19:43:53ID:???
ttp://www.uploda.org/uporg445281.txt

上記の掲示板に投稿する際のコード入力のスクリプトを作ったんですが
時たまコード入力より下が表示されなくなってしまいます。
どうすれば改善していいか分かりません。
どなたか改善よろしくお願いします。
0546nobodyさん2006/07/14(金) 19:50:38ID:???
>>545
<form>タグが無い。
<table>タグも無い。
下から5行目、==&gt;と書くべき所で、'==>' と書いている。
0547nobodyさん2006/07/14(金) 19:55:39ID:???
>>545
というか、sub code 自体をどこからも呼んでない…。
sub error は存在しない。
何がしたいの?そこからして不明。
0548nobodyさん2006/07/14(金) 19:59:34ID:???
掲示板の一部です。
削除パスワードの下に&code;で呼び出して使ってます。
sub errorはあります。

で何をしたいかと言うとどうやってもコード部分が原因だと分かっていてもたまにコード部分からしたが消える
のが直せないので直してほしいわけです。
0549nobodyさん2006/07/14(金) 20:04:26ID:???
直して欲しいなら全部晒せよ
0550nobodyさん2006/07/14(金) 20:05:56ID:???
>>548
そんな一部しかないんじゃ分からん…。

とりあえず、>>546 の通り&code の中でHTML表示してる部分、
tableタグの開始も終了も無いんだが…。そこが一番あやしい。
ちゃんとtableタグ入れてみたら?
それさえ分からなければ、PerlじゃなくてHTMLの質問だよ。
0551nobodyさん2006/07/14(金) 20:08:03ID:???
すんません・・・。
http://livetool.ty.land.to/aska/aska.cgi
ココに問題の掲示板とソースをのっけてあります。

数回更新ボタンを押していると表示されなくなりますのでそれを改善したいのです。
よろしくお願いします。
0552nobodyさん2006/07/14(金) 22:04:47ID:LnOAoBN3
mysqlとperlで会員サイト作ってみたいのですが
よい参考書を教えてください
0553nobodyさん2006/07/14(金) 22:11:09ID:???
>>552
WEb制作板池
0554nobodyさん2006/07/14(金) 22:26:32ID:cNzjTfEo
>>552
その程度は参考書などいらない。
というか基本的にプログラム組むのに参考書なんていらない。

http://www.rfs.jp/sb/index.html
ここに書いてある内容を全て理解・・しなくても簡単にそのくらいは作れる。
まずは自分のパソコンに仮想環境を作ることが先決だ。
そうすればどれだけ程度の低い話なのかわかる。

優れたプログラムを組めるかどうかは人によって優劣がでるが、
最低限動くものなら健常者であれば誰でも可能。
0555nobodyさん2006/07/14(金) 23:28:12ID:???
確かに作るだけならその通りなんだが…
WebProgは脆弱性があると、攻撃される危険が付きまとうことも忘れないでくれ。

と言うことで最低限ここは読んでおくべき。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/
出来ればこの辺もね
ttp://www.jumperz.net/texts/csrf.htm
0556nobodyさん2006/07/15(土) 13:04:39ID:FLr1xmaF
ありがとうございます>>553-554
0557nobodyさん2006/07/15(土) 19:12:52ID:???
あの>>551の件は・・・・。
0558nobodyさん2006/07/15(土) 19:19:39ID:???
>>557


>#乱数の作成
>$rand1 = int(rand(10));

を

$rand1 = int(rand(10)) + 1;

と末尾に+1しろ。
0559nobodyさん2006/07/15(土) 19:25:01ID:???
今の、このスレの空気は以下の成分からなってます。
1). 自力でつくってんだったら協力したるのに
2). 向うの掲示板に問い合わせろよ



3). KENT かよ!
0560nobodyさん2006/07/15(土) 19:41:55ID:???
>>559
だいたい合ってるwwwww

&code; とか気持ち悪いな。暗黙に &code(@_); と渡されることを知ってての諸行かな。
せめて &code(); とかにしてほしいなあ。
0561nobodyさん2006/07/15(土) 19:48:58ID:???
>>558
ありがとうございます。
文法的にも間違っていたようです。

>>559
すべてではないですが大半は作りましたが・・・・・。
0562nobodyさん2006/07/15(土) 19:53:50ID:???
たいはん 【大半】
全体の半分以上。過半。大部分。副詞的にも用いる。

へぇ・・・。
0563nobodyさん2006/07/15(土) 19:55:13ID:???
>>560

>せめて &code(); とかにしてほしいなあ。

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
と釣られてみるテスト
0564nobodyさん2006/07/15(土) 20:04:58ID:???
>>561
ほんとかどうか知らんが、おれは KENT であろうとなかろうと問い合わせ先が記入されてるソースに関してのレスは
つけんぞ。

おまえさんがさきに「この部分が自作です」といえば
話は別になるときもあるが。
0565nobodyさん2006/07/15(土) 20:06:20ID:???
改行忘れorz...
0566nobodyさん2006/07/15(土) 20:38:18ID:???
KENTもう配布やめてくれないかな。
ダメな子が増えて困る。
0567nobodyさん2006/07/15(土) 20:45:33ID:???
KENT便利だな

少なくともチャント動くし
0568nobodyさん2006/07/15(土) 21:34:29ID:???
× チャント動く
○ 動きはする
0569nobodyさん2006/07/15(土) 21:59:01ID:???
KENT使ったこと無い
0570nobodyさん2006/07/15(土) 22:15:52ID:???
KENTしか使っていない。
0571nobodyさん2006/07/15(土) 23:50:29ID:???
KENTの何がいいかって、セキュリティとか全然考えてないとこだよな。
攻撃できまくり☆(ゝω・)v
0572nobodyさん2006/07/16(日) 00:07:06ID:???
terra大先生の遺作がまだアチコチに残っている。
外部から任意コマンド実行可能なまま。
0573nobodyさん2006/07/16(日) 06:07:21ID:???
えーw どんな設計したらそんなことになるんだろw
0574nobodyさん2006/07/16(日) 13:59:39ID:pJTY6Rn5
正規表現でマッチした方の値を取る方法が分かりません。
例えば
$hoge = '2743AB5837C9849';
というような文字列があるとして
$hoge =~ s/\D//g;
とした場合に\Dに該当する方(ABC)の値を取りたいんですが
どうすれば良いんでしょうか?
0575nobodyさん2006/07/16(日) 14:07:23ID:???
>574
$&
05765742006/07/16(日) 14:21:08ID:pJTY6Rn5
>>575
ありがとうございます。
マッチ変数というのがあるんですね。

ttp://www.rfs.jp/sb/perl/02/09.html
>後方参照の変数には上記のほかに、マッチ変数 $& $` $' $+ があります。これらの変数を使うと
>プログラム内のすべての正規表現の処理が遅くなるので、注意して使ってください。

という記述があったんですが、できることなら使わない方が良い代物なんでしょうか。
それとも多用がいけないのであって、1、2箇所であれば問題ないんでしょうか。
0577 ◆TWARamEjuA NGNG
違う変数に入れちゃっても良いような。
($hage = $hoge) =~ s/\D//g;
0578nobodyさん2006/07/16(日) 14:48:17ID:???
>>576
> という記述があったんですが、できることなら使わない方が良い代物なんでしょうか。
> それとも多用がいけないのであって、1、2箇所であれば問題ないんでしょうか。
1回でも使っている箇所があると、全ての正規表現が遅くなる。
マッチ変数が使われているかどうか調べるためのモジュールはDevel::SawAmpersand
0579nobodyさん2006/07/16(日) 14:56:43ID:pJTY6Rn5
>>577-588
ありがとうございます。
ちょっと落雷がヤバイので一旦PCの電源落とします。
落ち着いたらそのときまたレスします。すみません。
0580nobodyさん2006/07/16(日) 15:07:17ID:???
速度気になるんだったら、
my @hit = () ;
push @hit, $1 while $hoge =~ s/(¥D)// ;
みたく $1 を使えば?
つーか $& 使ったことないなあ。オレ。
0581nobodyさん2006/07/16(日) 15:54:56ID:???
$1使ったほうが遅いはず
0582nobodyさん2006/07/16(日) 16:08:19ID:???
誰かベンチとってkt
0583bench 魔2006/07/16(日) 16:56:41ID:???
お前がやれよ!まあ、暇だからやったけどさ。
===そーす===
my $str1 = 'a' x 6 . 'hoge' ;
$str1 = $str1 x 100 ;
sub test1(){ my ( $tmp, @hoge ) = $str1 ; push @hoge, $& while $tmp =~ s/hoge// ; }
sub test2(){ my ( $tmp, @hoge ) = $str1 ; push @hoge, $1 while $tmp =~ s/(hoge)// ; }

#timethese 10000, { test2 => 'test2' } ;
timethese 10000, { test1 => 'test1', test2 => 'test2' } ;
===実行結果===
1. ソース内に $& 蟻
Benchmark: timing 10000 iterations of test, test2...
test: 13 wallclock secs (13.22 usr + 0.10 sys = 13.32 CPU) @ 750.75/s (n=10000)
test2: 14 wallclock secs (13.34 usr + 0.10 sys = 13.44 CPU) @ 744.05/s (n=10000)

2. ソース内に $& なし(test1 をコメントアウト
Benchmark: timing 10000 iterations of test2...
test2: 14 wallclock secs (13.32 usr + 0.10 sys = 13.42 CPU) @ 745.16/s (n=10000)
0584bench 魔2006/07/16(日) 16:57:32ID:???
$& だけじゃ差が出ないのか?と思い、
==========
で、test1 を以下の様に変えて
sub test1(){
 my ( $tmp, @hoge, @fuga, @piyo ) = $str1 ;
  ( push (@hoge, $& ),
   push (@fuga, $`),
   push(@piyo, $' )) while $tmp =~ s/hoge// ; }

実行してみたが…
Benchmark: timing 10000 iterations of test, test2...
test: 26 wallclock secs (24.80 usr + 0.22 sys = 25.02 CPU) @ 399.68/s (n=10000)
test2: 14 wallclock secs (13.28 usr + 0.08 sys = 13.36 CPU) @ 748.50/s (n=10000)
test2 の結果は余りかわらず。

prelre にまで書いてある記載だから $& とか使ったら遅くなるケースが必ずある筈なんだけどなあ。
実際のソースで自分で確かめるしかねーな。
0585nobodyさん2006/07/16(日) 17:10:42ID:???
>>583-584
文句言いながらやる君が好きだ。

でも、
> これらの変数を使うとプログラム内のすべての正規表現の処理が遅くなるので、注意して使ってください
だから、同じ時に計測すると $1 の方も遅くなっちゃうんじゃないのかな?
比較じゃなくて構わないから、参考に単独での速度を計ってみてくれるといいかも。

できれば
> @hoges = $hoge =~ /\D/g;
系と
> push @hoges, $1 while $hoge =~ /(\D)/g ;
系とでも比較してあるとなお。
0586bench 魔2006/07/16(日) 17:51:19ID:???
>だから、同じ時に計測すると $1 の方も遅くなっちゃうんじゃないのかな?
>比較じゃなくて構わないから、参考に単独での速度を計ってみてくれるといいかも。
583 の 2.の条件が $& を排除した形のものデス。
$& の入っている行をすべてコメントアウトしました。

お約束「あなたの為にやるんじゃないんだからね!!」
>>583 のソースに
sub cont (){ my ( $tmp, @hoge ) = $str1 ; @hoge = $tmp =~ /hoge/g ;}
を加えて実行 ( 実行名 cont )。実行回数は 5 万回に変更
Benchmark: timing 50000 iterations of cont, test1, test2...
cont: 49 wallclock secs (48.24 usr + 0.34 sys = 48.58 CPU) @ 1029.23/s (n=50000)
test1: 67 wallclock secs (65.77 usr + 0.39 sys = 66.16 CPU) @ 755.74/s (n=50000)
test2: 69 wallclock secs (66.33 usr + 0.53 sys = 66.86 CPU) @ 747.83/s (n=50000)

そこから $& が入った部分を全削除して実行
Benchmark: timing 50000 iterations of cont, test2...
cont: 44 wallclock secs (42.59 usr + 0.33 sys = 42.92 CPU) @ 1164.96/s (n=50000)
test2: 69 wallclock secs (66.67 usr + 0.54 sys = 67.21 CPU) @ 743.94/s (n=50000)

…なるほど、test2 ( $1 を利用 )にはもともとコストが掛ってて $& の影響が表われなかった
だけか。
一箇所の正規表現だけだと、$1 より $& を使った方が速いがソース全体だと影響を及ぼす
という妥当な結果かな。

0587nobodyさん2006/07/16(日) 18:23:45ID:???
>>586
オツカレ!

つまり $& を使うとそもそも結果を伴う $1 の処理には影響ないけど、
普通の正規表現も結果をとることになるから総合的に遅くなる、ってわけだな。

結局、>>574の場合、一番早いのは

my @matchs = $hoge =~ /\D/g;
$hoge =~ s/\D//g; # ※より早い形→ $hoge =~ tr/0-9//cd;

って2段階で処理して $& も $1 も使わない形なんだろね。
05885742006/07/16(日) 19:11:43ID:pJTY6Rn5
レス遅くなってすみません。

>>577
一度別の変数に逃がしておいて、そっちの方で再度逆のパターンで取得する、
という理解で良いんでしょうか。参考にしてみます。
括弧でくくって逃がしておく方法は知らなかったので勉強になりました。

>>578
マッチ変数は1箇所でも使うと他の全ての正規表現にも影響が出るんですね。
今のところ使ってる箇所はないんで、できたら使わない方向で考えてみます。

>>580>>581
速度も気になりますが、「注意して使ってください」の文言に
ちょっとビビってしまいました。でも、他にも正規表現使ってる箇所があるので
できたらマッチ変数使わなくても良いのならそっちの方が良いと思っています。

>>583-584>>586
画に描いたようなツンデレと詳しいベンチマークありがとうございました。
局所的にはマッチ変数よりも$1使った方が処理は速いけれど
他にも正規表現使ってる箇所があれば、結果は逆になるということですね。
コード内で他にもいくつか正規表現使ってるところがあるので
マッチ変数を使わなくてはならない状況になれば$1を代用することにします。
非常に勉強になりました。

>>587
正規表現の置換と言えば即sでやってたので
trに特有の便利な修飾子があるのを見落としていました。
ずばりの解答も含めてありがとうございました。

レスくださった皆さん、ありがとうございました。
最近あちこちで落雷が発生しているみたいなのでパソコンの方もご自愛下さい。
0589nobodyさん2006/07/16(日) 19:42:51ID:???
誰かアンチKENTの方々、コレが最高という掲示板配布サイトなどを教えて下さいな。
by KENT信者
0590nobodyさん2006/07/16(日) 19:44:18ID:???
はいはい釣り釣り
0591nobodyさん2006/07/16(日) 22:04:02ID:???
入力された文字を展開して表示させる方法ってあります?
たとえば ^\d$ と入力すると

0
1
2
3
4
5
6
7
8
9

と展開するみたいな
0592nobodyさん2006/07/16(日) 22:16:57ID:???
ない
0593nobodyさん2006/07/16(日) 22:32:38ID:???
質問の意図が読めない
正規表現の展開?
05945912006/07/16(日) 22:41:09ID:???
>>593
展開して表示する方法があるのかどうかです

^\d$なら>>591の通り0〜9まで展開
^[Aa]$ならAとaの2つ展開
という意味です



0595nobodyさん2006/07/16(日) 22:52:27ID:???
[^a] とかの場合はどんな展開を想定してんだ?
できないってことでいいよ。
0596nobodyさん2006/07/16(日) 22:56:17ID:???
知らないのかw


0597nobodyさん2006/07/16(日) 22:56:40ID:???
残念ながら知らないw
>>592のいう通りじゃない?
簡単な正規表現だったら、頭の中で想像つくし、
複雑なものだったら、展開後の文字が何万行にも
わたってしまうから...

単純な例だと「/./」。
これの展開は 1byte で表されるものすべてだから、
多byte文字とか考えたらガクガクブルブルw
05985932006/07/16(日) 22:59:52ID:???
>>597は>>591に対してのレス
0599nobodyさん2006/07/16(日) 23:01:02ID:???
my $p = qr/^\d$/;
my @c = grep { $_ = chr($_); /$p/ } (0..0xFF);
0600nobodyさん2006/07/16(日) 23:34:52ID:???
パソコンに入っているcsvファイルAを読み込んでデータを取り出して処理、
そしてサーバ上にあらかじめ用意してあるファイルBにその結果を書き出す、
ということをやりたいんですが、そういうことは可能でしょうか?
0601nobodyさん2006/07/16(日) 23:36:49ID:???
>>600
要約するとこういうことです。

CSVファイルをアップロードして、処理した結果を保存する。

結論。可能
06026002006/07/16(日) 23:42:33ID:???
>>601
なるほど。とすると簡単な流れとしては
csvファイルAをサーバにアップロード
→オープンして処理
→ファイルBに書き込む
→ファイルA削除
という解釈で大丈夫でしょうか?
0603nobodyさん2006/07/16(日) 23:48:10ID:???
no
06045912006/07/17(月) 00:05:10ID:???
>>599
ありがとうございます
06055912006/07/17(月) 00:09:38ID:???
>>602
もっといい方法があるかもしれないけど
csvファイルAからGrep→ファイルBに書き込む
でいけるような
0606nobodyさん2006/07/17(月) 00:19:41ID:???
>>604
え、それでいいの?
シングルバイト、1文字限定なら、最初に言ってよ。
0607nobodyさん2006/07/17(月) 00:25:28ID:???
>>602
search.cpan.org にいって
NET::FTP とか NET::SSH::PERL とか
そっちがわ系のモジュールを検討してみたら?
0608nobodyさん2006/07/17(月) 00:31:41ID:???
>>606
ほんとだよなw
06096002006/07/17(月) 00:46:22ID:???
602の流れでとりあえず書いてみようと思ったんですが
ファイルAをアップロード→オープン
のところで、おそらくアップロードが完了する前に
オープンをかけてしまいエラーが出てしまいます。
アップロードとファイルBへの書き込み処理は
別々にしないと無理ですかね・・・。

>>603
喜び勇んで早速書き始めてたらいきなり否定されてたとは・・・

>>605
grepを使うにしても、まずはサーバ上にファイルAを上げないとダメですよね?

>>606
そういうモジュールがあるんですか。
調べてみます。
0610nobodyさん2006/07/17(月) 00:51:38ID:???
>>609
そんなこたあないはず。
心配だったら sleep(1) でもしてみたらいいじゃない。
06115912006/07/17(月) 00:59:20ID:???
>>606>>608
ああああ、>>599はシングルバイト限定なんですね・・・
2バイト以上だとやっぱり無理?
0612nobodyさん2006/07/17(月) 01:06:13ID:???
気づいてなかったのかw
0613nobodyさん2006/07/17(月) 01:06:32ID:???
>>611
パターンなんて無限大にあるしなあ。
/.../ これだけ展開するので 255*255*255 だろw
もっと条件言うか何がしたいか言うかしないと 「無理」 って感じ。
■ このスレッドは過去ログ倉庫に格納されています