--- a/plplot.pd
+++ b/plplot.pd
@@ -500,7 +500,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -533,7 +533,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -551,9 +551,12 @@
 =for usage
 
  Arguments:
- $x  -- 1D PDL with common X axis values, length = N
+ $xs -- 1D PDL with common X axis values, length = N
  $ys -- reference to a list of 1D PDLs with Y-axis values, length = N
         or 2D PDL with N x M elements
+ -- OR --
+ $xs -- reference to a list of 1D PDLs with X-axis values
+ $ys -- reference to a list of 1D PDLs with Y-axis values
  %opts -- Options hash
 
  Supported options:
@@ -567,7 +570,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -585,12 +588,34 @@
                            PLOTTYPE => 'LINE', TITLE => 'functions',
                            YLAB     => ['x**2', 'sqrt(x)', 'x**3', 'sin(x/20*2pi)'],
                            COLOR    => ['GREEN', 'DEEPSKYBLUE', 'DARKORCHID1', 'DEEPPINK'], XLAB => 'X label');
-  In addition, COLOR may be specified as a reference to a list of colors.  If
-  this is done, the colors are applied separately to each plot.
-
-  Also, the options Y_BASE and Y_GUTTER can be specified.  Y_BASE gives the Y offset
-  of the bottom of the lowest plot (0-1, specified like a VIEWPORT, defaults to 0.1) and Y_GUTTER
-  gives the gap between the graphs (0-1, default = 0.02).
+  
+  # Here's something a bit different. Notice that different xs have
+  # different lengths.
+  $x1  = sequence(20);
+  $y1  = $x1**2;
+  
+  $x2  = sequence(18);
+  $y2  = sqrt($x2);
+  
+  $x3  = sequence(24);
+  $y3  = $x3**3;
+  
+  my $x4  = sequence(27);
+  $a  = ($x4/20) * 2 * $pi;
+  my $y4  = sin($a);
+  
+  $xs  = [$x1, $x2, $x3, $x4];
+  $ys  = [$y1, $y2, $y3, $y4];
+  $pl->stripplots($xs, $ys, PLOTTYPE => 'LINE', TITLE => 'functions',
+                YLAB => ['x**2', 'sqrt(x)', 'x**3', 'sin(x/20*2pi)'],
+                         COLOR => ['GREEN', 'DEEPSKYBLUE', 'DARKORCHID1', 'DEEPPINK'], XLAB => 'X label');
+
+In addition, COLOR may be specified as a reference to a list of colors.  If
+this is done, the colors are applied separately to each plot.
+
+Also, the options Y_BASE and Y_GUTTER can be specified.  Y_BASE gives the Y offset
+of the bottom of the lowest plot (0-1, specified like a VIEWPORT, defaults to 0.1) and Y_GUTTER
+gives the gap between the graphs (0-1, default = 0.02).
 
 =head2 colorkey
 
@@ -615,7 +640,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -650,7 +675,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -682,7 +707,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -716,7 +741,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -760,7 +785,7 @@
  PAGESIZE
  SUBPAGES
 
- (These must be set in call to 'new'.)
+(These must be set in call to 'new'.)
 
 =for example
 
@@ -1488,7 +1513,7 @@
 
 # Handle sets of 2D strip plots sharing one X axis.  Input is
 # $self -- PLplot object with existing options
-# $xs   -- 1D PDL with X values
+# $xs   -- Ref to list of 1D PDLs with X values
 # $ys   -- Ref to list of 1D PDLs with Y values
 #          or a 2D PDL
 # %opts -- Options values
@@ -1526,13 +1551,14 @@
     barf("stripplots requires that its second argument be either a 2D piddle or\na reference to a list of 1D piddles, but you provided neither.");
   }
 
-  # Let's be sure the user sent us what we expected:
-  foreach @$ys {
-    barf ("stripplots needs to have piddles for its y arguments!")
-      unles (ref !~ /PDL/);
-    barf("stripplots requires that the x and y dimensions agree!")
-      unless ($_->nelem == $xs->nelem);
-  }
+# This doesn't work because $xs can be an anonymous array, too
+#  # Let's be sure the user sent us what we expected:
+#  foreach (@$ys) {
+#    barf ("stripplots needs to have piddles for its y arguments!")
+#      unless (ref =~ /PDL/);
+#    barf("stripplots requires that the x and y dimensions agree!")
+#      unless ($_->nelem == $xs->nelem);
+#  }
 
   my $nplots = @$ys;
 
@@ -1549,14 +1575,20 @@
   # apply options
   $self->setparm(%opts);
 
-  my $xmin = pdl(map { $_->min } @$xs)->min;
-  my $xmax = pdl(map { $_->max } @$xs)->max;
+  my ($xmin, $xmax);
+  if (ref $xs =~ /PDL/) {
+    ($xmin, $xmax) = $xs->minmax;
+  }
+  else {
+    $xmin = pdl(map { $_->min } @$xs)->min;
+    $xmax = pdl(map { $_->max } @$xs)->max;
+  }
 
   SUBPAGE:
     for (my $subpage=0;$subpage<$nplots;$subpage++) {
 
       my $y = $ys->[$subpage];
-      my $x = $xs->[$subpage];
+      my $x = ref $xs =~ /PDL/ ? $xs : $xs->[$subpage];
       my $mask = $y->isgood;
       $y = $y->where($mask);
       $x = $x->where($mask);