Erstens gibt es ein paar CSV-Module, die Sie verwenden können, um dies leicht zu erreichen, aber in einigen Fällen weiß ich, dass Menschen keinen Zugriff auf Pakete haben oder keine installieren können. Daher sollte dies helfen, wenn dies der Fall ist.
Wenn ich Sie richtig verstehe, versuchen Sie Felder aus CSV zu schreiben, die Kommas enthalten. Wenn dies der Fall ist, sollten diese eingebetteten Kommafelder Klammern oder Anführungszeichen haben, um sicherzustellen, dass sie nicht gesehen werden als CSA-Felder mit Trennzeichen. Wir können dann einfach alle Daten in Ihrer CSV-Datei erfassen. In diesem Fall werden wir eine csv, die Klammern verwendet, Zitate und beiden Daten anzuzeigen, die eingebetteten Kommas verwendet:
Diese das CSV Komma zeigen:
"Potatoes 1,000", (Tomatoes, 200), "(GemSquash, 1,029.95)"
^ ^
Diese sind eingebettet Komma:
"Potatoes 1,000", (Tomatoes, 200), "(GemSquash, 1,029.95)"
^ ^ ^^
Also die unten suchen und ersetzen die Daten mit den Klammern und die Anführungszeichen, um zu bestimmen, welche csv Kommas und die eingebettet sind.
use strict;
use warnings;
my $string = '(Potatoes 1,000), "Tomatoes, 200", "(GemSquash, 1,029.95)"';
my $query = qr/(?: "\(([^()""]*) \)" | \(([^()]*) \) | " ([^"]*) " | ([^,]*)) , \s* /x;
my @results = grep defined, "$string," =~ /$query/g;
print "$_\n" for @results;
ERGEBNISSE
Potatoes 1,000
Tomatoes, 200
GemSquash, 1,029.95
Meine Ausgabe wie folgt aussieht ... "Total Farm wert- Kartoffeln (Dollar x 1000)" – kathleen
Ich bin nicht vollständig mit Ihrer Frage. Sie entfernen das Komma, möchten es aber wieder zurückstellen? –
Haben Sie bei der Verwendung von Join nachgesehen? 'perldoc join' –