• ベストアンサー

perlで、文字列の中から何番目から何番目までの文字を抜き出したい

perl初心者です。 文字列の中から何番目から何番目までの文字を抜き出して 別のファイルにうつす、 というスクリプトを書いています。 でも、うまくうごいてくれません。。。 恐らく、根本的におかしな部分があると思いますし、 さらに、何番目から、は指定できていても、 次の数字は文字数を意味しているのだと思いますので、 意図するものと違う気がします。 ただ、何番目から何番目 という情報だけを入力してできたら作業上大変助かります。 本当に困っております。 アドバイスをいただけると幸いです。 大変急いでおります(;;)。 宜しくお願いします!!! #!/usr/bin/perl ; open(IN, "test.txt") or die ; open(OUT, ">after_test"); while(<IN>) { chomp ; if (/(\S+)/) { \S = $S substr ($S, 12345, 12389) = { print OUT "$_\n"; } } } close (IN) ; close (OUT) ;

質問者が選んだベストアンサー

  • ベストアンサー
  • maura
  • ベストアンサー率46% (48/104)
回答No.1

これでどうでしょう? 12345番目から12389番目まで抜き出してます #!/usr/bin/perl my $content = ''; open(IN, "test.txt") or die ; { local $/; $content = <IN>; } close (IN); open(OUT, ">after_test"); print OUT substr ($content, 12345, (12389 -12345 ) ); close (OUT) ;

momomosumomomo
質問者

お礼

ありがとうございました!!!本当に助かりました!!!

その他の回答 (1)

  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.2

何番目から何番目、についてはno1さんと同じですが、 元のソースをなるべく残そうとすると、 while(<IN>) {  chomp;  if (/(\S+)/) {   print OUT substr($1, 12345, 12389-12345),"\n";  } } やりたいのはこういう事なのかな、とも思います。 これはこれで、 行の途中にスペースが入っていた時はどうなるのが正しいか? という問題はありますけど。

momomosumomomo
質問者

お礼

ありがとうございました!!!本当に助かりました!!!