【Perl】初心者コーナー Part16

このエントリーをはてなブックマークに追加
952nobodyさん:02/10/14 00:19 ID:???
>>944-951
1000行あるログファイルの100行目から199行目を処理する時、

@log = <LOG>;
@log = @log[99..198];

なら1000行分 + 100行分のメモリを必要とする。

while (<LOG>) {
 push @log, $_ if $. == $start .. $end == $.;
}

なら1行分 + 100行分のメモリを必要とする。

…と理解してたんだが、もしかして違いますか?
953nobodyさん:02/10/14 00:22 ID:???
>>952
$start と $end の値がわからん
954952:02/10/14 00:25 ID:???
>>953
ごめんなさい。

$start = 100;
$end = 199;
955953:02/10/14 00:29 ID:???
>>952
だったら、最終的にどっちも100行分で同じだけど、
@log = <LOG>; をやったほうは、全行分一気にメモリ食うからやばいかも
956944:02/10/14 00:58 ID:???
この辺まとめてるサイトとかないですかね?<メモリ消費
検索下手なもんでみつけられじ
957nobodyさん:02/10/14 01:40 ID:???
糞固定出番だぞ(大爆笑嘲笑激笑)
958nobodyさん:02/10/14 03:17 ID:1xBJawHO
>>932 の事ですか(゚Д゚)?
959nobodyさん:02/10/14 03:17 ID:???
「出番」ね・・・ 「出たぞ」に見えた・・・ 寝よう
960nobodyさん:02/10/14 07:45 ID:???
結局コテハンで新スレを立てて欲しいみたいです
この際コテハンでスレ立てるのを伝統としてしまいますか
トリップは#コテハンで
961nobodyさん:02/10/14 10:04 ID:???
DOS上で使うとき、.PLファイルを入れてあるパスを指定しなくてもいいようにする方法はないでしょうか?
今はいちいちこんな風に書いています・・・
C:>perl c:\tools\perl\scripts\aaa.pl

よろしくおねがいします。
962nobodyさん:02/10/14 10:22 ID:???
Spreadsheet::WriteExcel にあった
  write_arrays.plという
サンプルですが、
my $worksheet1 = $workbook->addworksheet('Example 1');
my $worksheet2 = $workbook->addworksheet('Example 2');
my $worksheet3 = $workbook->addworksheet('Example 3');
my $worksheet4 = $workbook->addworksheet('Example 4');
my $worksheet5 = $workbook->addworksheet('Example 5');
my $worksheet6 = $workbook->addworksheet('Example 6');
my $worksheet7 = $workbook->addworksheet('Example 7');
my $worksheet8 = $workbook->addworksheet('Example 8');
なんてコードがあった。
もっと綺麗に書けませんか?
963962:02/10/14 10:31 ID:???
my @sh_nums = qw(1 2 3 4 5 6 7 8 );
for my $idx (@sh_nums ){
my $worksheet${idx} = $workbook->addworksheet("Example $idx");
}

みたく書けませんか
964nobodyさん:02/10/14 10:40 ID:???
for (1 .. 8){
my $wordsheet[$_]= $workbook->addworksheet("Example $_");
}
965nobodyさん:02/10/14 10:40 ID:OizI25TP
しつもーん。
変数に格納した文字列の長さを得るにはどうしたらよかとですか?
966nobodyさん:02/10/14 10:40 ID:???
length
967965:02/10/14 10:42 ID:???
>>966
ありがとー!
968nobodyさん:02/10/14 10:49 ID:???
C:\>cd c:\tools\perl\scripts
と入力してカレントディレクトリを変更する。
c:\tools\perl\scripts>
となるので、
perl aaa.pl
で実行できる。
969961:02/10/14 11:25 ID:???
>>968
すいませんが、それでは aaa.pl が引数としてパスを求めるばあいに
perl aaa.pl g:\msc\include\aaa\bbb\ccc\
こんな風になってしまいます・・・
970nobodyさん:02/10/14 11:29 ID:???
つまりはダ、Perlパスとカレントディレクトリはパス通しとけってこった
971961:02/10/14 11:30 ID:???
そのゴ、c:\tools\scripts\ を PATH に加えてみましたがだめでした
perl には JGAWK の AWKPATH みたいなものは無いのでしょうか?
972961:02/10/14 11:33 ID:mVfsm4sP
あ、970を読んで、改めてやってみたらできました。
なんでさっきできなかったんだろ?
ありがとうございました。
973nobodyさん:02/10/14 11:43 ID:???
これ↓を使いたいのですが、
http://www.perlpress.com/perl/gres
例の通りに実行しても全然動かないのですけど、どうやれば動くのでしょうか?
実はかれこれ1時間くらい苦闘しています・・・
974nobodyさん:02/10/14 12:26 ID:???
>>973
コレなにするやつ?
975973:02/10/14 12:57 ID:mVfsm4sP
ファイル内の文字列を一括して置換します。
比較文字列に正規表現が使えます。

perl gres.pl -e 's!and!or!' *.htm
これでカレントにある htm ファイルの 'and' が 'or' に変わるはずだと
思うのですが、動きません。

