「perl1」の編集履歴(バックアップ)一覧はこちら
「perl1」(2011/10/29 (土) 15:56:43) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
まずはファイルを開く事から始めましょう
適当にファイルを作ります
seq1
aaaaaaaaaaaaaa
seq2
bbbbbbbbbbbbbbbbb
こんな感じので良いですので適当に作って&bold(){”改行コードはUNIX”※}で適当に名前をつけて保存して下さい
ここではseq.fasとします
(本来のfastaファイルでは、配列名の前に>がつくんだけど、このwikiだと変な風になっちゃうのでのけといた)
※Windows,Macといったその他の改行コードではうまく読み込めません
もちろん全角文字やスペースが入っていてもいけません
んで、別なファイルを使ってperlのコードを書きます
ここではopen.plとします
最初はよく分からないと思うのでとりあえずまねして書いて下さい
use strict;
use warnings;
my (@array);
open(FILE, "seq.fas") or die "$!";
while (my $line=<FILE>){
chomp $line;
push(@array,$line);
}
close (FILE);
print "@array¥n";
書けたらターミナルに移って
perl open.pl
と打ち込んでエンターして下さい
そしたら
seq1 aaaaaaaaaaaaaa seq2 bbbbbbbbbbbbbbbbb
みたいな出力が出ます
これが出たら成功です
うまく行かない場合
¥(バックスペース)が悪さをしてる場合があります
コピペでうまく行かないときは自分で書き写して見て下さい
それでもうまく行かない場合は、perlには様々な書き方がありますので、別の書き方を探して試して下さい
微妙な差でうまく行くときと行かないときがあります
----
コードの適当な説明
最初の二行、
use strict;
use warnings;
は、「エラーが出た時は教えてね」という表示
その次の
my (@array);
は@arrayっていうのを使うよ という表示
@array
perlで使う変数(コード書いている人が好きな文字や数字を当てはめる)のうちの配列というやつで
いくつかの変数をそれぞれの区切り(要素)に代入できるというもの
|要素1|要素2|・・・|要素n|
それぞれの要素には異なる数や文字を代入できる
print "@array¥n";
で@arrayの中身を表示する事が出来る(¥nは改行という意味)
----
今回のコードでは"seq.fas"というファイルから一行ずつデータを取得し、
@arayという配列に代入している
open(FILE, "seq.fas") or die "$!";
while (my $line=<FILE>){
chomp $line;
push(@array,$line);
}
close (FILE);
" "の中身を変える事で、様々なファイルを読み込む事が出来る
もし読み込みたいファイルがフォルダ(ここではtmpとする)に入っていた場合には
open(FILE, "&bold(){./tmp/}seq.fas") or die "$!";
とするとよい
また、seq_1.fas,seq_2.fas,seq_3.fasみたいに続き番号になったファイルを次々に読み込みたい場合は
use strict;
use warnings;
my (@array,$i,$file);
for($i=1;$i<4;$i++){
&bold(){$file='seq_'.$i.'.fas';}
open(FILE, $file) or die "$!";
while (my $line=<FILE>){
chomp $line;
push(@array,$line);
}
close (FILE);
print "@array¥n";
}
みたいにするとよい
まずはファイルを開く事から始めましょう
適当にファイルを作ります
seq1
aaaaaaaaaaaaaa
seq2
bbbbbbbbbbbbbbbbb
こんな感じので良いですので適当に作って&bold(){”改行コードはUNIX”※}で適当に名前をつけて保存して下さい
ここではseq.fasとします
(本来のfastaファイルでは、配列名の前に>がつくんだけど、このwikiだと変な風になっちゃうのでのけといた)
※Windows,Macといったその他の改行コードではうまく読み込めません
もちろん全角文字やスペースが入っていてもいけません
んで、別なファイルを使ってperlのコードを書きます
ここではopen.plとします
最初はよく分からないと思うのでとりあえずまねして書いて下さい
use strict;
use warnings;
my (@array);
open(FILE, "seq.fas") or die "$!";
while (my $line=<FILE>){
chomp $line;
push(@array,$line);
}
close (FILE);
print "@array¥n";
書けたらターミナルに移って
perl open.pl
と打ち込んでエンターして下さい
そしたら
seq1 aaaaaaaaaaaaaa seq2 bbbbbbbbbbbbbbbbb
みたいな出力が出ます
これが出たら成功です
うまく行かない場合
¥(バックスペース)が悪さをしてる場合があります
コピペでうまく行かないときは自分で書き写して見て下さい
それでもうまく行かない場合は、perlには様々な書き方がありますので、別の書き方を探して試して下さい
微妙な差でうまく行くときと行かないときがあります
----
コードの適当な説明
最初の二行、
use strict;
use warnings;
は、「エラーが出た時は教えてね」という表示
その次の
my (@array);
は@arrayっていうのを使うよ という表示
@array
perlで使う変数(コード書いている人が好きな文字や数字を当てはめる)のうちの配列というやつで
いくつかの変数をそれぞれの区切り(要素)に代入できるというもの
|要素1|要素2|・・・|要素n|
それぞれの要素には異なる数や文字を代入できる
print "@array¥n";
で@arrayの中身を表示する事が出来る(¥nは改行という意味。これがだめなときはバックスペースを使ってみてください)
----
今回のコードでは"seq.fas"というファイルから一行ずつデータを取得し、
@arayという配列に代入している
open(FILE, "seq.fas") or die "$!";
while (my $line=<FILE>){
chomp $line;
push(@array,$line);
}
close (FILE);
" "の中身を変える事で、様々なファイルを読み込む事が出来る
もし読み込みたいファイルがフォルダ(ここではtmpとする)に入っていた場合には
open(FILE, "&bold(){./tmp/}seq.fas") or die "$!";
とするとよい
また、seq_1.fas,seq_2.fas,seq_3.fasみたいに続き番号になったファイルを次々に読み込みたい場合は
use strict;
use warnings;
my (@array,$i,$file);
for($i=1;$i<4;$i++){
$file='seq_'.$i.'.fas';
@array=();
open(FILE, $file) or die "$!";
while (my $line=<FILE>){
chomp $line;
push(@array,$line);
}
close (FILE);
print "@array¥n";
}
みたいにするとよい。つまり$file='seq_'.$i.'.fas';として$iだけ変数にして、forループを使ってseq_1.fas,seq_2.fas,seq_3.fas・・・・っていう風に数字をかえていき、対応するファイルを開いていく訳です。なんかコード間違ってました。ごめんなさい。毎回新しいファイルを開く前に@array配列をちゃんと初期化するんよ、2011.10.29訂正