Index: trunk/FACT++/src/Configuration.cc
===================================================================
--- trunk/FACT++/src/Configuration.cc	(revision 19804)
+++ trunk/FACT++/src/Configuration.cc	(revision 19805)
@@ -1558,2 +1558,24 @@
         << std::endl;
 }
+
+// --------------------------------------------------------------------------
+//
+//! Splits a given argument of the form something/somethingelse into its
+//! two parts something and somethingelse and stores it in the pair of
+//! Configuration::Map.
+//!
+std::istream &operator>>(std::istream &in, Configuration::Map &m)
+{
+    const istreambuf_iterator<char> eos;
+    string txt(istreambuf_iterator<char>(in), eos);
+
+    const boost::regex expr("((.*)[^\\\\])/(.*)");
+    boost::smatch match;
+    if (!boost::regex_match(txt, match, expr))
+        throw runtime_error("Could not evaluate map argument: "+txt);
+
+    m.first  = match[1].str();
+    m.second = match[3].str();
+
+    return in;
+}
Index: trunk/FACT++/src/Configuration.h
===================================================================
--- trunk/FACT++/src/Configuration.h	(revision 19804)
+++ trunk/FACT++/src/Configuration.h	(revision 19805)
@@ -80,4 +80,9 @@
 
 public:
+    struct Map : std::pair<std::string, std::string>
+    {
+        Map() { }
+    };
+
     Configuration(const std::string &prgname="");
     virtual ~Configuration() { }
@@ -281,3 +286,6 @@
 { return po::value<bool>()->implicit_value(true)->default_value(def); }
 
+
+std::istream &operator>>(std::istream &in, Configuration::Map &m);
+
 #endif
