Perl'de dosyadan okuma ve o dosyadan okuduğumun belirli bir kısmını başka bir dosyaya yazdırmam gerekiyor ama nasıl yapacağımı hiç bilmiyorum.

Buraya da yalnızca JPEG dosyası upload edilebildiğinden dolayı yapılması gerekeni anlatan dosyaları rapide upload ettim.

linki : rapidshare.com

Yardımcı olabilirseniz çok mutlu olurum, şimdiden teşekkür ederim.

 

script linux uzerinde yazildi.

bir de soyle bir bakmakta yarar var, duzeltilebilir bircok yeri.

#!/usr/bin/env perl
$del = '<OPTION\s*?value=\d+>';
$source = cat kaynakdosya.txt;
$source =~ s/\r\n|\ |;//g;
@srcarr = split /$del/, $source;
open FILE, ">cikti.txt" or die "Can not open cikti.txt for writing:$!\n";
for(@srcarr){
s/\s{2,}/ /;
print FILE "$1 - $2$3\n" if /(\d{1,2})\s+-\s+(\w+.*?\s)\s*(\(\d+\))/;
}
close FILE;

fdegir

Bu kodu çalıştırdığıomda cikti.txt'nin içi direk olarak boş görünüyor.

Ben sizin kodunuza bakarak şöyle bir şey yaptım aslında :

#!/usr/bin/env perl
$del = '<OPTION\s*?value=\d+>';
$source = "kaynakdosya.txt";
open(DAT, $source) || die("Could not open file!");
@raw_data=<DAT>;
open FILE, ">cikti.txt" or die "Can not open cikti.txt for reading:$!\n";
for(@raw_data){
print FILE;
}
close FILE;

Ama bu tahmin edilebileceği üzere dosyayı alıp aynısını yazdırıyor. Kaynak üzerinden yalnızca istediğim bölümü nasıl alacağımı anlayamadım?

ecmtnc

#!c:/perl/bin/perl.exe


open( IN, 'kaynakdosya.txt');

$/ = undef;
my $string = <IN>;

close (IN);


$string =~ s/\n|\s{5}//g;


open (OUT, '>ciktiornegi.txt');

while($string =~ /(\d+ - [^)]*?\))</g)

{
unless($1 =~ /\[/) { print (OUT "$1\n"); }

}

close (OUT);



#nasıl yapacağımı hiç bilmiyorum demişsin, senin bu dersi hakkınla geçme şansın hiç yok onu söyleyeyim. bir yandan da; arkadaşın ve benim yazdığım regular expression kodları ne kadar gereksiz karmaşık gözükse de, bunu kendin sıfırdan bile başlasan 1 hafta içinde yazabilirsin. zor değil. biyoenformatikte ilerlemek istiyorsan, iyi öğrenmelisin regular expressionları.

lakot
1

mobil görünümden çık