On Wed, Sep 06, 2006 at 04:55:02PM +0700, Arief Yudhawarman wrote:
> Saya ada masalah dg pemakaian module Tex::ParseWords di perl.
> Sebagai contoh script berikut:
>
> #!/usr/bin/perl
> use Text::ParseWords;
> $line = "Date :2006-09-06 10:15:30";
> @words = &parse_line(':',0, $line);
> foreach (@words) {
> print "$_\n";
> }
>
> Outputnya:
> Date
> 2006-09-06 10
> 15
> 30
>
> Inginnya, hasilnya seperti ini:
>
> Date
> 2006-09-06 10:15:30
>
> Ada rekan yg tahu dimana salahnya ?
Seperti yg sudah dibilang rekan lain, karena delimiternya ":" dan
salah satu wordnya mengandung delimiternya, jadi displit terus oleh
parse_line karena masih menemukan delimiternya. Jadi ini keterbatasan
dr Text:ParseWords::parse_line karena tidak bisa kita specify limitnya
mau split berapa kali maximumnya.
Lagian kalo cuma mau split begitu aja ngapain mesti pake module itu
segala, cukup pake split aja:
@words = split(/:/, $line, 2);
Kalo pake split bisa dibatasi maximum hanya melakukan 1 kali splitting
untuk menghasilkan 2 tokens saja (maka parameternya 2 di atas),
setelah itu berhenti. Contoh:
[EMAIL PROTECTED] ~ $ echo "a:b:c" | perl -ne
'chomp;print"$_\n"for(split/:/,$_,2)'
a
b:c
[EMAIL PROTECTED] ~ $ echo "a:b:c" | perl -ne
'chomp;print"$_\n"for(split/:/)'
a
b
c
[EMAIL PROTECTED] ~ $
Baca 'perldoc perlfunc' (atau 'man perlfunc'), cari 'split', untuk
info lebih lanjut.
Ronny
signature.asc
Description: Digital signature
