Never written a line of Perl until now but I think it might be perfect
for this little program I need.
I have some CSV files that are given to me and I need to spit them in
a format that kind of looks like XML but I don't think it is. The
structure looks something like this:
<ADDRESSES>
<struct>
<field name="First" value="John" />
<field name="Last" value="Doe" />
<field name="City" value="San Francisco" />
</struct><struct>
<field name="First" value="Jane" />
<field name="Last" value="Johnson" />
<field name="City" value="New York City" />
</struct>
</ADDRESSES>
I don't think that's standard XML is it? If so please let me know so I
can change my google searching on the topic.
Anyway, I get CSV's that look something like this:
First,Last,City
John,Doe,San Francisco
Jane,Johnson,New York City
I'm a C/C++ person by nature but I thought this would be a good way to
get my hands in Perl and learn a bit.
Any guidance is helpful. Thanks.
> Never written a line of Perl until now but I think it might be
> perfect for this little program I need.
It looks you are planning to have someone else write the lines of
Perl that might be needed rather than writing them yourself.
> I have some CSV files that are given to me and I need to spit them
> in a format that kind of looks like XML but I don't think it is.
> The structure looks something like this:
>
> <ADDRESSES>
> <struct>
> <field name="First" value="John" />
> <field name="Last" value="Doe" />
> <field name="City" value="San Francisco" />
> </struct><struct>
> <field name="First" value="Jane" />
> <field name="Last" value="Johnson" />
> <field name="City" value="New York City" />
> </struct>
> </ADDRESSES>
>
>
> I don't think that's standard XML is it?
Of course, it is.
> If so please let me know
> so I can change my google searching on the topic.
Why would searching Google be easier than writing the program in the
first place?
>
> Anyway, I get CSV's that look something like this:
>
> First,Last,City
> John,Doe,San Francisco
> Jane,Johnson,New York City
>
> I'm a C/C++ person by nature
No one is a 'C/C++ person' by nature. If you know C, this is trivial
to write. So, first write the program in C, then read
<URL:http://www.ebb.org/PickingUpPerl/>. You can then come back and
ask if you run into any problems.
> but I thought this would be a good
> way to get my hands in Perl and learn a bit.
>
> Any guidance is helpful. Thanks.
OK, here is a part of a fish:
my ($first, $last, $city) = split /,/, $line;
print <<STRUCT;
<struct>
<field name="First" value="$first" />
<field name="Last" value="$last" />
<field name="City" value="$city" />
</struct>
STRUCT
There is also:
http://csv2xml.sourceforge.net/
Sinan
--
A. Sinan Unur <1u...@llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)
comp.lang.perl.misc guidelines on the WWW:
http://www.rehabitation.com/clpmisc/
> Oh also there should be a newline \n between the closing </struct>
> and the next <struct>
I knew I was making a mistake replying. *Sigh*. Just confirmed my
expectations.
lol thanks for the taste. i appreciate it.
The pseudocode for your little problem looks like this:
open infile for reading;
open outfile for writing;
while outfile is open;
read each line;
remove newline character;
split on delimiter into data structure;
join into string representation of output;
print string to your outfile;
close infile;
close outfile;
The functions you will need are open, close, while, chomp, split,
join, print (or printf or sprintf), and possibly some data structure
specific functions depending on your approach. Personally, I would use
an array.
> The
> structure looks something like this:
>
> <ADDRESSES>
> <struct>
> <field name="First" value="John" />
> <field name="Last" value="Doe" />
> <field name="City" value="San Francisco" />
> </struct><struct>
> <field name="First" value="Jane" />
> <field name="Last" value="Johnson" />
> <field name="City" value="New York City" />
> </struct>
> </ADDRESSES>
This is well formed XML. You might want to know what 'well formed'
means.
> I'm a C/C++ person by nature but I thought this would be a good way to
> get my hands in Perl and learn a bit.
Good. As you will discover, Perl is optimized to perform a pretty
narrow range of tasks, but this is an ideal job for Perl. In my job
(database manager) I use Perl for about 80% of everything I do, most
of which is very similar to your problem. I have used C as well, but I
don't get to do much bit twiddling.
CC