Perlについての質問箱 21箱目

このエントリーをはてなブックマークに追加
756クロエ
【1】@〜Mまでユーザーが任意に入力した数値を総計
【2】☆・△・■ ユーザーが任意入力した3つの数値を総計
【2】÷【1】を結果として表示
以上の様なCGIをプログラミングしてもらおうと、代行屋さんに見積もりしてもらいました。17000円との事でしたが、普通のお値段でしょうか?カモられていないか心配ですw
757デフォルトの名無しさん:2006/01/21(土) 00:09:11
え、オチは?
758デフォルトの名無しさん:2006/01/21(土) 00:10:46
一ヶ月20日として、一人月50万なら、
一日2.5万円。
半日で1.75万円。


まぁ妥当なとこじゃねーの?
759デフォルトの名無しさん:2006/01/21(土) 00:20:07
桁を一つ間違えているのかと思ったよ。
>>756のような頭の足りない人間の相手をしなきゃならんし。
760デフォルトの名無しさん:2006/01/21(土) 00:41:27
>>756
めちゃくちゃ安いな。
赤字でてるだろ向こうは。
761デフォルトの名無しさん:2006/01/21(土) 01:18:15
>>756
地域によっても違うが、かなり安い。(正直、自分だったらこんな仕事受けない)
ただ、こんなところで聞いても何の役にも立たない。
心配なら他の業者に合見積もりをとること。
762デフォルトの名無しさん:2006/01/21(土) 01:20:36
みんな優しいな。
763デフォルトの名無しさん:2006/01/21(土) 01:54:56
そんなので金とれるんだ・・・おれでもできるな・・・
学生だけど小使稼ぎと勉強がてらにコーディング出来るバイト探そうかな
764デフォルトの名無しさん:2006/01/21(土) 01:59:39
>756
>763 みたいな素人が作るとしたらもっと安くできる。ただし出来は......
765デフォルトの名無しさん:2006/01/21(土) 02:01:36
動きゃいいんだ・・・ちくしょう・・・
766デフォルトの名無しさん:2006/01/21(土) 11:07:58
>>756
それ間違いなくぼったくり。作成時間5分。
my @k = (1..14, '☆', '△', '■');
my ($s1, $s2) = (0) x 2;
for (@k) { print "$_ は? "; (/^\d+$/ ? $s1 : $s2) += <>; }
print join('+', grep /^\d+$/, @k), " = $s1\n";
print join('+', grep !/^\d+$/, @k), " = $s2\n";
print "$s2 / $s1 = ", $s2 / $s1;
767デフォルトの名無しさん:2006/01/21(土) 11:56:22
CGIなんだから入力用のページや結果出力用のページも作らないと。
1ページ辺りの相場は10000〜30000円程度、
CGIスクリプトはフルスクラッチで50000円くらい?
768デフォルトの名無しさん:2006/01/21(土) 12:00:26
>>766
せんせえ、それCGIになってねえっす。

あ、ちゃくっとuse CGIで技術サイトにあるようなForm部品むき出しのようなの
取って付けても駄目っす。
みっともなくない程度に最低限のデザインもしなきゃクライアントに怒られるっす。

それに加えて、概要設計書、詳細設計書、仕様書、テスト設計書とテスト結果、
それにまつわる数回の打ち合わせ、瑕疵対応まで入れて半人日17,000円で
じゃキツいっす。(この規模だから概要設計書と詳細設計書は仕様書で代用
させてもらうとしても・・・)
どんな小さな、たとえ3行スクリプト作成10秒でもCGI一本\17,000は安いっすよー

俺SOHOで今仕事に困ってますけど、その値段ではCGI作成は受けられないですぅ。
769デフォルトの名無しさん:2006/01/21(土) 12:07:29
>>766
そりゃ、こういう仕事やったことないなら、ボッタクリと思うかもしれんけどね。

CGIなんだから、それだけじゃ動かないだろ? フォームのHTMLの方も必要だし。

しかも>>756はどう見ても超ド級初心者なんだから、納品後に質問が来ることも
考えないといけない。「どうやって設置するの?」「FTPって何?」とか。
設置したサーバがメンテナンスに入っただけなのに、「動かない」と言ってくる
ことも考えられる。
(アフターサポート一切無しという契約でも、電話がかかってきて40分ロスするだ
けで、0.1人日くらいは損をする)

さらに納品書・仕様書や、請求書も作らないといけない。
打ち合わせなり納品時なりの交通費も問題だ。

そう考えると、>>761と同意見で俺は17000円では引き受けない。ペイしないもん。
フォームHTMLとセットで最低4-5万円はもらわないと。
770デフォルトの名無しさん:2006/01/21(土) 12:15:19
>>767-769
まあ、実務経験者と趣味でやってる素人の違いということで。
今頃766は顔真っ赤にしてるだろうから、そろそろ勘弁したれw
771デフォルトの名無しさん:2006/01/21(土) 12:18:52
世間知らずの学生とWeb屋はWebProg板逝け
772デフォルトの名無しさん:2006/01/21(土) 12:28:36
$txt="abcabc";
print $1 if $t=~/(a.*?$)/;
この場合、*? を使用しての最短一致なので abc となると思ったのですが、abcabc となります
なぜでしょうか?
773デフォルトの名無しさん:2006/01/21(土) 12:30:20
そりゃ終端へのマッチを要求してるからね。
774デフォルトの名無しさん:2006/01/21(土) 12:31:38
ああ違うか。どこから一致させるかとかは門外漢なので他の人に。
775デフォルトの名無しさん:2006/01/21(土) 12:36:07
>>772
「欲張りマッチ」でググる
776デフォルトの名無しさん:2006/01/21(土) 12:52:41
>>772
初心者が嵌りがちなとこ。よって、あんたはまっとうな初心者。
今後もまじめにやる気があるなら、推奨書を買いなされ。
777766:2006/01/21(土) 13:51:45
>>756
よくわからんけど暇な業者が必死っぽいのでこっちに張っておいた。
http://pc8.2ch.net/test/read.cgi/php/1036141603/
778デフォルトの名無しさん:2006/01/21(土) 14:23:22
Perlでhtmlファイルを書き出したいんですが、どこか解説サイトないですか?
分かりやすいサンプルでもいいのでお願いします。
779デフォルトの名無しさん:2006/01/21(土) 14:24:08
>>778
Google で検索ぐらいしろよ。
780デフォルトの名無しさん:2006/01/21(土) 14:34:36
open OUT, '>./out.html';
    print OUT '<html>';
close OUT;
781クロエ:2006/01/21(土) 16:34:45
板違いでしたね。ごめんなさい。
777さんありがとうございます。試してみます。
782デフォルトの名無しさん:2006/01/21(土) 16:58:05
>>776
推奨書ってこれ?
http://www.oreilly.co.jp/books/4873111307/toc.html

>>772
最短一致とか最長一致とかいう表現が悪いんだと思うよ。
非欲張りマッチと欲張りマッチって言うとまだマシ。

正規表現エンジンの気持ちになって考える。
1. abcabc に対して /(a.*?$)/ がマッチするか試し、NG なら次
2. bcabc に対して /(a.*?$)/ がマッチするか試す、NG なら次
3. cabc に対して /(a.*?$)/ がマッチするか試す、NG なら次
4. abc に対して /(a.*?$)/ がマッチするか試す、NG なら次
5. bc に対して /(a.*?$)/ がマッチするか試す、NG なら次
6. c に対して /(a.*?$)/ がマッチするか試す、NG なら次

で、1. でいきなり成功しちゃってるから。abcabc になる。

