Sebenarnya ini bisa dibuat singkat, tapi saya buat sederhana supaya
bisa dimengerti, kuncinya adalah menggunakan fungsi split
open(F, "test.txt");
while ($line = <F>) {
chomp($line); #hilangkan end of line
$line =~ s/ //g; #hapus spasi, saya asumsikan seharusnya gak ada
spasi, silakan dimodifikasi sendiri jika ternyata hanya tidak ada
spasi di depan/belakang saja
#pecah di karakter ":"
my ($pelanggan, $to_list, $cc_list) = split(/:/, $line);
## kita gunakan array
##dengan begini, tidak peduli berapa jumlah TO dan berapa jumlah CC
## pecah di karakter |, tapi karena ini merupakan karakter spesial
di regex, maka perlu diescape menjadi \|
my @to = split(/\|/, $to_list);
my @cc = split(/\|/, $cc_list);
## contohnya saya printkan nomor pelanggan
print "nomor pelanggan: ".$pelanggan."\n";
## dan hanya 2 TO saja yang saya print
print "to_1 " . $to[0]."\n";
if ($#to>0) {
print "to_2 " . $to[1]."\n";
}
## serta 2 CC saja yang saya print
print "cc_1 " . $cc[0]."\n";
if ($#cc>0) {
print "cc_2 " . $cc[1]."\n";
}
}
close(F);
2011/4/14 Preman Terminal <[email protected]>:
> Rekan, saya punya berkas yg isinnya kira-kira seperti ini.
>
> 101 : [email protected] | [email protected] : [email protected]
> 102 : [email protected]
> 103 : [email protected] : [email protected] | [email protected]
>
> Saya mau melakukan loop pada berkas ini dan mendapatkan hasil seperti ini.
> Loop 1:
> pelanggan=101
> [email protected], [email protected]
> [email protected]
> Loop 2:
> pelanggan=102
> [email protected]
> Loop 3:
> pelanggan=103
> [email protected]
> [email protected],[email protected]
>
> Kira-kira bagaimana caranya ya? Saya menggunakan PERL.
>
> --
> Bravo free software!!
> /*
> * http://rotyyu.wordpress.com
> * YM: barca_43ver
> * Gtalk: rotua.hd
> */
>
> --
> Berhenti langganan: [email protected]
> Arsip dan info: http://linux.or.id/milis
>
>
--
Regards
Yohanes
http://yohan.es/
--
Berhenti langganan: [email protected]
Arsip dan info: http://linux.or.id/milis