Does anybody here know the difference between MARC21 and USMARC?

I am munging sets of MARC bibliographic data from a III catalog with
holdings data from the same. I am using MARC::Batch to read my bib' data
(with both strict and warnings turned off), insert 853 and 863 fields, and
writing the data using the as_usmarc method. Therefore, I think I am
creating USMARC files. I can then use marcdump to... dump the records. It
returns 0 errors.

We are then attempting to feed these files to Ex Libris's Primo but it
chokes on my data with the following error complete with spelling mistakes:

  2009-01-21 16:47:33,369 ERROR [t-SplitRecords] [c-RecordSplitter]
  - An exception occured while splitting record. error message is
  Content is not allowed in prolog.

Apparently we need to tell Primo that my data is one of the following

  MARC Exchange

In what way is USMARC different from any of the formats above, and is it
possible to use the MARC::Record family of modules to write flavors of MARC
other than USMARC.

(Alternatively, maybe instead I need to turn strict and warning on and
filter out any bad records. Hmmm... )

Eric Lease Morgan
University of Notre Dame