/.*(a.*?$)/ で欲張りマッチの方に余計なもの奪わせるといいんじゃね?
正規表現なんか使わない方が速そうだけど。
783デフォルトの名無しさん:2006/01/21(土) 18:51:42
世の中はライブドアでそうぞうしいわけだが、
こうなるとPerlスレとしては小飼さんの様子が
気になるな。
784デフォルトの名無しさん:2006/01/21(土) 20:11:43
>>783
ふつーに元気そうですが。
ttp://blog.livedoor.jp/dankogai/

この間もEncodeのバージョン上げてたしねぇ。

785デフォルトの名無しさん:2006/01/21(土) 21:25:52 BE:596111696-
な、なんだってー
786デフォルトの名無しさん:2006/01/21(土) 21:34:58
ついにperl、情報処理試験のプログラム問題に出るようになりましたね^^
今パンフレット見てて気づいた。
787デフォルトの名無しさん:2006/01/21(土) 21:36:17
あげ
788デフォルトの名無しさん:2006/01/21(土) 21:37:02
教育用言語としてPerlを出すのは如何な物かと思うが……
789デフォルトの名無しさん:2006/01/21(土) 21:58:08
マジか!情報処理受けるからCやらなきゃと思ってた矢先に超ラッキー
790デフォルトの名無しさん:2006/01/21(土) 22:06:46
でも、perlは高度区分で出題されるみたい
791デフォルトの名無しさん:2006/01/21(土) 22:15:05
なんと言うか、そういう試験にいくらでも書き方があるPerlを使うのは間違ってる気がする
brainfuckとまではいかないが、言語仕様が明確で簡潔な言語を使用するべきだと思う
792デフォルトの名無しさん:2006/01/21(土) 22:17:02
Schemeだな
793デフォルトの名無しさん:2006/01/21(土) 22:18:50
>>790
あれ? 高度区分は疑似言語しか出ないんじゃなかったっけ?
プログラミング言語自体が出題されるのは第二種(今の"基本")だけだったような

まぁ、はるか昔のことなのでもう忘れたが
794デフォルトの名無しさん:2006/01/21(土) 22:45:02
>>793
僕もあまり詳しく無いんですけど、テクカルエンジニア(情報セキュリティ)試験でC++,Java,Perlが使われるみたいです。
巻末にCASLUの仕様書とPerlの仕様書が付いてます。

IPA テクカルエンジニア(情報セキュリティ)
http://www.jitec.jp/1_13download/leaflet_200509-ts.pdf
795デフォルトの名無しさん:2006/01/21(土) 22:47:51
このスレも流行っちゃいそうだな
796デフォルトの名無しさん:2006/01/21(土) 22:50:22
いい事だ
797デフォルトの名無しさん:2006/01/21(土) 23:39:22
Perlの「仕様」wwww
798デフォルトの名無しさん:2006/01/21(土) 23:40:59
試験に申し込むとラクダ本がついてくるならうれしいな。
799デフォルトの名無しさん:2006/01/21(土) 23:49:03
やべ、ラクダ本一時的に売り切れるかもしれんな
下巻今のうちに買っておこう
800デフォルトの名無しさん:2006/01/22(日) 00:13:17
あと2,3ヶ月もすると春やねぇ
801デフォルトの名無しさん:2006/01/22(日) 09:14:00
---hoge.pl---
use strict;
my $hoge = require './abc.pl';
print $hoge->{a};
------

---abc.pl---
$VAR = { a => 123, b => 456};
------