欲しい・・・
976973:02/10/14 12:59 ID:mVfsm4sP
内容全部なら 's!and!or!g' です.
動きませんけど
977nobodyさん:02/10/14 13:08 ID:???
>>973
だったら自作したほうが・・・
978973:02/10/14 14:16 ID:???
perlは初級なので、こんなの無理です。
979962:02/10/14 14:44 ID:???
>>964
できませんでした。
980nobodyさん:02/10/14 15:12 ID:???
>>973
動かないって「どう動かない」のよ・・・
「perlは有効なコマンドではありません」だったら笑うしかないが
981973:02/10/14 15:35 ID:mVfsm4sP
そこまでバカではないです・・・

できれば試してみていただきたいのですが
以下は何もおきずに終わります。
perl gres.pl -e 's!and!or!g' *.txt

以下は"Processed 0 files." と表示されて終わります。
perl gres.pl -v -e 's!and!or!g' *.txt

ファイルを見つけられないのかとファイル名を直接指定すると、
perl gres.pl -e 's!and!or!g' readme.txt
BLOB(XXXX) ←こんなのが画面いっぱいに表示されて、readme.txt は 0 バイトになってしまいます。

もうわけがわかりません
982nobodyさん:02/10/14 16:11 ID:???
質問があるんですが
foreach (@HOGE) {
ここで$_を使って;
}
foreach (@HOGE2) {
ここでも$_を使ったら;
}
何か問題ありますか?
983nobodyさん:02/10/14 16:12 ID:???
何も問題ありません
984nobodyさん:02/10/14 16:13 ID:???
>>982
じぇーんじぇん。
ループの中は、それぞれの制御子で読まれるデータが$_に入る。
985962:02/10/14 16:16 ID:???
何度もすみません。
どうしても理解できません。
何故、973のように配列に格納することが出来ないのでしょうか?
986962:02/10/14 16:17 ID:???
>985

964のマチガイでした。

>>964
987982:02/10/14 16:25 ID:???
>>983-984
ありがとうございました。
988982:02/10/14 16:25 ID:???
これで俺もプログラマーだ!!!!!!!!!!!
989nobodyさん:02/10/14 16:49 ID:???
>>988
ホスト情報が違うね
990nobodyさん:02/10/14 16:52 ID:???
hoge.txtから読みこんだ行に含まれる$aaaというのを変数として使う方法はありますか?
991nobodyさん:02/10/14 16:53 ID:???
#!/usr/bin/perl

print "Content-type: text/plain\r\n\r\n";
print "Hello world!!\n";


これで俺もプログラマーだ!


ところで次スレは?
992nobodyさん:02/10/14 16:59 ID:???
>>990
$aaaだけでいいなら
$line=s/\$aaa/$aaa/g;
何でも対応なら
$line=~s/$([A-Za-z_]\w*)/${$1}/g;
993992:02/10/14 17:00 ID:???
2行目「~」が抜けた
994990:02/10/14 17:10 ID:???
>>992
「何でも対応」の方を
$line=~s/\$([A-Za-z_]\w*)/${$1}/g;(「\」を追加)
としたら動きました。ありがとうございました。
995992:02/10/14 17:11 ID:???
あれ?ちゃんとテストしたのに。動かなかったか。
996 ◆5Gw81M1S2c :02/10/14 17:12 ID:???
         ,、-──────-、
       /            `ヽ、
      /                \
    /                   \
   /                      \
   /                       ,r-ト-、
  ,'                       f /⌒ヽ!
  ,'                       i L、-、ヽ\
  !                       ` `ー、 ) } \
  !                         `ゝf j  \
 .|                          '  ノ   \
  !              ,,、ノ∠,      ヽ、`ー'
  ヽ           ,,;彡'' / /        ヾ、ヽ
   i   、      /シイノ ,'´          '; i
   {    ヽ  `ー,イ`二 ̄-''             i!|
    \_,r-rフヽ‐'´ '´ 、_               i! |  i     / ̄ ̄ ̄ ̄ ̄ ̄
     | `‐' ノ`'    '⌒ヽ-、,_     ヽ、    ノ |  ,'   < 1000は渡さん!
     !   ̄ 〉      ,r-ノ    ̄``ヽ、  ヽ   /{ | / /    \______
     \  (      /   ,,、ミ-‐''⌒! ヽ  i  / | | / / /
      \  `ー‐‐'´,,、、ミッ‐',∠ノ ̄`!  !   | / | / / /
        \ 〈 r!=‐'´_,_//   /、  !   |  レ' / /
         `ヾ、ヾ \ ̄|~´   /   ノ  }   | //
            `ヾ、 ヽ└---'´`` ノ  !  /! //  ,、-‐
            / `ヾ、ヽ、_ , ''´  j  / //   /
           /      \丶ー‐'´ '´ / ノ´  /
          /        \`     /   /
997nobodyさん:02/10/14 17:16 ID:???
記念パピコV(^o^)V
998 ◆Go4ZKngPGE :02/10/14 17:25 ID:???
新スレ【Perl】初心者コーナー Part17
http://pc.2ch.net/test/read.cgi/php/1034583844/

#コテハン で立てますた
999nobodyさん:02/10/14 17:52 ID:g9J1cXOv
age
10001000:02/10/14 17:52 ID:g9J1cXOv
やたー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。