2015-07-24 4 views
0

Я пытаюсь разобрать CSV-файл с помощью perl, мне нужно прочитать, добавить новую строку (как в пустой файл, так и в файл, уже содержащий данные) и удалить строку/строки путем сопоставления определенного значения, я хотел сделать это, используя встроенный модуль, который не хочет устанавливать внешний новый модуль.Parsing CSV/текстовый файл с использованием Perl

Раньше я пытался с помощью xml-файла, но для установки XML :: Twig или XML :: LibXML мне не хотелось.

Возможно ли это через csv или текстовый файл.

+2

Любые особые причины, чтобы избежать больших модулей CPAN? –

+0

@MiguelPrz на самом деле сценарий будет использоваться многими пользователями, и они не хотят никакой дополнительной зависимости, поэтому я смотрю на способ, поэтому мне не нужно устанавливать какие-либо модули, если это возможно. – user3649361

+3

Я думаю, что лучше узнать, как распространять свой код с внешними библиотеками как часть вашей установки в Perl. –

ответ

1

Вы должны использовать модуль Text :: CSV. Если вы не хотите его устанавливать, вы остаетесь с разделенным и сложным управлением.

Смотрите этот учебник по Габора: How to read a CSV file using Perl?

+0

спасибо, могу ли я выполнить удаление и обновление без установки Text :: CSV, и если это невозможно, используйте файл .txt без установки какого-либо модуля. – user3649361

0

Вы можете разобрать CSV файл в формате XML без установки нового модуля. Вот так:

use warnings; 
use strict; 
use Data::Dumper; 

my $CSVfile="customer.csv"; 


print "Input Csv file: $CSVfile \n"; 


my ($arrRef,$keys)= convertCsvToHash($CSVfile); 
print Dumper($arrRef); 


sub convertCsvToHash{ 
    my $file = shift; 

    open(FILE, "$file"); 
    my @arr = <FILE>; 
    close(FILE); 

    my @hashArry; 
    chomp($arr[0]); 
    my @keys = split(',',$arr[0]); 

    for my $i(1..$#arr){ 
      chomp($arr[$i]); 
      my @splitRec = split(',',$arr[$i]); 

      my $hash = {}; 
      for my $j(0..$#keys){ 
        $hash->{$keys[$j]} = $splitRec[$j] 
      } 
      push @hashArry,$hash; 
    } 
    return \@hashArry, \@keys; 
} 
+1

Ваша ссылка не работает. И в этом коде нет ничего о XML. –

+0

Ошибка копирования патча, добавлена ​​прямая ссылка, Edit не принимал ссылку с именем – sandeep

+0

@sandeep, вы не получили мой вопрос, я думаю, это не то, что я спросил. – user3649361

Смежные вопросы