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

Attachment: signature.asc
Description: Digital signature

Kirim email ke