Perl コーディング初心者質問コーナー Part25
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/06/28 01:18ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0497nobodyさん
03/07/11 22:02ID:???0498nobodyさん
03/07/11 22:36ID:???_┌┬┬┬┐_
――┴┴┴┴┴―、 __________
// ∧// ∧ ∧||. \ /
__[//____(゚_//[ ].゚Д゚,,) || _ \__ < >>497を逮捕しにきました
lロ|=☆= |ロロ゚|■■|■■∪警視庁■■|| \__________
| ∈口∋ ̄_l__l⌒l____|___l⌒l___||
 ̄ ̄`ー' ̄ `ー' `ー' `ー'
0500500
03/07/12 12:27ID:???0501441
03/07/12 13:00ID:???自分が >>441 で言った、
>自分が考えつくのは、
>ソケット通信で、
>地道にpostメソッドで渡す方法くらいなんですが・・・。
だと、とくに問題ないですか?
・・・っていうか、これって、可能ですよね?
0502nobodyさん
03/07/12 13:14ID:???倶愚ったけど、ほとんどインストールの解説で gzip とかヒットして探すの疲れた…
0503nobodyさん
03/07/12 13:31ID:???0504nobodyさん
03/07/12 13:44ID:???↑こういうのは無し。外部プログラム呼び出さないで、
perl 内ですませたいので
0505nobodyさん
03/07/12 13:58ID:???Compress::Zlib::memGunzip( $buff );
0506nobodyさん
03/07/12 15:56ID:???∫ _________
∧,,∧ ∬ /
ミ,,゚Д゚彡っ━~ < ご苦労!
_と~,, ~,,,ノ_. ∀ \
ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
0507nobodyさん
03/07/12 15:57ID:???0509nobodyさん
03/07/12 17:34ID:???全く反応が無いです。。。
エラーも出ないため、いや、何よりも初心者なので原因がつかめません。
ご教授お願い致しますm(__)m
sub dl{
if(!open(OUT,"$file")){&error(err_file);}
@DATA = <OUT>;
close(OUT);
$count = @DATA;
$delcount = $count - $in{'NO'};
if($delcount ne ""){
$no = $delcount;
$DATA[$no] = "";
}
if(!open(IN,">$file")){&error(err_file);}
print IN @DATA;
close(IN);
}
0510nobodyさん
03/07/12 17:38ID:???INとOUTが逆だな。
それはともかく、$DATA[$no] = "";のところを
print $no;
print $DATA[$no];
$DATA[$no] = "";
print $DATA[$no];
とやってみれ。
0511nobodyさん
03/07/12 17:49ID:p/T5Jtg4「逆ギレする質問者は釣りか荒らし」
ということで。
>>478
デバイスファイルがあればできるよ。
% perl
open(FILE, "/dev/cd0a") or die $!;
print <FILE>;
^D
CD001EP@@@@@@@@@@@@@@@@@IWANAMI_K4@@@@@@@@@@@@@@@@@騷@IWANAMI_K4
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IWANAMI SHOTEN
DAI NIPPON PRINTING CO,LTD
000000000000000
0000000000000000000000000000000000000000000000000CD001
CDDIC�dPWCTLG 榲PWDEMOUROKUUIDEsKOUJIEN懼SCREEN�ATAlGAIJI 殲TREAM
(略)
ほらね。ちなみに↑は広辞苑のCD-ROM。
0512nobodyさん
03/07/12 18:11ID:2K5dewsoいま、JAVAアプレットでCGIを呼び出してファイルをCGIが読み込んでその内容はアプレットに
返すっていう内容のを作っているんですが、CGIが内容を返すときにヘッダーの内容まで
送られてしまって、困っています。
最悪、その部分はJAVAの方で消してもいいんですが、できればCGIからの送信内容は
通信量の面でも軽くしたいし、ヘッダーの内容は送らないようにしたいんですが
可能でしょうか?
0513nobodyさん
03/07/12 18:16ID:???ありがとうございます。
print $no;------------�@
print $DATA[$no];-----�A
$DATA[$no] = "";
print $DATA[$no];-----�B
NO=8を与えてみたところ、
�@に[9]の表示のみとなりました。
$DATA[$no];-----�Aが無いのはどうしてでしょうか?
(゜▽゜;)
0515nobodyさん
03/07/12 18:27ID:p/T5Jtg4可能。nph使う。多くのサーバーでは、CGIスクリプトの名前の先頭に nph- と入れるだけでよい。
例: nph-test.cgi
#!/usr/bin/perl
print "data\n";
exit;
0516nobodyさん
03/07/12 18:30ID:???ちゃんと適当なスレに書け!
0517512
03/07/12 18:31ID:2K5dewsoありがとうございます。
早速やってみます。多謝
0518nobodyさん
03/07/12 18:44ID:???515>>
$DATA[$no];-----�A
前の処理で、スカラーに代入してました(゜゜;)
基本は printですね。。。初心に返ります。
ありがとうございました
0520nobodyさん
03/07/12 19:44ID:???nphでサーバゲットだぜっの時代があったねぇ
0521nobodyさん
03/07/12 19:56ID:???深い階層のディレクトリを作成する為に、
以下のコードを書いたんだけど、
もっと効率のいい方法は無い?
#!/usr/bin/perl
$d = './aaa/bbb/ccc/'; # まだ存在ディレクトリ構造
@list = split( /\//, $d );
shift @list;
foreach ( @list ) {
$t .= "$_\/";
mkdir( $t, 0755 );
print "$t\n";
}
0522nobodyさん
03/07/12 19:57ID:???○ $d = './aaa/bbb/ccc/'; # まだ存在しないディレクトリ構造
0523nobodyさん
03/07/12 20:01ID:p/T5Jtg4system qw(mkdir -p $d);
とかじゃ駄目?そういやモジュールもあった気がするけど覚えてない。
0524あぼーん
NGNG0525nobodyさん
03/07/12 20:02ID:p/T5Jtg4system("mkdir", "-p", $d);
0527nobodyさん
03/07/12 20:08ID:???ごめん。それだと、win系じゃ動かないんだ…(´д⊂ヾ
確か、win のシステムコール(API) は一発で深い階層の
ディレクトリ作ってくれるんだよね。だから、perl にも俺の
知らない関数かモジュールあるかと思って聞いてみたんだ。
まぁ、chdir しながら mkdir するよりはマシかな
0528nobodyさん
03/07/12 20:22ID:???って書いててもwin系なのか。難儀だな。
できないという結論?
File::Pathモジュールをつかう。
ディレクトリの作成だけじゃなく、一括削除もできるよ。
0531nobodyさん
03/07/12 21:31ID:???0532nobodyさん
03/07/12 21:32ID:i3OrVbjxというのがあるとエラーが出ました
それを
"ポテトサラダ"
にしたら正常に動くようになりました
何ででしょう?
0533nobodyさん
03/07/12 22:06ID:???0534nobodyさん
03/07/12 22:12ID:???0535nobodyさん
03/07/12 22:14ID:???「ポ」は 0x83 0x7c の2バイトで構成される。
qの区切り文字 | は 0x7c。
ポの2バイト目が区切り文字と同じコードのため、そこで q が閉じてしまうので
エラーになる。
0536nobodyさん
03/07/12 22:16ID:???EUCで書くようにすると幸せになれるかも。
0537nobodyさん
03/07/12 22:35ID:???0538nobodyさん
03/07/13 01:27ID:cL3G8Wfcmkpathしかなかろうに・・・・
0539あぼーん
NGNG0541nobodyさん
03/07/13 02:41ID:???例えば
@a=(1,2,3,4);
@b=(2,3);
ならば、2と3が取り出せる。
いい方法ない?
0542nobodyさん
03/07/13 02:58ID:???ttp://www.pure.co.jp/~learner/program/Perl_tips.html#array_ope
0544nobodyさん
03/07/13 03:52ID:???0545nobodyさん
03/07/13 04:27ID:zHTguhVXif($comment=~ /$ban_word/){&error();}
上記ケースにおいて、$ban_wordに「*」や「+」が指定されると構文エラーになります。
$comment=~ /*/をやればエラーになるのは明白なので原因はまあいいんですが、
Perlの組み込み関数に「メタ文字をすべてエスケープしてくれる」関数はなかったでしょうか。確か、
&escMeta('文字列');
みたいな使い方をすると文字列中の「*」は「\*」にエスケープされるような・・・
うろ覚えなのですが、心当たりありましたらご教授願います。
0547nobodyさん
03/07/13 04:41ID:nQJ8+8Yhquotemeta。
> &escMeta('文字列');
ここまで分かってるんなら、人に聞く前にperldoc perlfuncを開いてmetaで検索するとか
してみよう。
0548545
03/07/13 04:43ID:???どうりでescapeで探しても当たらないわけだ・・・
0549あぼーん
NGNG0550nobodyさん
03/07/13 14:14ID:eiBgp+lnif(!$a && !$b)
は、どういう意味でしょうか?
0552nobodyさん
03/07/13 14:27ID:???if($a=~/^0?$/ && $b=~/^0?$/)
0553nobodyさん
03/07/13 14:34ID:???0555nobodyさん
03/07/13 14:41ID:???http://pc2.2ch.net/test/read.cgi/php/1057947512/15-16
0556nobodyさん
03/07/13 15:37ID:6NfNIHy+Unixのmanを検索できるサイトなら知ってますが、あんなかんじで
0557nobodyさん
03/07/13 15:55ID:???windows上で開発するときの、注意点はなんでしょうか?
自分が知ってるのは、
●flockはWinでは使えないので、
eval(flock (LOCKF, LOCK_SH)); みたいにするってことくらいなのですが
0558nobodyさん
03/07/13 16:17ID:???パーミッションとか色々ありすぎて、並べ上げたらキリがないと思われ。
0559あぼーん
NGNG0560nobodyさん
03/07/13 16:30ID:???でもパーミッションは、perlそのものでなく、ファイルの問題だから、
FTPでアップするときに注意すればいいだけかと思うのですが・・・。
>並べ上げたらキリがないと思われ。
すいません、よかったら2,3、例を挙げていただけませんか?
自分には一個も他には思いつかず。
#ちなみに、Win2000です。
0561nobodyさん
03/07/13 17:01ID:???お前、>>438>>461>>465だろ
わからない文が出てくるたび毎回ここで聞く気か?
本でも買ってじっくり読むか文法のサイトでも行って基礎から勉強しろ
0562nobodyさん
03/07/13 17:09ID:nQJ8+8Yh$a = "0 but true";
$b = "0\n";
print ((!$a && !$b) ? "true\n" : "false\n");
print ((!($a != 0) && !($b != 0)) ? "true\n" : "false\n");
Perlの真偽はちゃんと覚えておかないと、そのうち火傷しまっせ。
0563nobodyさん
03/07/13 17:37ID:???プログラム上でファイルやディレクトリを作成する場合もあるだろ。
巷のフリー掲示板みたいにログファイルを666でアップしてください、
ってんなら別にいいけど。
#W2kならflockは使えた気がするのは気のせいでつかそうでつか。
#でもEWOULDBLOCKとかはサポートしてないんだよな。
0565nobodyさん
03/07/13 17:41ID:NX4Xoj87それで説明したつもりなのか?
リファレンスでもコピペしたようだな(プゲラ
これだから無知は。。
どこに真偽が判定されてるんだよ?
横に結果出力ぐらいつけてやれヴォケ
そんなんもできんのならここに来るな夏房
0566564
03/07/13 17:48ID:???そもそもUNIXにできてWindowsにできないっていう事しか存在しないんだから、
UNIXで動かそうとしてもどうしても動かないっていう状況は起きないので、大丈夫(?)
0567nobodyさん
03/07/13 17:51ID:???print !!$a . "\n";
print !!$b . "\n";
0568nobodyさん
03/07/13 17:57ID:???こりゃすげぇ
0570nobodyさん
03/07/13 18:22ID:???0573nobodyさん
03/07/13 18:55ID:???perl で実現するにはどうすればいいのでしょうか?
// c の場合
char * a [] = ( 'aaa', 'bbb', 'ccc' );
char * b = &a[1]; // b[0] = 'bbb'
;# perl の場合
@a = ( 'aaa', 'bbb', 'ccc' );
@b = @{ $a[1] }; # うまくいかない…
# @b にどう代入していいか解りません(´д⊂ヾ
0575nobodyさん
03/07/13 18:55ID:???char ** b = &a[1]; // b[0] = 'bbb'
0578nobodyさん
03/07/13 19:02ID:???>>565は、Perlでの真偽がどうかを説明するべき所で、
2つの論理和をとったものの真偽を表示するスクリプトを書いた点について怒ったのでしょう。
0579nobodyさん
03/07/13 19:08ID:???勘で答えると、
$b[0]に$a[1]を代入したいんでしょ?なら、$b[0] = $a[1]
あ、同じデータを2箇所から参照したいっていうことか。それは今のところできないなぁ。
\$b[0] = \$a[1]、う。文法エラー
0580nobodyさん
03/07/13 19:12ID:???コメントに書いてありますが
@b には @a[n] の様に添え字をして任意の位置から
参照できるようにしたいんです
@a = ( 'aaa', 'bbb', 'ccc' );
@b = $a[1]; # どう書いていいか解らない。@b には $a[1] からのリストとして代入したい
foreach ( @b ) {
print ;
}
0581573
03/07/13 19:13ID:???0582nobodyさん
03/07/13 19:25ID:???*方法1
@b = $a[-1], @a;
*方法2
@b = @a[1 .. $#a, 0];
0583nobodyさん
03/07/13 19:28ID:???0584nobodyさん
03/07/13 19:43ID:lgv8WpE5まだPerl勉強し始めて、2ヶ月ぐらいですので、敷居の高い改造であるかとは思いますが、手助けのほどお願いできませんでしょうか?
0585nobodyさん
03/07/13 19:49ID:???@b=@a[1..$#a];
$b=('aaa','bbb','ccc')[1];
@b=('aaa','bbb','ccc')[1..2];
で直接できると思った
$b=(localtime)[3];
見たいに必要な部分直接取ったりできるし。
($day,$mon)=(localtime)[3..4];
@data=(localtime)[3..4];
#($mon,$day)=(localtime)[4..3];#これは無理みたい
0586nobodyさん
03/07/13 20:18ID:???スレ違い
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0587565
03/07/13 20:22ID:DslkH4qSわからない人のためにな
>>562のを実行してたしかめろ!っていうのは初心者にとって嫌だとおもったから
0588nobodyさん
03/07/13 20:23ID:???my @a = ('aaa', 'bbb', 'ccc');
my @b = (\$a[1]);
printf("\${\$b[0]}\t%s\n", ${$b[0]});
printf("\$a[1] \t%s\n", $a[1]);
${$b[0]} = 'hoge';
printf("\${\$b[0]}\t%s\n", ${$b[0]});
printf("\$a[1] \t%s\n", $a[1]);
------------------------------
$ perl array.pl
${$b[0]} bbb
$a[1] bbb
${$b[0]} hoge
$a[1] hoge
C のソースから考えると、こういうこと?
0589584
03/07/13 20:25ID:lgv8WpE5スレ違いでしたか(汗
じゃあ案内先で再度質問させていただます
失礼しました(´Д`;)
0590nobodyさん
03/07/13 20:26ID:???http://www.roppongi-tv.net/00004/007.shtml
http://www.roppongi-tv.net/00004/hara.shtml
http://www.roppongi-tv.net/00004/shi.shtml
0592nobodyさん
03/07/13 21:02ID:???cronを使いたいんですがどうすればいいでしょうか?
0594nobodyさん
03/07/13 21:06ID:???■ このスレッドは過去ログ倉庫に格納されています