View Full Version : [perl] pattern matching problem
ciao a tutti,
non frequento molto il forum, ma vorrei chiedervi un aiuto da programmatore amatoriale.
Ho fatto un piccolo script per esigenze lavorative.
Il programma dovrebbe ricevere 2 input, e guardare se trova le variabili di uno nell'altro. Non so per quale motivo, ma non riesce a matchare correttamente, nel senso che mi dice che qualsiasi cosa e` uguale a qualsiasi cosa..
Potete dare un'occhiata?
#!/usr/bin/perl
print "insert homologene.data.txt matrix path\n";
$IN=<STDIN>;
open(wee, "$IN");
chop($IN);
chop($IN);
chop($IN);
chop($IN);
$a=<wee>;
while($a ne ""){
@array=split /\t/,$a;
# print "@array \n";
push @array2d,[@array];
$a=<wee>;
chop($a);
}
#$count=0;
print "$#array2d\n";
#for $row (@array2d){
# $count++;
# print "@$row\n";
# }
#print "$count\n";
print("insert input file path\n");
$IN2=<STDIN>;
open(wee2, "$IN2");
chop($IN2);
chop($IN2);
chop($IN2);
chop($IN2);
$b=<wee2>;
while($b ne ""){
push @input, $b;
$b=<wee2>;
}
print "@input \n";
foreach (@input){
chop($_);
print "$_\n";
$c=0;
while($c <= $#array2d){
#print "$array2d[$c][3], ciao\t $c\n ";
if($_ =~ /${$array2d[$c][3]}/x){
print "$array2d[$c][3]\t $_\n ";
push @out, $array2d[$c][0];
# print "$_ \t ciao $c\n ";
# $c=$count;
}
$c++;
}
}
#print "hello, $out[1] \n";
Se ne avete bisogno posso anche postarvi i file di modello necessari...
Se n e avete bisogno posso anche postarvi i file di modello necessari...
se non sono riservati postali.
cos'e' che deve fare esattamente?
ho una lista,
PHLDA1
LOC608832
LOC497668
Hephl1
CDC12
LOC423705
CG3960
LOC485383
MT3
Skil_predicted
Txndc11
Plasmodium falciparum 3D7 PFL2290w gene
COX8A
hypothetical protein
LOC480690
LOC628209
mRNA gene KLLA0E04785g
CG14414
mRNA gene KLLA0F18568g
Map3k10
RGD1307150_predicted
LOC610189
PDZRN3
Y61A9LA.10
LOC395520
Phf5a
38967
LOC391051
SH3MD2
ADR086Cp
D2Ertd750e
Thsd1_predicted
SOCS1
Jph2
Theg
e devo controllare se gli elementio di questa lista compaiono in questo file
ftp://ftp.ncbi.nih.gov/pub/HomoloGene/current/homologene.data
questo e` un test, e la lista viene dal file medesimo, quindi so che ci sono tutti gli elementi!
if($_ =~ /${$array2d[$c][3]}/x){
sei sicuro non sia
if($_ =~ /$array2d[$c][3]/x){
come mai usi il pattern matching per fare una semplice uguaglianza tra stringhe?
beh ormai e` cambiato un po', prima di tutto la X non c'e` piu`, perche` era un errore e pure grossolano,
tu dici che posso fare in maniera diversa? tipo eq? adesso provo!
beh, e` meglio, prima dceva che tutto era uguale a tutto, adesso nessun elemento passa la condizione! pero provero` ad andare in dettaglio su questo approccio
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.