2016-01-21 5 views
-3

У меня есть входной файл csv в Perl, который разделен на вкладку. Я хотел бы добавить чек, если он найдет что-либо иное, чем tab, как разделитель полей, а затем он должен получить сообщение об ошибке. Я новичок в perl. Я не знаю, как проверить.Что касается проверки разделителя входных файлов в Perl

Пример моего входного файла, мой файл, имеющий только два поля:

10001027^I1000102713921-1274^M$ 
10010121^I1001012113921-1234^M$ 
10000104^I10010126139211-9999^M$ 
10010119^I10010126139211-9999^M$ 
+3

Как вы можете сказать, если что-то другое, чем вкладка является разделителем поля? – ikegami

+0

Я согласен с ikegami - пожалуйста, определите, какие недопустимые разделители полей. После того, как они определены, вы можете выполнить поиск файла, чтобы убедиться, что эти неприемлемые разделители полей не существуют. – tale852150

+0

точка с запятой (;), запятая (,) – puspa

ответ

0

Простой способ проверки файла будет проверить, что каждая строка была одна вкладка.

while (my $line = <$file>) 
{ 
    if ($line !~ /^[^\t]+\t[^\t]+$/) 
    { 
     #Handle malformed line. 
    } 
} 

Если вы планируете разбить строку на элементы в любом случае, вы могли бы использовать выход разделенного для проверки ошибок:

while (my $line = <$file>) 
{ 
    my @fields = split "\t", $line; 

    if (@fields != 2) 
    { 
     #Line did not split into two elements, indicating improperly formed line. 
    } 
} 
+0

Спасибо большое.if ($ line! ~/^ [^ \ T] + \ t [^ \ t] + $ /) это работает ... Но у меня есть еще одна проблема , Если у меня больше одной вкладки означает количество терки поля, чем 2, я должен отображать сообщение об ошибке с неправильным числом полей. Поскольку я проверяю одну вкладку, она не удовлетворяет моей части, когда я пытаюсь показать число полей больше чем 2. Если я даю условие, если мой массив содержит меньше двух полей, тогда он должен выполнить всю проверку для поля else, должен отображать неправильное число полей – puspa

+0

@puspa, указанное выше регулярное выражение совпадает только в том случае, если в строке имеется ровно одна вкладка *, поэтому он должен также охватывать этот случай. –

+0

Пожалуйста, дайте мне знать, если нет разделителя полей, чем одна вкладка, тогда я должен отобразить сообщение об ошибке в правильном количестве полей. – puspa

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

  • Нет связанных вопросов^_^