mod_perlの環境で動かすと2回目以降のアクセスで
Can't use string ("1") as a HASH ref while "strict refs" in use at hoge.pl
が出てしまいます。
これは1回目は$hogeには$VARが代入されるが2回目以降はコンパイル済みなのでrequireが1を
返すためだと思われます。
$INC{abc.pl}を意図的に消せば毎回読み直してくれますが他に良いアイディアはありませんでしょうか?
802デフォルトの名無しさん:2006/01/22(日) 09:38:09
>>801
つdo './abc.pl';
ってかrequireの戻り値はエラーが発生したかどうか調べるためのものだから、
そういう風に使うのは避けたほうがいいかと思うが
803デフォルトの名無しさん:2006/01/22(日) 10:07:22
doで解決しました。ありがとうございました。
Data::Dumperで出力した値をよくこの手法でデシリアライズしたりしていたのですが
requireだとファイルに文法エラーや存在しなかったりするとエラーになるので
doの方がいいかもしれませんね。エラー出さない方が良いのかは微妙ですけど。
このような目的では本来はData::Serializerを使うべきなんでしょうけどお手軽なので
やめれません-_-;
804デフォルトの名無しさん:2006/01/22(日) 10:17:04
それは人として正しいです
805ヽ(´ー`)ノ ◆.ogCuANUcE :2006/01/22(日) 11:54:17
普通 Storable じゃね?store/retrieve 使えば手軽だし。
806デフォルトの名無しさん:2006/01/22(日) 12:37:01
>>790
出題「この処理を実現できるモジュールを、CPANからみつけなさい」 とか
807デフォルトの名無しさん:2006/01/22(日) 13:37:54
5.8.8-RC1リリース。問題なければ今月中に正式版出るかな
ttp://use.perl.org/articles/06/01/21/1733227.shtml
808デフォルトの名無しさん:2006/01/22(日) 13:47:48
何が変わったのかしら
わくてか
809デフォルトの名無しさん:2006/01/22(日) 13:57:38
子飼氏、この間バタバタだからEncoding関係の改善は期待できんか
810デフォルトの名無しさん:2006/01/22(日) 14:43:39
>>805
時にはファイルを手で弄りたいときもあるのです。
セキュリティ・速度よりも何よりも手軽さを優先したい時はDumperが便利!
後で他のシリアライザに変更するのもそれほど手間じゃないし。
811デフォルトの名無しさん:2006/01/22(日) 21:08:48
>>809
改善って、どんな希望があるの?
812デフォルトの名無しさん:2006/01/22(日) 21:34:29
webprog板おもすれー( ^ω^)
813デフォルトの名無しさん:2006/01/23(月) 02:11:22
>>812
まぢで。おまえどのスレがおもすれー( ^ω^)のかおしえてけろよん
814デフォルトの名無しさん:2006/01/23(月) 02:13:33
#! c:/perl/bin/perl
#カウントファイルの読み込み
open(IN,"<./count.dat");
$count=<IN>;
close(IN);
++$count;
#カウントファイル書き込み
open(OUT,">./count.dat");
print OUT $count;
close(OUT);
#鯖出力
print<<END;
Content-type:text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>アクセスカウンタ</head></title>
<body>
あなたは$count番目の訪問者
</body></html>
END








文法チェックでは通るんだが
[Mon Jan 23 02:07:40 2006] [error] [client 127.0.0.1] malformed header from script. Bad header=<!DOCTYPE HTML PUBLIC "-//W3C/: 3-3.cgi, referer: http://127.0.0.1/tendaysmyself/3-3/
ってエラーが出ます。
815デフォルトの名無しさん:2006/01/23(月) 02:25:04
Content-type:text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

1行空ける
816デフォルトの名無しさん:2006/01/23(月) 02:33:24
>>813
低レベルすぎておもすれー( ^ω^)なのです
817デフォルトの名無しさん:2006/01/23(月) 03:03:51
( ^ω^)あなたもわたしもVIPPER!(^ω^ )
818デフォルトの名無しさん:2006/01/23(月) 06:53:07
>>815
ありがつございます。
ず〜っとコレで詰まってました。
助かりました。
819デフォルトの名無しさん:2006/01/23(月) 07:37:34
>>818
こういうのはPerlに関する問題じゃないから、次からはCGIの質問はWebProg板行ってくれよ。
>>1
> CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
> CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
> WEBプログラミング板に行って聞いたほうが得ですよ。
820デフォルトの名無しさん:2006/01/23(月) 09:11:17
perl で ビットの扱いに関する質問です。

-------
my $val = 10;
my @result = &hoge( $val );

sub hoge{
 my $val = shift;

 # 2進数に変換し、1がたっている箇所だけ10進数にして返す。
 # (例) 10 => (1010) = 2^3 + 2^1 = 8 + 2
  # return で (8,2) を Array で返したいです。

}
-------
Perlだとこういう場合どういう風にするもんなんでしょうか?
821デフォルトの名無しさん:2006/01/23(月) 09:32:04
>>820
自分が以前に作ったのはこんなん
65536 より小さい数しか扱わないことがわかってたから
for 文での開始数を 16 にしてるけど増やせばまだ大丈夫と思う

sub hoge {
  my $val = shift;
  my @ret = ();

  for (my $i = 16; $i >= 0; $i--) {
    my $power = 2 ** $i;
    if ( int ($val / $power) != 0) {
      $val %= $power;
      push (@ret, $power);
    }
  }

  return @ret;
}
もっといい方法あったら教えてください
822デフォルトの名無しさん:2006/01/23(月) 09:55:47
>>820
何に使うのか知らないけどそれ遠回りしてる気がするなあ

sub hoge {
    my $val = shift;
    my @ret = ();
    my $flag = 1;

    do{
        $val & 1 and push @ret, $flag;
        $flag <<= 1;
    }while( $val >>= 1 );
    return reverse @ret;
}
823デフォルトの名無しさん:2006/01/23(月) 10:10:54
>>822
pushしてreverseならunshiftでいいんじゃないのだろうか。
824デフォルトの名無しさん:2006/01/23(月) 10:39:21
825デフォルトの名無しさん:2006/01/23(月) 10:49:02
sub hoge($){
my $val = shift;
my @retval;
while ($val != 0){
my $ntz = $val&(-$val);
unshift @retval, $ntz;
$val -= $ntz;
}
return @retval;
}
826デフォルトの名無しさん:2006/01/23(月) 11:22:22
>>825
負の数はどうするの?
827デフォルトの名無しさん:2006/01/23(月) 12:29:08
sub hoge {
        my $val = shift;
        my $n = 2**32;
        map { $n/=2; $_ ? $n : (); } split(//,unpack("B32",pack("N",$val)));
}
828デフォルトの名無しさん:2006/01/23(月) 13:13:26
どうもこうも無いよ氏ね
829デフォルトの名無しさん:2006/01/23(月) 14:10:03
入力ストリームの一行読み込み処理で、一行の区切りを \n でなく、
%0A 区切りにして一行ずつ読込みたいのですが、
調べたら「$/」に区切り文字入れろって書いてありました。
ただ、これだと入力ストリーム全部が%0A区切り読み込みになってしまうので困ります。
ストリーム個別に読込区切り文字を指定する方法がないでしょうか?

$/='%0A'; #←ストリームを指定したいができない
print $_=<DATA>; # aiueo%0D%0Aを出力
__END__
aiueo%0D%0Akakikukeko%0D%0Asasi(ryaku
830デフォルトの名無しさん:2006/01/23(月) 14:53:16
その個別のストリームとやらを使用する前に$/に毎回入れてやればいいんじゃ
831デフォルトの名無しさん:2006/01/23(月) 15:34:52
見せてもらおうか、ストリーム前の$/の使い方とやらを!
832デフォルトの名無しさん:2006/01/23(月) 15:57:20
は?
833デフォルトの名無しさん:2006/01/23(月) 16:07:03
>>829
必要なところで local を使って代入するか、
IO::Handle->input_record_separator() を使うか。

perldoc perlvar に書いてあるサンプルを読めば、普通は思い付くと思うんだが…。
834デフォルトの名無しさん:2006/01/23(月) 16:13:33
坊やだからさ
835デフォルトの名無しさん:2006/01/23(月) 16:23:26
無駄に煽るのもこのスレの特徴、と
836デフォルトの名無しさん:2006/01/23(月) 16:27:28
お前だけだバーカ
837デフォルトの名無しさん:2006/01/23(月) 16:28:11
なんかこのスレレベル低下してる気がする
変な奴はwebprog行けよw
838デフォルトの名無しさん:2006/01/23(月) 16:32:20
>>834-839
この辺まとめてだな。俺もかよ
839デフォルトの名無しさん:2006/01/23(月) 16:40:00
さぁ殺伐としたふいんきになって参りました
840デフォルトの名無しさん:2006/01/23(月) 17:22:24
殺伐としたこのスレに珍走団が!!
       ___
       /孕/二                    パラリラパラリラ
     。 / ̄ −    。 −    。 。 。 −    __
    o孕o三     @孕@三  o孕孕孕o三  /孕/   。 −
         。 −                 / ̄ ̄    o孕o三
        o孕o三            _/ ̄ ̄\_//=3
       ___       。 −   ━┷-○ー○ー┘三
       /孕/二     o孕o三      。 −
     。 / ̄ −  。 −           @u@三     。 −
    o孕o三    o孕o三    ワーワー         @孕@三
841デフォルトの名無しさん:2006/01/23(月) 17:23:26
いやつまんないから・・・
842デフォルトの名無しさん:2006/01/23(月) 18:32:18
新宿にPerlだかpearlっていうバーがあったけどオフやるときはここでやろうぜっ!
あとプロピアもバーの近くにあるからラリーも呼んで。
843831:2006/01/23(月) 18:50:18
そろそろWebprog版へ帰ります。探さないで下さい
844 ◆TWARamEjuA :2006/01/23(月) 19:32:38 BE:3812257-
WebProg931実装キボンヌ
845デフォルトの名無しさん:2006/01/23(月) 22:02:26
俺様だけ賢いと思い込んでいる厨がいらっしゃるようでつね。
846829:2006/01/24(火) 01:50:42
>>833
キタコレ!調べてみる!サンクスおにいさん!

>perldoc perlvar に書いてあるサンプルを読めば、普通は思い付くと思うんだが…。
坊やだからさ。サンクスおにいさん!

って、あんだよ!input_record_separatorのソース見たらまんま >>830 じゃねーか
スレッドとかmod_perlとかに弱そうだったからグローバル変数での切替はイヤだったんだよ!うんこ!みたいな。

sub input_record_separator {
  my $old = new SelectSaver qualify($_[0], caller);
  my $prev = $/;
  $/ = $_[1] if @_ > 1;
  $prev;
}

このソース見る限り、ストリームごとに個別に設定は無理そうですね。
ありがとうございます。
847829:2006/01/24(火) 01:53:11
そしてWebprog版へ帰ります。行ったこと無いけど。
848デフォルトの名無しさん:2006/01/24(火) 09:30:06
>>842
そんな名前のバーは世界中にありそうな気がする。
849デフォルトの名無しさん:2006/01/24(火) 09:47:34
そんな名前の楽器会社もありそうな気がする
850デフォルトの名無しさん:2006/01/24(火) 10:01:28
こんなスレ見てないで仕事しろ
851デフォルトの名無しさん:2006/01/24(火) 10:05:15
>>850
まさに今仕事中に見ている俺に、そんな注意をするおまいは俺の上司か!?
それとも俺のディスプレイ見つめてる後ろの席の奴か!?こわいわ!
852デフォルトの名無しさん:2006/01/24(火) 18:00:55
sysopen 使って

Argument "O_RDONLY" isn't numeric in sysopen at HOGE.pl in line 31.

というエラーが出てくるのですが
O_RDONLY ってあってますよね。。。
どなたかこうなる理由に心当たりあるかたお願いします。

# HOGE.pl line 31
sysopen IN, $file, O_RDONLY, 0400 or die "Can't open '$file' : $!";
853852:2006/01/24(火) 18:13:24
『質問すると自己解決できる』の法則。。。
すみません;;
854デフォルトの名無しさん:2006/01/24(火) 19:02:48
>>852
法則?
普段からよく調べもせずに質問するからそうなる。
855デフォルトの名無しさん:2006/01/24(火) 19:26:56
>>853
> 『質問すると自己解決できる』の法則。。。
> すみません;;

質問しようとすると問題点を頭の中で整理するため、
答が見えることがあるわけです。
856デフォルトの名無しさん:2006/01/24(火) 20:10:34
>>852
use Fcntl;
857デフォルトの名無しさん:2006/01/24(火) 23:21:20
ほんとこいつらは難癖付けないと気が済まないんだなw
他人事だと思ってもイライラしてくるわw
周りから嫌われてそう
858デフォルトの名無しさん:2006/01/24(火) 23:39:49
たぶん、先輩とかにやられた過去があるんだよ。多くの人に。
最初はみんな不快だったはずだ。
が、この業界はこんなもの、と慣れてしまった。
そして同じ事を平気でするようになる。
859デフォルトの名無しさん:2006/01/24(火) 23:42:04
>>857
>>746の人? それも難癖のような気が。
860デフォルトの名無しさん:2006/01/24(火) 23:50:50

任意の10進数を16 bitの二進数データに変換したい場合について質問させてください。
下のように記述しても、何故か8bit分の文字列しか帰ってきません。
お手数ですが御教授頂けないでしょうか。


$data = 72;
$out_data=unpack("B16",pack("C*",$data));

$out_dataに、"0000000001001000"が戻ってくることを
期待しますが、"01001000"が戻ってきます。
861デフォルトの名無しさん:2006/01/24(火) 23:53:52
>>858
なるほど

>>859
チガウヨ
862デフォルトの名無しさん:2006/01/25(水) 00:42:24
>>860
pack() の型指定子に 'C' 使ってるから

$out_data = unpack("B16", pack("s*", $data));

以下、perlfunc から引用

s A signed short value.
S An unsigned short value.
 (This 'short' is _exactly_ 16 bits, which may differ from
  what a local C compiler calls 'short'. If you want
  native-length shorts, use the '!' suffix.)
863デフォルトの名無しさん:2006/01/25(水) 01:56:16
>>863

御教授ありがとうございます。
重ねて質問をよろしいでしょうか。

教えて頂いた方法で、例えば
"$out_data = unpack("B16", pack("s*", 511)); "
10進"511"は、2進"111111111"(1x9個)ですので、
出力が

で、実行してみますと、
"1111111100000001"が出力されます。そこで、教えて頂いた事と
エンディアンを考慮してpack()の型数に"n"を使用してみました。
"$out_data = unpack("B16", pack("n*", 511)); "

すると出力は"0000000111111111"となり、所望の結果となりました。
ですが、今度は24bit"000000000000000111111111"で出力させようと思い、
"$out_data = unpack("B16", pack("N*", 511)); "
で実行すると、"000000000000000000000001"と出力されてしまいます。

これを,"000000000000000111111111"と出力させるには如何したらよろしいでしょうか。
御多忙の折に申し訳ありませんが、御教授頂けましたら幸いです。よろしくお願いいたします。
864デフォルトの名無しさん:2006/01/25(水) 01:58:46
>>860 = 863 です。以下、訂正です。

>> 862 様

御教授ありがとうございます。
重ねて質問をよろしいでしょうか。

教えて頂いた方法で、例えば
"$out_data = unpack("B16", pack("s*", 511)); "
10進"511"は、2進"111111111"(1x9個)ですので、
出力がは"0000000111111111"を期待します。

で、実行してみますと、
"1111111100000001"が出力されます。そこで、教えて頂いた事と
エンディアンを考慮してpack()の型数に"n"を使用してみました。
"$out_data = unpack("B16", pack("n*", 511)); "

すると出力は"0000000111111111"となり、所望の結果となりました。
ですが、今度は24bit"000000000000000111111111"で出力させようと思い、
"$out_data = unpack("B16", pack("N*", 511)); "
で実行すると、"000000000000000000000001"と出力されてしまいます。

これを,"000000000000000111111111"と出力させるには如何したらよろしいでしょうか。
御多忙の折に申し訳ありませんが、御教授頂けましたら幸いです。よろしくお願いいたします。
865デフォルトの名無しさん:2006/01/25(水) 02:32:30
substr(unpack('B*', pack('N', 511)), 8)
但しNが32ビットである場合のみ有効。
N は big-endian で unsigned long ということは保障されていても
unsigned long が 32 ビットであることは保障されていない。

866デフォルトの名無しさん:2006/01/25(水) 04:03:37
$data = 72;
$bit = 24; #表示させたいビット数
foreach(1..$bit){
    if($data & 1 << $bit - $_){
        print "1";
    }
    else{
        print "0";
    }
}

これじゃだめか?
867デフォルトの名無しさん:2006/01/25(水) 09:12:07
Perlで書かれたHTTPDってどこかにありますか?
inetdから起動される簡単なものでいいんですが・・・
868デフォルトの名無しさん:2006/01/25(水) 09:19:14
>>865
いつからかはわからないですが今は32bitであることが保証されています。
5.8.7のperlfunc(1)のpackの項から抜き出したものですが、最後のカッコ内
に注目。

n An unsigned short in "network" (big-endian) order.
N An unsigned long in "network" (big-endian) order.
v An unsigned short in "VAX" (little-endian) order.
V An unsigned long in "VAX" (little-endian) order.
(These 'shorts' and 'longs' are _exactly_ 16 bits and
_exactly_ 32 bits, respectively.)

869ヽ(´ー`)ノ ◆.ogCuANUcE :2006/01/25(水) 09:33:36
>>867
> Perlで書かれたHTTPDってどこかにありますか?
HTTP::Daemon とか。

