• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlについての質問です)

Perlでファイル処理を行う方法について

このQ&Aのポイント
  • Perlのサブルーチンではなく、forループを使用してファイル処理を行いたい場合、自由にファイル数と条件を指定して実行することは可能です。
  • 初心者でも理解しやすいように、forループの回数を指定するようにして、処理条件やファイル名を指定する際には、標準入力を使用する方法をご紹介します。
  • この方法を使用すれば、柔軟にファイル処理を行うことができます。Perlの初心者でも分かりやすいように、具体的なサンプルコードも提供します。

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

  • ベストアンサー
  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

以下を組み合わせたら何かしら出来るかと思います。 # STDINで指定 chomp( my $stdin = <STDIN> ); # forで$stdin回まわす my $name = "hoge"; for (1..$stdin) { print $name . $_ , "\n"; } # Tagを回す my @tags = qw(AGT ACA TAT TGA); foreach my $tag (@tags) { print "$tag\n"; }

その他の回答 (1)

回答No.2

コマンドラインのオプションを取り扱いたいんだと想像します。 次のスクリプトでは次のオプションが使えます。 -t LIST or --tag=LIST コンマ区切りのタグ文字列を指定します。複数回指定できます。 -o PATH or --ouput=PATH 出力ファイルのプリフィクスです。デフォルトはスクリプトの名前+'-output-'。 -n or --num 出力ファイル名の連番を数字にします。デフォルトはアルファベットです。 例: $ perl arg.pl --tag=a,b,c arg-output-a a arg-output-b b arg-output-c c $ perl arg.pl --tag=a --tag=b --tag=c --output=path- path-a a path-b b path-c c $ perl arg.pl -t a,b,c -o path- --num path-1 a path-2 b path-3 c arg.pl: #!/usr/bin/perl use strict; use warnings; use v5.10; use File::Basename; use Getopt::Long; my @tag; my $output = basename($0, '.pl') . '-output-'; my $num; GetOptions(   'tag=s' => \@tag  , 'output=s' => \$output  , 'num' => \$num ); @tag = split(/,/, join(',', @tag)); my $suffix = 'a'; if ($num) { $suffix = '1'; } foreach (@tag) { &aaa($output.$suffix++, $_); } sub aaa { # 単に引数をプリントするだけ  my ($output, $tag) = @_;  say $output; say $tag; }

参考URL:
http://perldoc.perl.org/Getopt/Long.html