Perlについての質問箱 28箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/31(火) 14:52:21"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2006/10/31現在の最新版: 5.8.8
● 2006/10/31現在の開発版: 5.9.3
前スレ
Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/
リンク集は>>2-3
過去スレは>>4
0075デフォルトの名無しさん
2006/11/03(金) 20:42:55毎回正規表現をコンパイルしにいってるから遅いとかはないかな?
このサンプルを元に作ってみたら?
日本語がほしけりゃPerl Cookbookを買いましょう。
ttp://www.unix.org.ua/orelly/perl/cookbook/ch01_18.htm
0076デフォルトの名無しさん
2006/11/04(土) 13:25:02> $max_buf = $size - $now_size if $size - $now_size < $max_buf;
これは
if( $size - $now_size < $max_buf ){
$max_buf = $size - $now_size;
}
と同じです。っていうのは分かってるのかな・・・?
0077デフォルトの名無しさん
2006/11/05(日) 00:10:100078デフォルトの名無しさん
2006/11/05(日) 00:22:57@_の要素数を見ればいくつパラメタが与えられたかわかるので
適当に分岐なりなんなりすればよい。
0079デフォルトの名無しさん
2006/11/05(日) 04:24:45途中で改行したいのですが、実際に条件式の途中で改行するとエラーになってしまいます。
解決策を教えてください。
条件式
$hoge =~ /VALUE="(.*?)"(?:.|[^.])*?VALUE="(.*?)".*?VALUE="(.*?)".*?VALUE="(.*?)".*?VALUE="(.*?)".*?VALUE="(.*?)"(?:.|[^.])*>(\d+)(?:\(hugahuga\)|\(hogehoge\))/;
0080デフォルトの名無しさん
2006/11/05(日) 05:02:16"x" をつける
0081デフォルトの名無しさん
2006/11/05(日) 05:15:00できました。
これ便利ですね。
どうもありがとうございました。
0082デフォルトの名無しさん
2006/11/05(日) 13:16:32$hoge =~ /プーさん/;
を実行すると
Unmatched [ in regex; marked by <-- HERE in m/プー <-- HERE さん/ at C:\hoge\test.pl
とエラーになります。
パターンの先頭がパー、ピー、プー、ペー、ポーにだとエラーになるようです。
$hoge =~ /\プ\ー/;
エスケープしてもうまくいきません。
どうしてでしょうか?
0083デフォルトの名無しさん
2006/11/05(日) 13:29:26長音(ー)の2バイト目が 0x5B で、'[' (0x5B) として解釈されてしまうからです。
\Q と \E で囲むと、その間の文字列は正規表現として解釈されなくなります。
/\Qプーさん\E/
ではどうでしょうか?
0084デフォルトの名無しさん
2006/11/05(日) 13:31:59全部EUCで書いちゃうのも手かもね。
0085デフォルトの名無しさん
2006/11/05(日) 17:56:01ファイルをアップすると[upxxxx.xxx]という名前に強制的になりますが、
これを[MAQxxxxx.MP4]という様にしたいです。
(xxxxxの部分は、アップされた順に00001,00002,00003という感じに)
どうすれば良いのでしょうか?
また、MP4ファイルをアップしそれを落とそうとしてファイル名のところを
クリックすると、QuickTimeによって再生され、保存することが出来ません。
これを再生されること無く、ファイル名をクリックしただけでDLが始まるようにするのは
どうすれば良いのでしょうか?
分かりにくい文章かもしれませんが、教えてください。お願いします。
0086デフォルトの名無しさん
2006/11/05(日) 18:59:54前半はすれ違い
後半はいた違い
0087デフォルトの名無しさん
2006/11/05(日) 19:12:36え・・・
uploder.cgiの中身を書き換えるんじゃないんですか?
そうだと思ってPerlのスレにに書いたのですが・・・。
もしかして、ここじゃなくてCGIの質問スレに書くべきでしたでしょうか。
0088デフォルトの名無しさん
2006/11/05(日) 19:55:09>>1
0089デフォルトの名無しさん
2006/11/06(月) 00:06:180090デフォルトの名無しさん
2006/11/06(月) 00:55:100091デフォルトの名無しさん
2006/11/06(月) 01:49:21009282
2006/11/06(月) 02:11:23\Q, \Eを使って解決しました。
レスありがとうございました。
0093デフォルトの名無しさん
2006/11/06(月) 04:18:12今は下のようにめんどくさいことをしています。何かうまい方法はありませんか?
print "ほげ";
print LOG "ほげ";
print "ふがふが";
print LOG "ふがふが";
0094デフォルトの名無しさん
2006/11/06(月) 04:33:50perl のプログラムでは標準出力に出すだけ。
tee を使ってリダイレクトするか、
単にリダイレクトしてそのファイルを別端末で tail -f する。
0095デフォルトの名無しさん
2006/11/06(月) 04:54:25二穴用のさぶる〜ちん作りゃいいやん
0096デフォルトの名無しさん
2006/11/06(月) 05:29:48open(STDOUT,"|tee log");
0097デフォルトの名無しさん
2006/11/06(月) 06:20:270098デフォルトの名無しさん
2006/11/07(火) 04:16:20$data { 'Class_A' } [ 0 ] { 'FirstName' } = '太郎' ;
みたいな配列とハッシュを組み合わせた変数を用意しようと思います。
リファレンスとか多次元とかサブルーチンとかごちゃごちゃで混乱してます。
【1】変数の値を生成し、代入したい
my %data;
#(略。ループとかDBからの取得とか)
my %hash;
$hash{'FirstName'} = '太郎';
$hash{'FamilyName'} = '田中';
push ( @data{'Class_A'} , \%hash );
#(略。ループ終了とか)
と書いてみたのですが、型が違ぇよボケ(意訳)と言われてしまいました。
(実際には、Class_Aや田中、太郎の部分にはデータベースから取得した値が入る)
仕方ないので、
my @tmp = @data{'Class_A'};
と、あらかじめコピーしておいてから、最後に
push(@tmp,\%hash);
@data{'Class_A'} = \@tmp;
一時ファイルの中身を戻すとかやってる始末です。
もうちょっとスマートな方法はありませんでしょうか。
0099デフォルトの名無しさん
2006/11/07(火) 04:17:50A組→B組→B組→B組→C組→A組→C組 とかもありえます。
各クラスの生徒数は不明です。
【2】特定のクラスに所属する生徒の情報を取り出したい。
なお、取り出す順番(出席番号)については言及しない。もちろんしてもいい。
foreach my $key (keys @data{'Class_A'} )
というループを作ってみたのですが、最終的な値(田中とか太郎とか)を取得する方法が分かりません。
$data{'Class_A'}[$key]{'FirstName'}
$key{'FirstName'}
など幾つか試してみましたが、全く取得できる気配はありませんでした。
(どちらも「太郎」などの文字列の取得を期待しています)
0100デフォルトの名無しさん
2006/11/07(火) 04:36:35push ( @data{'Class_A'} , ¥%hash );
のところを
push ( @{$data{'Class_A'} }, ¥%hash );
でいいんじゃないか
0101デフォルトの名無しさん
2006/11/07(火) 04:44:23my %data;
#(略。ループとかDBからの取得とか)
my %hash;
$hash{'FirstName'} = '太郎';
$hash{'FamilyName'} = '田中';
push (@{$data{'Class_A'}},¥%hash);
foreach my $class ('Class_A', 'Class_B', 'Class_C') {
foreach my $student (@{$data{$class}}) {
print $student->{'FirstName'} . $student->{'FamilyName'} . "¥n";
}
}
010298
2006/11/07(火) 04:48:00これ以上パソコンとお見合いしてると明日(というか今日)の仕事に響くので
検証は夜にでもやりたいと思います。
ほんとうにありがとうございました…… zzz
0103デフォルトの名無しさん
2006/11/07(火) 07:15:07そのまま貼るのが基本。
0104デフォルトの名無しさん
2006/11/07(火) 17:23:16hashやlistの値として、直接 hash や list は格納できないが、リファレンスは格納可能。
従って、
$data{'Class_A'}->[0]->{'FirstName'} = '太郎';
ならOK。しかしややこしいことに、上記は
$data{'Class_A'}[0]{'FirstName'} = '太郎';
と書いても同様に解釈される。これだと表記上、hash の値にlistが
格納されているように見えるが、実際には list のリファレンスが格納されている。
list のリファレンスなので、その全体は @{$data{'Class_A'}} で参照する。
@$data{'Class_A'} じゃダメ。
010598
2006/11/07(火) 20:02:45勘でコーディングするだけでなく、しっかりと何をしているか認識しないと駄目ですね。
Cのポインタはなんかはすぐに理解できたんですが、Perlはそれ以上に混乱しそうです。
>103
おっしゃる通りです。以後気をつけます。
0106デフォルトの名無しさん
2006/11/07(火) 20:13:57@array=($sec,$min,$hour,$day,$mon,$year);
0107デフォルトの名無しさん
2006/11/07(火) 20:38:34質問するより
print join(',', @array) . "¥n";
で試した方がはやくね? 釣り?
0109デフォルトの名無しさん
2006/11/07(火) 20:54:03釣り?
0110デフォルトの名無しさん
2006/11/07(火) 21:11:17実行できる環境じゃないんです;;
0112デフォルトの名無しさん
2006/11/07(火) 21:13:37実行できる環境じゃないんです;;
0113デフォルトの名無しさん
2006/11/07(火) 21:17:480114106
2006/11/07(火) 21:23:36C++でもJavaでもできるので、できるものとして書いていきます
0115デフォルトの名無しさん
2006/11/07(火) 21:36:290116デフォルトの名無しさん
2006/11/07(火) 21:41:21できない。
0117デフォルトの名無しさん
2006/11/07(火) 21:49:59011993
2006/11/07(火) 23:19:58print $tee "ほげふが";
で解決しました。
レスありがとうございました。
0120デフォルトの名無しさん
2006/11/07(火) 23:55:34<INPUT TYPE=HIDDEN NAME=huga VALUE="huge">
<INPUT TYPE=SUBMIT NAME=ok VALUE="送信">
<INPUT TYPE=SUBMIT VALUE="取り消し">
</FORM>
これを送信したいんですが下のようにすると取り消しが送られてしまいます。
どうすればいいですか?
$string = "上のHTML";
$url = 'http://hoge/hoge.cgi';
$string =~ /NAME=huga\sVALUE="(.*?)"/;
%formdata = ('huga' => $1);
$ua = LWP::UserAgent->new;
$req = POST($url, [%formdata]);
$res = $ua->request($req);
0121デフォルトの名無しさん
2006/11/08(水) 00:11:16>>1
0122デフォルトの名無しさん
2006/11/08(水) 00:17:34<FORM ACTION="hoge.cgi" method="POST">
<INPUT TYPE=HIDDEN NAME=huga VALUE="huge">
<INPUT TYPE=SUBMIT NAME=ok VALUE="送信">
<INPUT TYPE=SUBMIT VALUE="取り消し">
</FORM>
EOF
$string =~ /NAME=huga¥sVALUE="(.*?)"/;
%formdata = ('huga' => $1);
print join(',', %formdata) . "¥n";
>>120は上記を参考にして出直してください。
上記の結果が予想と一致するのであれば、スレ違いかな。
予想と違うのであれば、どっかがおかしい。
0123デフォルトの名無しさん
2006/11/08(水) 00:36:44HTMLを標準出力やファイルに出力するスクリプト自体はWebProg板じゃなくてもOKよね?
0124120
2006/11/08(水) 00:39:04簡易HTTPブラウザを作っていて、
以下のHTMLを受け取った時に解析して送信するといった処理をしたいのです。
やはりスレ違いでしょうか?
<FORM ACTION="hoge.cgi" method="POST">
<INPUT TYPE=HIDDEN NAME=huga VALUE="huge">
<INPUT TYPE=SUBMIT NAME=ok VALUE="送信">
<INPUT TYPE=SUBMIT VALUE="取り消し">
</FORM>
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
$string = "上のHTML";
$url = 'http://hoge/hoge.cgi';
$string =~ /NAME=huga\sVALUE="(.*?)"/;
%formdata = ('huga' => $1);
$ua = LWP::UserAgent->new;
$req = POST($url, [%formdata]);
res = $ua->request($req);
0125デフォルトの名無しさん
2006/11/08(水) 01:03:51CGI/HTTPの問題であればスレ違い。
文字列のパーシングとかならOK。
で、文字列のパーシングに関しては良さそうに思う。
>>122 のコードで確認しる。
>>124は、どこ(CGI/HTTP/文字列処理/etc.)が怪しいのか切り分けできてるのか?
0126120
2006/11/08(水) 01:25:48ありがとうございます。>>122の意味を掴めていませんでした。
送信、取り消しの違い(ok)をどうやって区別するかを尋ねましたが、スレ違いでした。
0127デフォルトの名無しさん
2006/11/08(水) 01:40:06submitが複数あるフォームでどのsubmitが押されたかを知りたいってこと?
もしそうなら完全に板違いだね。
webprog板の初心者perlスレが良いと思う。
0128デフォルトの名無しさん
2006/11/08(水) 01:41:38とっくにそのスレに移動してんだろ。
死ねよ俺www
ごめんなさい…orz
0129デフォルトの名無しさん
2006/11/08(水) 08:29:46罰として次回のスレ立てを命ずるw
0130デフォルトの名無しさん
2006/11/08(水) 15:24:02ARR_1[1] =1;
@ARR_2 = @ARR_1;
++$ARR_2[1];
print ($ARR_1[1]);
だと当然 1が出力されます
ARR_1[1][1] =1;
@ARR_2 = @ARR_1;
++$ARR_2[1][1];
print ($ARR_1[1][1]);
だと何故か1ではなく、$ARR_2[1][1]の値である2が表示されてしまいます
どこか間違っていますでしょうか?
0131デフォルトの名無しさん
2006/11/08(水) 15:38:380132130
2006/11/08(水) 15:52:23よく分かっておりませんが
上の場合は 両方とも、1というスカラー値が入っております
下の場合は、両方とも配列へのリファレンスが入っています
(なぜか$ARR_1と$ARR_2には同じ物へのリファレンスが入ってしまってます)
0133デフォルトの名無しさん
2006/11/08(水) 15:52:54Net::FTPのquotコマンドの引数の書き方がわからないのですが
quot (CMD [,ARGS]) この場合
$ftp->quot("/usr/bin/du", "-k -s ../")
これであってますか?
0134デフォルトの名無しさん
2006/11/08(水) 15:57:43リファレンスをコピーしてもそれらが指す実体は変わらない。
ディープコピーしたければ以下のモジュールを。
http://search.cpan.org/~rdf/Clone-0.22/ (要コンパイル)
http://search.cpan.org/~evo/Clone-PP-1.02/ (PurePerl)
0135デフォルトの名無しさん
2006/11/08(水) 16:08:31>(なぜか$ARR_1と$ARR_2には同じ物へのリファレンスが入ってしまってます)
リファレンスが入った配列を代入したんだから、そうなっていて正常
>++$ARR_2[1][1];
ここでは実体を変えてる
昔の友達の電話番号にかけたら違う人が出た、みたいな
0136130
2006/11/08(水) 16:22:12私の認識が間違っておりました
ここに書いたのは省略したコードで
実際に詰まってしまった実コードはもっと複雑なスパゲティになっております
全部見直さなきゃ。
0137デフォルトの名無しさん
2006/11/09(木) 00:01:25(A B) (C D)
をSQL文
(x='%A%' or x='%B%') and (x='%C%' or x='%D%')
に変換するスクリプトを簡単に書く方法はないでしょうか?
Text::Balancedを使って()の対応はチェックしていますので、
()の対応は取れているという前提でやっているのですが
なかなか上手くいきません。
0138デフォルトの名無しさん
2006/11/09(木) 10:32:50このようにするしかないのでしょうか?
test(*OUT);
sub test {
local *FD = shift;
flock(FD, 2);
}
0139デフォルトの名無しさん
2006/11/09(木) 10:55:14index ($data,$key,2)を実行したら3が返ってきたので、
"能"の第二バイト\が原因と考えそれを他の文字に置き換えたら
正しく 4 が返ってきました。
で、今日こんな場合の上手い対処方法はないか質問しようと
もう一度、index ($data,$key,2)を何も手を加えずに実行したら
4が返ってきました。
indexの動作に何か環境条件が影響するんでしょうか?
0140139
2006/11/09(木) 10:57:500141デフォルトの名無しさん
2006/11/09(木) 12:25:32渡す方は、
open(FD, "hoge") or die;
test(*FD{IO});
または
my $fh;
open($fh, "hoge") or die;
test($fh);
受け取る方はどちらでも
sub test {
my $fh = shift;
}
ただし、perl 5.8 以降だった気がする
0143デフォルトの名無しさん
2006/11/09(木) 15:09:36間違っているわけではないけど、use strict できないし、古めかしい。
perl 5.6 以前のバージョンでは(記憶に間違いがなければ)、>>138のような
書き方をせざるを得なかったんじゃないかな。
0144138
2006/11/09(木) 15:43:130145デフォルトの名無しさん
2006/11/09(木) 15:46:20$twoBytes = '[\x81-\xFC][\x40-\xFC]';
$string =~ /^(?:$ascii|$twoBytes)*?(?:\Q$key\E)/;
これでマッチした位置をしる方法ないですか?
length $` は、0が返ってきました。
perl v5.6.1
0146デフォルトの名無しさん
2006/11/09(木) 15:56:30($*をいじってない限り)
0147145
2006/11/09(木) 16:17:31length ($string) - length ($key) - length ($')
0148デフォルトの名無しさん
2006/11/09(木) 16:56:34$string =~ /^(?:$ascii|$twoBytes)*?(?:\Q$key\E)/;
を
$string =~ /^(?:$ascii|$twoBytes)*?(\Q$key\E)/;
にかえて $-[1] じゃないか。$keyの部分がキャプチャされる
のがどうしても嫌なら
$string =~ /^(?:$ascii|$twoBytes)*?()(?:\Q$key\E)/;
でもいいがちと見難いかも。
$'はパターンマッチ使う場所がそこだけしかないような小さい
プログラムならいいが、一般的にはあまりお勧めしない。
0149デフォルトの名無しさん
2006/11/09(木) 17:16:56解決隅にレスるのもなんだが pos 使えば?
my $str = 'hogefugehagehoge' ;
print +( pos $str ) . "\n" while $str =~ /(hage)/g ;
0150145
2006/11/09(木) 17:59:53あっ、そっちの方が全然スマートですね。頂きます。
ところで、$' が芳しくない理由はどんなことに起因しますか?
参考サイトがあったら教えて下さい。勉強します
0151デフォルトの名無しさん
2006/11/09(木) 18:49:47> ところで、$' が芳しくない理由はどんなことに起因しますか?
添付マニュアルに書いてある。
0152デフォルトの名無しさん
2006/11/09(木) 19:37:06せっかく解答してくれてるのに>>149氏を無視すんなよ…
0154デフォルトの名無しさん
2006/11/09(木) 20:14:22153 は 149 です。150 さん御免。
0155デフォルトの名無しさん
2006/11/09(木) 20:15:04無視が許容されているから答える人がたくさん現われるのである。
0156145=150
2006/11/09(木) 20:47:33ごめん。
pos何て使ったことないから勉強のため、それも試したんだけど、
my $str = 'hogefugehagehoge';
print +( pos $str ) . "\n" while $str =~ /(hage)/g;
print $-[1];
--------------------------------
12
8
こんな答えがでたんで、どうレスつけていいか迷って。。。。
塚、プログラムの方が忙しくて、忘れてしまったです スマソ
0157デフォルトの名無しさん
2006/11/09(木) 21:05:54SCALAR に対して前回に m/ /g サーチが行われた場所を返す。この関数は、最後に
マッチした場所の次の文字のオフセットを返す・・。
programing Perl / 2nd Edition 改訂版 P.228 より。
0158デフォルトの名無しさん
2006/11/09(木) 22:59:34open $fh, $filename が使えないんなら、use FileHandleとかすればいいんじゃね?
0159デフォルトの名無しさん
2006/11/10(金) 17:00:16v5.8.8 builtを使用しています
system関数を使用して2〜3個のプログラムを連続で実行させようとしているのですが
「system("Perl hoge.pl < in.txt")」 が実行できません。
誰かご教授お願いします。
「system("Perl hoge.pl in.txt")」のほうはうまくいきました
試した例
my @cmd = ('perl', 'hoge.pl', '< in.txt');
my $ret = system @cmd;
my $cmd = 'perl hoge.pl < in.txt';
my $ret = system $cmd;
0160デフォルトの名無しさん
2006/11/10(金) 17:20:15質問するならOSなどの環境とどう動かないか(エラーが出るとか、一見動いたように見えるが
結果がこうなるはずなのにこうなったとか)を説明しろよ。
0161159
2006/11/10(金) 17:28:08すいません。
OS: XP
my $cmd = 'perl hoge.pl < in.txt';
my $ret = system $cmd;
print $ret;
を入れたところ、「65280」という値が返ってきて、失敗しました。
my @cmd = ('perl', 'hoge.pl', '< in.txt');
my $ret = system @cmd;
print $ret;
の場合はhoge.plは実行されますが、< in.txtが引数(@argv)と勘違いされてるのか標準入力がうまくいきませんでした。(入力画面で止まる)
0162デフォルトの名無しさん
2006/11/10(金) 17:36:41my $cmd = 'cmd perl hoge.pl < in.txt';
でどうかな?(試していないが)
0163159
2006/11/10(金) 18:28:36うまくいきませんでした。
my $cmd = 'cmd perl hoge.pl < in.txt';
my $ret = system ($cmd);
if ($ret != 0) {
print "error [$ret]\n";
}
で、試した所
error [65280]
となりました。
ちなみに
$ perl hoge.pl < in.txt とそのまま実行はできていますので、in.txtがない、名前を間違えてる等の間違いはないです。
0164デフォルトの名無しさん
2006/11/10(金) 19:04:14幾つか試してみたけれど、そのExit codeはhoge.plの中にエラーがある場合に帰ってきてるな。
hoge.plをもっと単純な内容に変えてやってみたらどうなる?
うちの環境(ActivePerl build 819 on Windows XP)では、
hoge.plを空のスクリプトや、標準入力の内容をそのまま表示するだけの内容にして
my $cmd = 'perl hoge.pl < in.txt';
my $ret = system $cmd;
でちゃんと動いてる
0165デフォルトの名無しさん
2006/11/10(金) 19:50:22色々試してくれてありがと。
hoge.plでは
print "好きな数字は?:";
$s=<STDIN>;
print "好きな数字は$s\n";
のみにしてみた。
in.txtは「1」だけ入れたけど、失敗
ちょっと。ActivePerl build 819に変えてやってみます。817だったので
0166デフォルトの名無しさん
2006/11/10(金) 20:32:06バージョンアップして駄目だったら、環境疑ったほうがよさそうだね。
んでかなり特殊な状況だけれど、その現象が起きる状態見っけた。
PERL5SHELL環境変数に値がセットされてないか調べてみれ。
それとPATHが通ってる場所に変なcmd.exeが無いかどうかも。
ttp://perldoc.jp/docs/perl/5.6.1/perlrun.pod#item_PERL5SHELL__specific_to_the_Win32_port_
0167159
2006/11/10(金) 20:46:44>PERL5SHELL環境変数に値がセットされてないか調べてみれ
>それとPATHが通ってる場所に変なcmd.exeが無いかどうかも
Path=C:\Program Files\MeCab\bin;C:\Perl\bin;C:\cygwin\bin;
PERL5SHELLはどうやってみる&変更するんでしょうか?
教えてもらえないでしょうかお願いします。
0168164=166
2006/11/10(金) 21:48:16# Perlの質問ではなくなってきてるけれど(;´Д`A
> Path=(snip);C:\cygwin\bin;
マテ、さっきプロンプトに$を使ってたがCygwin上のシェルからActivePerlを呼んでるのか。
> PERL5SHELLはどうやってみる&変更するんでしょうか?
見るには(コマンドプロンプトでもbashでも)setコマンド。
結果にPERL5SHELLが含まれてないか確認。
変更方法までは面倒見切れんので グ グ れ。
> PATHが通ってる場所に変なcmd.exeが無いかどうか
はCygwin上から使っててwhichを入れてあるなら
$ which cmd.exe
/cygdrive/c/WINDOWS/system32/cmd.exe
になっているかで確認できる。
これらが白ならいよいよ漏れには解らん。
0169159
2006/11/10(金) 22:00:28色々とありがとうございます
>マテ、さっきプロンプトに$を使ってたがCygwin上のシェルからActivePerlを呼んでるのか。
いえ、Windowsのコマンドプロンプトで使っています。
cygwinのパスを通してるだけです
>見るには(コマンドプロンプトでもbashでも)setコマンド。
>結果にPERL5SHELLが含まれてないか確認。
見てみますと、なかったので追加したんですが、うまく実行できませんでした
ながながとありがとうございます、今度友達のパソを借りて(違う環境で)試してみたいと思います
0170デフォルトの名無しさん
2006/11/10(金) 22:09:23後はCygwinのPerlが動いてたりとか。
0171デフォルトの名無しさん
2006/11/11(土) 10:53:49今度から業務移管で別の担当者が行うことになりました。
で、引き継ぎをしたら「CUIだと非常に使いにくい」とか
「GUIのコマンドラッパーみたいなもの作れないの?」と言われてます。
何か簡単に実現できるよい手はないでしょうか?
自分はckw+Nyacusで満足してたのですが・・。
0172デフォルトの名無しさん
2006/11/11(土) 10:54:15$ftp = Net::FTP->new
の$ftpをサブルーチンに渡すにはどうすればいいでしょうか?
&net($ftp);
sub net {
my $ftp = shift;
$ftp->ls;
}
のようにしたのですができないようです。
0173デフォルトの名無しさん
2006/11/11(土) 12:56:16変数に代入された値が数値か文字列かを
判別するにはどうすればいいんでしょうか?
0174デフォルトの名無しさん
2006/11/11(土) 13:14:46内部的には数値文字の区別ないよ
$string = '123xx';
$num = $string + 0;
print $string. " $num";
----------------
123xx 123
■ このスレッドは過去ログ倉庫に格納されています