You will need to show us some of the data you are parsing and what you hope to get out. Your use of substr makes very little sense. Here is some code that compiles for a start as uses an array for the fields as well as the ever faithful join. Note how we use $infile and $outfile so we can include them in our error messages easily.....

#!/usr/bin/perl -w use strict; my $infile = 'c:/doclist.chr'; my $outfile = 'c:/doclist.txt'; open IN, "<$infile" or die "Couldn't open $infile, $!"; open OUT,">$outfile" or die "Couldn't open $outfile, $!"; while(<IN>) { chomp; my @fields = split /,/; my $string1 = $fields[6]; do { warn "Empty field 7"; next } unless $string1; # this will keep the first 24 chars of string, throw out the rest a +nd # then append H:\ to it. # need \\ here or it won't compile substr($string1, 24) = "H:\\"; # this will return :\ as we get 2 chars LEN from pos 25 my $string2 = substr($string1,25,2); # this will set $string3 to the last 13 chars of the string my $string3 = substr($string1,-13); my $finstring = $string1.$string2.$string3; my $out = join '|', @fields[0..5], $finstring, "\n"; print OUT $out; } __DATA__ substr EXPR,OFFSET,LEN,REPLACEMENT substr EXPR,OFFSET,LEN substr EXPR,OFFSET Extracts a substring out of EXPR and returns it. First character is at + offset 0, or whatever you've set $[ to (but don't do that). If OFFSET is negativ +e (or more precisely, less than $[), starts that far from the end of the + string. If LEN is omitted, returns everything to the end of the string. If LEN + is negative, leaves that many characters off the end of the string. If you specify a substring that is partly outside the string, the part within the string is returned. If the substring is totally ou +tside the string a warning is produced. You can use the substr() function as an lvalue, in which case EXPR mus +t itself be an lvalue. If you assign something shorter than LEN, the string wil +l shrink, and if you assign something longer than LEN, the string will grow to a +ccommodate it. To keep the string the same length you may need to pad or chop you +r value using sprintf(). An alternative to using substr() as an lvalue is to specify the replac +ement string as the 4th argument. This allows you to replace parts of the EX +PR and return what was there before in one operation, just as you can with sp +lice().

cheers

tachyon

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


In reply to Re: Open file & Strip comma delimiter by tachyon
in thread Open file & Strip comma delimiter by skyler

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.