SAP has an "easy" to use tool called the Business Connector for querying your SAP system. You throw some XML at a URL, it does Java-ish things to poke and prod SAP, and gives you XML back. It - correctly - dies if you give it bad XML. Unfortunately, it returns broken XML itself. So I use a little shell script to fetch the data and clean it with perl. I use perl instead of sed because I also need to do a few other transformations on the data for which my sed-fu is not strong enough:
if test `curl -s -w %{http_code} -u $SAP_USER:$SAP_PASS -d $BC_XMLDAT
+A -o $TEMPFILE $BC_URL` == 200 ; then
echo Successfully retrieved data, now correcting it
(cat $TEMPFILE && echo -n '</xml>') |
perl -pne '
s/&/&/g;
# and a few other corrections
' > corrected.xml
else
echo Error fetching data from Business Connector
exit 1
fi
In the long term I want to switch to using
sap::rfc so I don't have to do this - and hopefully avoid all that XML nastiness.
Now I'll admit that the perl involved is utterly trivial, but I think this demonstrates just how good a "glue" perl can be for sticking other languages and software packages together. The shell script above is in fact embedded in a Makefile, and the resulting XML file is later munged with more perl.
NB, the perl code here originates with a colleague; the shell and make wrapper is mine.