in reply to Re: Re: Open file & Strip comma delimiter
in thread Open file & Strip comma delimiter

As I have tried to explain to you your use of substr is not going to do what you want. However we need to see

1 the exact input data (comma separated)

2 the exact output data (pipe delim) that you want to generate from 1

If you are just trying to get rid of part of the file path you need to use a s/// regex or split $fields[6] on the '\', select the parts you want, join these bits back together with '/' and then join the whole thing with '|'.

while(<IN>) { chomp; my @fields = split /,/; my $path_str = $fields[6]; do { warn "Empty field 7"; next } unless $path_str; my @path = split "\\", $path_str; # remove null fields if you really have \\ in there @path = grep { $_ } @path; # assuming you want to remove the 17 and 16 dirs in the example my $fixed_path = join "\\", @path[0,2,3] my $out = join '|', @fields[0..5], $fixed_path, "\n"; print OUT $out; }

cheers

tachyon

s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Replies are listed 'Best First'.
Re: Re: Re: Re: Open file & Strip comma delimiter
by skyler (Beadle) on Feb 17, 2003 at 04:08 UTC
    I'm sorry but I'm burning the light here. I have a windows environment and split "\\" doesn't seem to work. I try or conditions but they don't work. Please help any ideas...

      After ten years it may suprise you that you have not discovered a mysterious bug. Split does work. On Windows. I am on Windows. Your code will be wrong. You don't show any. I have asked you to specify 1) this is data in 2) this is how I want it to come out three time now. Which bit is confusing you. You have not. I am tired of wasting my time on you. This works perfectly. Look. Listen. Learn.

      C:\>type test.pl my $line = 'C:\just\work\split\fine'; @data = split /\\/, $line; $new = join "\\", @data[0,3,2,4]; print "\nHad => $line\n", "Got => $new\n\n"; C:\>perl test.pl Had => C:\just\work\split\fine Got => C:\split\work\fine C:\>

      cheers

      tachyon

      s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print