> inetdから起動される簡単なものでいいんですが・・・
こっちはしらね。
870デフォルトの名無しさん:2006/01/25(水) 10:12:50
>>868
あ、本当だ。32ビットは保証されていたのか。
やっぱ互換性を保ちたいということかな。
(そういや昔は Perl バージョンアップしたら
動かなくなるスクリプトあったな…)
871デフォルトの名無しさん:2006/01/25(水) 10:32:30
>>869
ローカルのドキュメントを表示するだけのものが欲しかったんですが、
これだけでOKでした・・・

#!/usr/local/bin/perl
$METHOD=<STDIN>;
$PATH=$1 if $METHOD=~/GET (.+) HTTP/;
if(! -f $PATH){exit}
undef $/;
open FH,"$PATH";
$document=<FH>;
close FH;
print STDOUT $document;

これと/etc/inetd.confに下の一行を追加して、
http stream tcp nowait root /home/junya/bin/httpd.pl httpd.pl

ブラウザからこんな感じで
http://localhost:80/usr/share/doc/...

つか、これならシェルで十分すね・・・
872ヽ(´ー`)ノ ◆.ogCuANUcE :2006/01/25(水) 11:06:50
>>871
それ、
"GET /etc/passwd HTTP/1.1"
とか送り付けられたらヤバくね?
873デフォルトの名無しさん:2006/01/25(水) 11:16:17
>>872
/etc/hosts.allow,/etc/hosts.denyで規制してるし、どうせローカルでしか使わないし。
でもあんまり良くないかな。
874デフォルトの名無しさん:2006/01/25(水) 11:54:54
>>860
>任意の10進数を16 bitの二進数データに変換したい場合について質問させてください。

sprintfを使え。
つーか、これまでそう言った人がいないのは、どうしたわけだろうか?
875デフォルトの名無しさん:2006/01/25(水) 12:04:44
>>874
「○進数を×進数に…」の質問は散々既出なので、sprintf の %b を
知ってる間は質問を読みもしない。
876デフォルトの名無しさん:2006/01/25(水) 12:54:56
すみません教えてください

setenv CLASSPATH…
が羅列されたcshファイルを
シェルのsourceのように
perlの中から読み込んで、環境変数CLASSPATHに設定すること
は出来ますか?
877デフォルトの名無しさん:2006/01/25(水) 13:22:20
878デフォルトの名無しさん:2006/01/25(水) 13:36:13
>>876
$ENV{CLASSPATH} = `csh -c 'source $csh_file >/dev/null ; echo -n \$CLASSPATH'`;
879デフォルトの名無しさん:2006/01/25(水) 13:49:20
出来ました!
ありがとう!

先ほどsage忘れました、ごめんなさい
880デフォルトの名無しさん:2006/01/25(水) 20:49:29
Perl初心者です
UNIXコマンドでのwc -lのようにファイルの中の行数を
出力するにはPerlでどうすればできますか?
881デフォルトの名無しさん:2006/01/25(水) 20:54:09

>Perl初心者です

あっそ、だから何
882デフォルトの名無しさん:2006/01/25(水) 21:01:39
>>880
print `wc -l foo.txt`;
883デフォルトの名無しさん:2006/01/25(水) 21:10:22
人間としての器の差だなw
884デフォルトの名無しさん:2006/01/25(水) 22:04:53
>>880
ファイルを開いて
open my $fh, 'file' or die "Can't open file: $!";

後は数える。
my $c = 0;
$c++ while <$fh>;

富豪的解法
my $c = scalar @{[ <$fh> ]};

閉じるのをお忘れなく
close $fh;

おまけのワンライナー
perl -ne 'END { print $. }' < file

>>881
「初心者」を振りかざして免罪符にしようとするのであれば確かにそれは間違っているが、
あまり詳しくないことを初めに言っておくことは質問方法として重要なことだと思うが?
まあこの場合は質問内容からそれが解るし、自らはどのようにやってみた等が欠けてはいるけど。
この回答でも「Perl初心者です」という一言があるからこそ、
ファイルの開き方を軽く説明しているつもりだし。
885デフォルトの名無しさん:2006/01/25(水) 22:22:13
>>881
は、人生の初心者でした。
886デフォルトの名無しさん:2006/01/25(水) 22:25:02
( ´д)ヒソ(´д`)ヒソ(д` )
887デフォルトの名無しさん:2006/01/25(水) 23:07:19
もうこのスレwebprogと併合しろよ
888デフォルトの名無しさん:2006/01/25(水) 23:08:05
5.9.3はいつでるの?
889860:2006/01/25(水) 23:08:21
865,866,874様

御教授ありがとうございました。
sprintfに "b"があるとは知りませんでした。

866様の例も勉強になりました。
大変ありがとうございました。
890デフォルトの名無しさん:2006/01/25(水) 23:11:04
>>884に同意。
何かこのスレ潰そうってかperlを貶めようってかしてる椰子が
1個流れてるな。
891860:2006/01/25(水) 23:14:07
・・・。










>>」881
氏ねや ゴミはよ!
892デフォルトの名無しさん:2006/01/25(水) 23:14:47
>>872
phfを思い出した
893デフォルトの名無しさん:2006/01/25(水) 23:56:47
ぎゃっはっは
初心者を煽るのを含めて楽しもうぜ
894デフォルトの名無しさん:2006/01/26(木) 01:24:05
VIPでやれ
895デフォルトの名無しさん:2006/01/26(木) 01:31:43
vip以外でvipでやれっていうの始めてみた
896デフォルトの名無しさん:2006/01/26(木) 05:30:04
まんこぉー
897デフォルトの名無しさん:2006/01/26(木) 05:53:23
何なんだこの荒れようは…
898デフォルトの名無しさん:2006/01/26(木) 07:55:42
WebProgのPerl貶しスレ辺りから変なのが沸いてきたんじゃないかな。
長い間いい感じで進行してたのに残念ですな。
899デフォルトの名無しさん:2006/01/26(木) 13:13:29
なんでもかんでもWebProg板のせいにする奴が出てきてから荒れてきた
900デフォルトの名無しさん:2006/01/26(木) 14:16:35
その前に難癖厨が・・
901デフォルトの名無しさん:2006/01/26(木) 14:40:25
一部残っていた卵がふ化したんだろう
902デフォルトの名無しさん:2006/01/26(木) 17:06:37
hashを書いたファイルを作成して、requireで読み込んでそのまま使おうとしています。

---------------------
・ファイルの中身
%s=('id',q(1),'name',q(40),'logouttime',q(2006-01-26 15:38:36),'m',q(1),'rowsize',q(10),'s',q(7f02f000320007d0106a));
---------------------
・ソース
if (ろぐいんok) {
 require ふぁいる;
 %mainhash = %s;
}
---------------------

普通に使えていたのですが、use strictを入れたらフォーカスがあいまい?だと怒られた為、
---------------------
・ソース
if (ろぐいんok) {
 my %s;
 require ふぁいる;
 %mainhash = %s;
}
---------------------
のようにしたのですが、これですとエラーは出なくなるのですが、
my %sとrequire内の%sが別扱いになってしまうのか、hashが空で読み込まれるようになってしまいました。

requireを使う前提で、なにか解決策などありますでしょうか。
ファイルのデータ構造を変えて普通にファイルとして読み込んでからハッシュに格納するようにすればいいんでしょうが、
こういう使い方ができないのかどうか激しく疑問です。。

以上、ご教授よろしくお願いします。
903デフォルトの名無しさん:2006/01/26(木) 17:35:01
>>902
our %s=〜 で明示的にグローバルにするか、
ハッシュの中身を返すサブルーチンに替える。
904デフォルトの名無しさん:2006/01/26(木) 17:56:45
>>902
 %mainhash = require ふぁいる;
っていけないのかな?
試してないけど。
905デフォルトの名無しさん:2006/01/26(木) 18:04:21
>>902
この場合は require を使う方が面倒が起きるんだけどな。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq8.html#what_s_the_difference_between_require_and_use

---------------------
・ファイルの中身
{'id',q(1),'name',q(40),'logouttime',q(2006-01-26 15:38:36),'m',q(1),'rowsize',q(10),'s',q(7f02f000320007d0106a)};
---------------------
・ソース
if (ろぐいんok) {
  my %mainhash = %{ do ふぁいる };
}
---------------------
906デフォルトの名無しさん:2006/01/26(木) 18:07:58
>>903
ありがとうございます。
ourは気持ちわるいっすね。。
サブルーチンに変えるというのはこういう解釈で問題ないでしょうか。
---------------------
・ファイルの中身
sub fileread() {%s=('id',q(1),'name',q(40),'logouttime',q(2006-01-26 15:38:36),'m',q(1),'rowsize',q(10),'s',q(7f02f000320007d0106a));}
---------------------

>>904
それは試したんですが、無理でしたです。
すみません、説明不足でした。
907デフォルトの名無しさん:2006/01/26(木) 18:21:14
>>906
訂正
---------------------
・ファイルの中身
sub fileread() {my %s; %s=('id',q(1),'name',q(40),'logouttime',q(2006-01-26 15:38:36),'m',q(1),'rowsize',q(10),'s',q(7f02f000320007d0106a)); return %s;}

>>905
ありがとうございます、できました!
動いてた頃よりもソースが美しいっす!


>>903-905
ありがとうございました。
908デフォルトの名無しさん:2006/01/26(木) 18:21:59
our より、
> hashを書いたファイルを作成して、requireで読み込んでそのまま使おうとしています。
の方がキモいけどなぁ。
909デフォルトの名無しさん:2006/01/26(木) 18:39:11
Visual Perlってもう手に入らないんですか?
インストーラ自体はFTPにあったのですが、インストールしても
ライセンスがないというダイアログが出てはじかれてしまうんですよ。
オフィシャルの
b) provide unlimited licenses for the current 2003/2002 plug-ins;
ってのはKomodoのライセンス持ってる人にだけってことでしょうか?
910デフォルトの名無しさん:2006/01/26(木) 19:18:16
Perlなんてエディタで書けよ・・・
911デフォルトの名無しさん:2006/01/26(木) 19:53:49
TMTOWTDI
912デフォルトの名無しさん:2006/01/26(木) 21:02:13
すいません、質問です。
ある2つの配列のハッシュ(%A, %B)で、各 key に対する値が、A, B ともに
あったら、それを A から削除したいのですが、よい方法ありますでしょうか。

今、思いつくのはこんな感じです・・・
foreach $key ( keys %A ) {
foreach $i ( 0 .. $#{ $A{$key} } ) {
if ($A{$key}[$i] = $B{$key}[$i]) {
ここで削除処理 ?
}
}
}



913デフォルトの名無しさん:2006/01/26(木) 21:18:25
delete $A{$_} for keys %B; とか?
914912:2006/01/26(木) 21:24:40
>>913
ありがとうございます。
でも、それだと、key ごと消えちゃったりしますよね。

key に対する重複する値だけ消したいっす。

915デフォルトの名無しさん:2006/01/26(木) 23:09:14
deleteのかわりにundefにしたら?
916913:2006/01/26(木) 23:36:23
>>914
あ、すまんす。値が配列になってるのね。ちょっとうまい方法が思いつかないなあ。
917デフォルトの名無しさん:2006/01/27(金) 00:45:38
>>912
そういう時は一旦ハッシュに入れてみるのが常套手段
my %A = ( hoge => [1, 2, 3, 5], fuga => [50] );
my %B = ( hoge => [2, 3, 4], piyo => [] );

foreach my $key (keys %B) {
next if !exists $A{$key};

my %e = ();
$e{$_} = 1 foreach @{$B{$key}};

my @newA = ();
$e{$_} or push @newA, $_ foreach @{$A{$key}};

$A{$key} = \@newA;
}
918デフォルトの名無しさん:2006/01/27(金) 01:03:08
>>912
通りすがりの初心者です。間違っていたら指摘よろです。

foreach my $key(keys %B){
$A{$key} = [undef] if($A{$key} != undef);
}
919918:2006/01/27(金) 01:09:03
連書きすいません。

$A{$key}=[undef]
じゃなくて
$A{$key}=[]
でした。
920デフォルトの名無しさん:2006/01/27(金) 01:18:24
>>918
仕様が要件を満たしているかどうかは置いておくとして、
$A{$key} != undefの所はdefined $A{$key};と書かないと。
-wやuse warningsを使うと、そういうことを結構教えてくれるから使ってみることをお勧めする。
921デフォルトの名無しさん:2006/01/27(金) 01:49:36
while (my $key = each(%A)) {
 if (exists($B{$key}) {
  delete($A{$key});
 }
}
922デフォルトの名無しさん:2006/01/27(金) 04:11:30
>>921
each の途中で、delete ってしていいの?
923デフォルトの名無しさん:2006/01/27(金) 06:02:28
(・∀・)イイ!!わけない
924912:2006/01/27(金) 07:09:21
>>912 です。
みなさん、ご助言ありがとうございます。
昼間に試してみて、夜にでも結果報告をします。
感謝感謝です。
925デフォルトの名無しさん:2006/01/27(金) 09:15:38
>>922
一般にはダメだが、eachが最も最近に返した要素のdeleteだけは
安全。perlfunc(1)のeachのとこに書いてある。

If you add or delete elements of a hash while you're
iterating over it, you may get entries skipped or duplicated,
so don't. Exception: It is always safe to delete the item most
recently returned by "each()", which means that the following
code will work:

while (($key, $value) = each %hash) {
print $key, "\n";
delete $hash{$key}; # This is safe
}
926デフォルトの名無しさん:2006/01/27(金) 10:40:20

$ perl hoge.pl -i input_file
または
$ perl hoge.pl < input_file
のように使うスクリプトがあって
引数に -i があるときはファイルを開いて
無いときはSTDINからデータを読んでるのですが

$ perl hoge.pl

とどちらも忘れたときにSTDINで止まってしまって
強制終了以外で止められません

$ perl hoge.pl[enter]
I can't find input file!
$

のようにする方法をずっと考えているのですが
結局思いつきません。。。
どなたかいい方法をお願いします。
927デフォルトの名無しさん:2006/01/27(金) 11:23:16
>>926
よく使われる手は -t STDIN で標準入力がttyかどうか調べる、だな。

リダイレクトで明示的にttyを標準入力につないだときに誤判定するが
それはアキラメで。
928デフォルトの名無しさん:2006/01/27(金) 11:23:46
>926
STDINが、コンソールか、ファイルかなんて、
C言語でも、かなりOSに依存したコード書かないといけないと思うからperlだと難しいんじゃないかな。

一応、seek(STDIN,0,0) してみたら、
コンソールの場合は、0が返ってきて、
ファイルの場合は、1が返ってきたので、
これで判断できると思うけどOSに依存するかもしれん。
929928:2006/01/27(金) 11:26:16
>>927
http://flex.ee.uec.ac.jp/texi/perl/perl_22.html#IDX82
-t ファイルハンドルが tty にオープンされている
こんなファイルテスト演算子があったとはしらんかった (;゚д゚)...
930928:2006/01/27(金) 11:34:10
package が存在する(定義されている)か判定する方法がないでしょうか?

print "defined PackageName" if defined(PackageName);

↑でできるかなと思ったのですが、
defined("PackageName")としていることが
まったく同じような気がするので常に1が返ってきて無駄でした。
931デフォルトの名無しさん:2006/01/27(金) 11:48:37
>>926
馬鹿だなオマエ。そういう時は「引数に何も付けなかった時は
標準入力から入力する。」という仕様にしてしまえばいいじゃ
ないか。実際その方が便利だぞ。
932926:2006/01/27(金) 11:51:25
>>927
-t STDIN
を利用して

$ perl hoge.pl -i input_file
$ perl hoge.pl < input_file
$ cat input_file | perl hoge.pl

で期待通りに動作しました!ありがとうございます!
それと
『リダイレクトで明示的にttyを標準入力につないだとき』
なのですが、というのが分かりません。。。
どういうことでしょうか。。。?
933926:2006/01/27(金) 11:53:42
>>931
あ、本来の仕様は
perl [-i input_file] [-o out_putfile]
なんでそれは無理です。
質問のために省略しました。
ただ、その方法も確かに簡単でいいですね!
934デフォルトの名無しさん:2006/01/27(金) 12:05:01
とりあえずここで・・・ (*Windows版)

紫色を透明色にしたいんだが何か間違ってる?

use Image::Magick;

$image = Image::Magick->new;
$image->Read('test.bmp');

 $image->Set(transparent=>'Purple');
 $image->Set(colorspace=>'Transparent');
 $image->Set(matte=>'True');

$image->Write("test.png");
935デフォルトの名無しさん:2006/01/27(金) 13:27:07
>>932
$ perl hoge.pl < /dev/tty
936デフォルトの名無しさん:2006/01/27(金) 14:55:44
>>934
1. ○○がしたい
2. 自分はこうやった
3. 結果は××になってほしいが△△になってしまった

3 が抜けてて返答のしようがない。
937デフォルトの名無しさん:2006/01/27(金) 16:21:59
ppmでHTML-FormatTextが見つからないのですが、
CPANで拾うとppdが入っていません。かなりググりましたが他に
見つかりませんでした。
自動でインストールできるものはどこで入手できますでしょうか?

あと、みなさん普段どこからモジュールを手に入れてますか?
オススメのリポジトリとかあれば教えてください。
938デフォルトの名無しさん:2006/01/27(金) 16:51:40
ppm とか ppd って何?

cpan -i HTML::FormatText で普通に入るけど。
939デフォルトの名無しさん:2006/01/27(金) 17:27:58
Active Perl5.86で既になかった
古い5.81ので拾った記憶が
既に入らなかった。あきらめたけど
ppmでオフラインで入らないのは古いから対応してないよ警告なんだと思う。

namazuでもそうだったし
野良で使えるとは思うけど

もしかしたらアーカイブ鯖からppmで入れられるのかね?
5.81アーカイブに繋いで入れられるのかな?

不明
940937:2006/01/27(金) 20:23:47
ありがとうございます。CPANでインストールできました。
こんなのがあったんですね・・・(ppmの立場は!?)
いままでppmを使っていたので、モジュールのインストールによく躓いていました。
perlのモジュールって,統一感がある様で結構バラバラな感じですね。
Image::Magickもppmでは入りません。DLLのインストーラでオプション指定
しないといけない現状です。
ウエブにあふれてる解説が古いままなのが、躓く原因だと思います。
941デフォルトの名無しさん:2006/01/27(金) 21:01:05
お前は何を言っているんだ?(画像ry
942デフォルトの名無しさん:2006/01/27(金) 21:59:14
>>940
> ppmの立場は!?
ActivePerlで確実に使えるパッケージである。
コンパイル済みなので、コンパイラを持っていないユーザーでも使える。
943デフォルトの名無しさん:2006/01/27(金) 22:07:57
小飼弾て朝生に出てるんだな。今知ったよ。
944デフォルトの名無しさん:2006/01/27(金) 22:51:06
な、なんだってー
またでんのかよ
945デフォルトの名無しさん:2006/01/27(金) 23:21:31
さて、情報処理申し込みにオフィシャル行ってくっか
946デフォルトの名無しさん:2006/01/28(土) 04:23:46
@list=glob("*.c");
$val=$list[$#list]

これを一文でやる方法はありますか?
あるリストの最後の要素を取得する方法が知りたいです。
947デフォルトの名無しさん:2006/01/28(土) 05:03:24
サンプルなどで
foreach my $key( @list) {
print "$key", "\n";
}
という書き方がよく行われていますが

my $key;
foreach $key( @list) {
print "$key", "\n";
}

とすべきではないのでしょうか?
948デフォルトの名無しさん:2006/01/28(土) 05:09:08
ヒント:

foreach my $key( @list) {
print "$key", "\n";
}
print "$key", "\n";


my $key;
foreach $key( @list) {
print "$key", "\n";
}
print "$key", "\n";
949デフォルトの名無しさん:2006/01/28(土) 05:11:13
>>946
$val=[glob("*.c")]->[-1];
とか?
950デフォルトの名無しさん:2006/01/28(土) 05:15:29
>>946
便乗しての質問なのですが、なぜ
@list=glob("*.c");
$val = pop(@list);

は出来るのに

@list = pop(glob("*.c"));

はType of arg 1 to pop must be array (not null operation) というコンパイル
エラーになってしまうのでしょうか?
951ヽ(´ー`)ノ ◆.ogCuANUcE :2006/01/28(土) 05:23:06
>>946
こうじゃね?

