071212
programovani Perl - http://cpan.perl.org
Perl:
http://cpan.perl.org
- na charonovi: prikaz perldoc ...
- 3 typy promennych: 1) skalar=jedina vec = znacime $...
3) list=seznam dvojic skalaru= znacime %...
- $debug = 0;
$file = "protein.fa" promenne, kdekoliv v programu se objevi $file, program mi tam za to automaticky doplni "protein.fa"
- \ mi meni bezny vyznam symbolu na ten opacny : \$ = vytiskni mi $, \n = novy radek, \s = mezera, tabulator, konec radku, \d = cislo, \d+ = alespon jedno cislo, S+ = alespon jeden symbol, .+ = alespon jedno cokoliv
- funkce join = spoji jednotlive skalary
- $all = join "", @all; = do uvozovek se uvadi, cim to ma spojit, v mem pripade nicim + vytvor z toho pole all
- funkce split = rozdeli pole na jednotlive skalary
- @all = split ">",$all; = rozdeli pole skalaru na jednotlive skalary podle symbolu v uvozovkach a vytvori skalary
- funkce regularni exprese znaci se ~ = neco najde a pokud tu vec, kterou ma hledat dam navic do zavorek (), vrati mi to do filu, ktery pred to specifikuju zase v ()
- ($gi,$ref,$desc) = $id_line =~ /^\d+ gi\|(\d+)\|ref\|(\S+)\| (.+)$/;
- $seq =~ s/\n//g; = s pro nahrad to co najdes v prvnim // tim, co je v druhem //, g pro globalne= pro vsechny sekvence
#!/usr/bin/perl -w
$debug = 0;
$file = "protein.fa";
open FILE, $file or die "Error: can't open $file\n";
@all = <FILE> or die "Error: can't read from $file\n";
close FILE;
$counter = @all;
print "Debug: got $counter lines\n" if $debug > 1;
$all = join "", @all;
@all = split ">",$all;
shift @all;
$counter = @all;
print "Debug: got $counter proteins\n" if $debug > 0;
$counter = 0;
foreach $prot (@all) {
$counter++; # $counter = $counter + 1;
($id_line,@prot) = split "\n",$prot;
$seq = join "",@prot;
# $seq =~ s/\n//g;
($gi,$ref,$desc) = $id_line =~ /^\d+ gi\|(\d+)\|ref\|(\S+)\| (.+)$/;
$desc =~ s/'//g;
$sql = "insert into hs_prot set";
$sql .= " gi='$gi', ";
$sql .= " ref='$ref', ";
$sql .= " description='$desc';";
print ">$gi counter[$counter]: gi[$gi] ref[$ref] desc[$desc] sql[$sql]\n" if $debug > 1 and $counter < 5;
print "$sql\n";
};