in reply to Re: select elements in a list
in thread select elements in a list

This node falls below the community's threshold of quality. You may see it by logging in.

Replies are listed 'Best First'.
Re^3: select elements in a list
by dogz007 (Scribe) on Aug 06, 2007 at 15:57 UTC
    When written as below, your method indeed does work.

    while (<DATA>){ my @Elements = split(/;/,$_); if ($Elements[1] ne ' '){ print $_; } } __DATA__ AAD; ;CCR;365 TEC;UTF;TDE;450 TRE; ;FTE;164 TEC;URT;TDE;687 ERT; ;ETR;567 TEC;UGC;TDE;687

    Prints:

    TEC;UTF;TDE;450 TEC;URT;TDE;687 TEC;UGC;TDE;687

    This of course prints to STDOUT. However, its success suggests that you have improperly opened INFILE and OUTFILE for reading and writing respectively. Check your open syntax against the perlfunc manpage, or online here.

    Update: As another added thought, if your open syntax is correct, perhaps you do not have the proper file access privileges?


      Sorry Dear Monks,

      I have just discovered my mistake

      It was because I had looked at the data in the excel file (as they were initally were, instead of looking at them in the wordpad format)

      What I gave you as input file was what I copied / pasted from the data opened in excel

      But when I opened in wordpad, the data were inside ""

      Instead of that :
      AAD; ;CCR;365 TEC;UTF;TDE;450 TRE; ;FTE;164 TEC;URT;TDE;687 ERT; ;ETR;567 TEC;UGC;TDE;687

      what was in reality was
      "AAD";" ";"CCR";365 "TEC";"UTF";"TDE";450 "TRE";" ";"FTE";164 "TEC";"URT";"TDE";687 "ERT";" ";"ETR";567 "TEC";"UGC";"TDE";687

      So I have modified my code :
      while (<INFILE>){ # the /^ indicates the begining of the research for $_ ($_ is unde +rstated here) my @Elements = split(/;/,$_); if ($Elements[1] ne '""'){ print OUTFILE $_; } }
Re^3: select elements in a list
by graff (Chancellor) on Aug 06, 2007 at 22:38 UTC
    Contrary to what everyone has been assuming, it's possible that your input file never contains three spaces in the second field -- maybe there's a single tab character in that position, and it just looks like three spaces.

    So try it like this (similar to what was suggested in a later reply below):

    while (<INFILE>) { my @Elements = split(/;/,$_); if ($Elements[1] =~ /\S/){ # if second arg contains non-whitespac +e print OUTFILE; # ("$_" is implied here) } }
Re^3: select elements in a list
by toolic (Bishop) on Aug 06, 2007 at 15:57 UTC
    Can you be more specific as to why you do not think your solution works? When I run your code, it creates an output file with the following contents:
    TEC;UTF;TDE;450 TEC;URT;TDE;687 TEC;UGC;TDE;687
    What do you expect your output file to contain?