$val=(@list = <*.c>)[-1];

もっとも、俺なら後から見てワケワカメになるので、こうするけどな。

my @list = <*.c>;
my $val = $list[-1];

あと、deprecated というわけじゃないようだが、glob() じゃなくて
File::Glob か <> 演算子を使っとけ。

>>950
pop() は引数を与えた場合、与えられた配列を変更するので、変更できない
(lvalue じゃない) サブルーチンの返り値やリテラルを渡すとエラーになる。
952デフォルトの名無しさん:2006/01/28(土) 05:42:23
[-1]が使えたんですね。アリガトウございます.
953デフォルトの名無しさん:2006/01/28(土) 06:09:16
unlink (sort glob "*.c")[-1];

ところでこのソートって必要だと思いますか?
>as the standard Unix shell /bin/csh would do.
/bin/cshはファイル名でソートしてくれる仕様なのかな、どうなんだろ。
954デフォルトの名無しさん:2006/01/28(土) 06:11:46
unlink +(sort glob "*.c")[-1];
こうだった。
955デフォルトの名無しさん:2006/01/28(土) 10:02:58
>951
>あと、deprecated というわけじゃないようだが、glob() じゃなくて
>File::Glob か <> 演算子を使っとけ。

なんで?
956デフォルトの名無しさん:2006/01/28(土) 11:55:08
>>955
少なくとも 5.6.0 から組込関数の glob() は内部で File::Glob 呼んでるし、
ファイル名グロブ演算子としての <> は行入力演算子としての <> と紛ら
わしいうえ実体は glob() だから、「glob() より <> を使え」って根拠は謎だな。
http://search.cpan.org/~nwclark/perl-5.8.7/pod/perlfunc.pod#glob_EXPR

まぁ File::Glob::bsd_glob() を直接使えばフラグを与えて細かく制御できるし、
そういう事を言いたいんじゃない? 俺は面倒だから glob() 使うけど。

>>953-954
という事で File::Glob を読むんだ。
http://search.cpan.org/~nwclark/perl-5.8.7/ext/File/Glob/Glob.pm
957ヽ(´ー`)ノ ◆.ogCuANUcE :2006/01/28(土) 12:38:34
>>956
File::Glob の方が細かく制御できるから…と思ったけど、
:globally なら glob() にも <> にも影響あるんだな。
これはスマンカッタ。

>>953-954
unlink() かよ。
958デフォルトの名無しさん:2006/01/28(土) 13:35:54
すみません
Windowsで言う『切り取り→貼り付け』、UNIXで言う『mvコマンド』みたいな事をしたいんですが
モジュールとかありますか?
959デフォルトの名無しさん:2006/01/28(土) 13:45:54
>>958
モジュールって…
rename() でええがな。
960デフォルトの名無しさん:2006/01/28(土) 13:51:37
>>958
あえてモジュールを使いたいならFile::Copyにmvがある。rename直でいいと思うが。
ところでこのスレでPerl6の質問ってしてもOK?
まだ質問があるわけじゃないんだけどさ
961デフォルトの名無しさん:2006/01/28(土) 13:51:46
ファイルをポインタで扱いたいんですが、
ttp://www.rfs.jp/sb/perl/02/08.html#TRY!%20ファイルハンドルを変数に格納する
↑以外で良いサンプルの書いてあるサイトを知ってる人いませんか。

ポイントへの格納の仕方、読み方の二つがわかれば十分なんですが…
962デフォルトの名無しさん:2006/01/28(土) 14:04:48
ポインタって?
963デフォルトの名無しさん:2006/01/28(土) 14:09:24
964デフォルトの名無しさん:2006/01/28(土) 14:34:40
>>963
ありがとうございました!

>>962
すみません、どう表現したらいいのかもよくわかってなくてニュアンスで書きました。
965デフォルトの名無しさん:2006/01/28(土) 16:26:45
>>960
ここいってくらさい。
次世代Webプログラミング言語の大本命Perl6/Parrot [WebProg]
966デフォルトの名無しさん:2006/01/28(土) 21:35:32
Jcode.pmの
[@match = ] $j->m($pattern, $opt);
を使って、以下1行のSJIS文
あいうえお/かきくけこ/さしすせそ
を/でsplitするにはどうしたらいい?
967デフォルトの名無しさん:2006/01/28(土) 23:45:42
>>959
>>960
renameは同一ファイルシステム内でしか移動できないので、
ファイルシステムまたぐ可能性があるならFile::Copyのmvを
使うべし
968デフォルトの名無しさん:2006/01/29(日) 00:54:03
my @list;
my $rec = {
title => '11',
genre => '77',
};
push(@list, \$rec);
&test(\@list);

sub test(\@) {
my ($lst) = @_;
foreach my $aaa (@$lst) {
# ここでデリファレンスする方法をおしえてください。
print $aaa->{title};
}
}
よろしくお願いします。
969デフォルトの名無しさん:2006/01/29(日) 01:26:01
print %$aaa->{title};
970デフォルトの名無しさん:2006/01/29(日) 01:30:58
ハッシュのリファレンスのリファレンスをpushしてしまってるから
push(@list,\$rec) を push(@list,$rec) にするとかは?
971960:2006/01/29(日) 01:36:31
>>965
りょーかいです

>>967
ファイルシステムを超えて移動したことなかったので知らなかったorz
やっぱり一般的な関数もちゃんとドキュメントは読まないと駄目ね・・・

>>968
>>969 書き間違えてますぞい。
print $$aaa->{title};
972デフォルトの名無しさん:2006/01/29(日) 01:39:28
それだとNot a HASH reference といわれてしまうのですが・・・
973968:2006/01/29(日) 01:45:57
ありがとうございます。print $$aaa->{title}; で表示できました。

my @list;
my $rec = {
title => '11',
genre => '77',
};
push(@list, \$rec);
これ「ハッシュのリファレンスのリファレンス」になってしまうのでしょうか?
974968:2006/01/29(日) 01:51:43
理解できました。ありがとうございました。
975969:2006/01/29(日) 02:17:19
おいちょっと待て、
print $$aaa->{title};
これだと
Not a SCALAR reference
になるんだが
976969:2006/01/29(日) 02:18:31
俺の勘違いだったすまん
977デフォルトの名無しさん:2006/01/29(日) 05:01:05
リファレンスのリファレンスって何か嬉しいことあるの?
978デフォルトの名無しさん:2006/01/29(日) 06:31:54
>>967
Winの場合は、rename で内蔵HDDから外付けUSB HDDに移動できたけどな。
979 ◆TWARamEjuA :2006/01/29(日) 06:41:57
え?
980デフォルトの名無しさん:2006/01/29(日) 07:09:22
>>978
それはファイルシステムとは言わないような気がするんだけど気のせい?
981デフォルトの名無しさん:2006/01/29(日) 07:10:07
>>980
はぁ?
982デフォルトの名無しさん:2006/01/29(日) 07:16:47
>>981
アホみたいに煽るだけじゃなくて実のあること書いてよw
FATとかNTFSのことじゃないの?
983デフォルトの名無しさん:2006/01/29(日) 08:32:27
うちでもやってみた。(内蔵IDE HDD→外付けUSB HDDへの rename)
Linux Perl の場合:無効なクロスデバイスリンク と出て失敗。
Win98SE(ActivePerl)の場合:正常に移動できた。

デュアルブートのマシンなので、ハードウェアは全く同じ環境。
誰か理由を説明できる人、よろしく。
984デフォルトの名無しさん:2006/01/29(日) 08:35:05
内部で使ってる関数が違うだけの話じゃないの?
985デフォルトの名無しさん:2006/01/29(日) 08:53:07
windowsは知らんけど、linuxとかのmvもデバイスをまたぐ時は
内部でcpとrmを実行してなかった?
986デフォルトの名無しさん:2006/01/29(日) 09:22:05
Linux-2.4,Glibc-2.3.5で試したけど、
mvで違うファイルシステムにファイルを移動しようとしたら、
renameでエラーを検出した後に、read/writeでファイルをコピーしてる。
987デフォルトの名無しさん:2006/01/29(日) 09:27:05
>>985
その通り。
まず rename を試み、失敗したら自分で移動処理してる。
ActivePerlのrenameは、そういうコードが入ってるってことかな?
988デフォルトの名無しさん:2006/01/29(日) 09:39:52
rename(2)とMoveFileExの挙動違いじゃないのかな。
Windowsの関数の方が親切だよね。
989デフォルトの名無しさん:2006/01/29(日) 09:45:00
MoveFileExじゃない、ただのMoveFileか。
MoveFileExならフラグの制御でUNIXと同じ動作にも
出来たんだろうけど、あえてMoveFileを使う辺りが適当というか。
ユーザーにとっては便利だけど。
990デフォルトの名無しさん:2006/01/29(日) 09:56:30
>>989
Win9xでも動くようにするためじゃない?
991デフォルトの名無しさん:2006/01/29(日) 10:03:21
>>990
MoveFileExってNT系にしかないのか…
992デフォルトの名無しさん:2006/01/29(日) 10:16:34
朝っぱらから小飼弾の喋りはつらいですね
993デフォルトの名無しさん:2006/01/29(日) 10:17:34
誤爆した
994デフォルトの名無しさん:2006/01/29(日) 16:19:14
もう次スレの時期か…また立ててくる
995デフォルトの名無しさん:2006/01/29(日) 16:26:45
my $$self{next} = new BBS2ch::Thread 'Perlについての質問箱 22箱目';

次スレ
http://pc8.2ch.net/test/read.cgi/tech/1138519327/
996デフォルトの名無しさん:2006/01/29(日) 16:56:43
>>995
z
997デフォルトの名無しさん:2006/01/29(日) 17:11:49
ふふっ、くすぐったいですか?
それは、すみません。 でも、ゆっくり味わいたいと思います
(身をよじるはやてに微笑をむけながら)

ふふ、可愛らしいですね……、大人になったらするんですから……
はやてちゃんの場合でしたら、したいって相手がいっぱい居ると思いますよ?
ですから、あまり恥ずかしがらないでくださいね。
(そう話しかけながら、胸の蕾を指で転がしている)

ん、ふ……ちゅ、ぺろぺろ……
(乳房の輪郭を、手で探りながら、胸の蕾を舌先で転がす)
ふふ、どうですか……?
んちゅ……、ちゅ……
(はやての身体に跨り、首筋に顔を伸ばして唇を這わせる)
998デフォルトの名無しさん:2006/01/29(日) 17:11:58
んふ………っ
(ペニスが下腹部に当たると、身体を浮かして)
もう、したいんですか……?ふふ、まだ早いですよ。
(はやてちゃんの胸を揉みながら、微笑む)
んふっ……ぺろっ……
(胸から鎖骨へとゆっくり舌を這わせながら、身体を浮かす)

それでは、私のを、はやてちゃんの唾液で濡らしていただけますか?
(そう言うと、69の体勢になるため、お尻をはやてへ向け
 身体をペニスの方へと寝かせていく)
………………
(ペニスを掴んで扱きながら、はやてからの愛撫を待っている)
999デフォルトの名無しさん:2006/01/29(日) 17:12:07
ひぃぅん……あっ……ん……
(ペニスを扱かれて、腰が動く)
シャマル………うち…頑張る……
ちゅ……ん……
(ペニスへの刺激に耐えながら、懸命にシャマルのアソコをチロチロ舐める)
1000デフォルトの名無しさん:2006/01/29(日) 17:12:13
ふふ、腰が動いてますよ、気持ち良いですか…?
ぁん……、はい、頑張ってくださいね……
ちゅ……ん…、ちゅっ……
(嬉しそうに腰を振りながら、
ペニスの先端を舌先でくすぐる)
ふぁ……ぁ、ん………
(秘部をはやての唾液を、自分の愛液で濡らしながら、腰を揺らす)
ちゅ、ぺろ……ふ、ぁ……
(咥内にペニスを含み、ペニス全体に舌を絡め唾液で濡らす)

ふふ、これは、どうでしょうか……
(上半身を軽く浮かし、はやてのペニスを豊満な胸で挟む)
(そして、挟んだまま胸でペニス扱く)
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。