This example will transform a vector dataset from spatial reference system EPSG 2392 to EPSG 2393. The geometries are translated by (dx, dy) = (2500000, 6600000) before applying the transformation.
use Geo::GDAL; $dsname = shift @ARGV; $lname = shift @ARGV; $datasource = Geo::OGR::Open($dsname) or die; $layer1 = $datasource->Layer($lname) or die; $sr1 = Geo::OSR::SpatialReference->create(EPSG => 2392); $dsname = shift @ARGV; $lname = shift @ARGV; $datasource = Geo::OGR::Driver('ESRI Shapefile')->Create($dsname) or die; $sr2 = Geo::OSR::SpatialReference->create(EPSG => 2393); $layer2 = $datasource->CreateLayer ({ Name => $lname, SRS => $sr2, GeometryType => $layer1->GetLayerDefn->GeometryType}); $layer2->Schema( $layer1->Schema ); $tr = Geo::OSR::CoordinateTransformation->new($sr1, $sr2) or die; $layer1->ResetReading(); while ($feature = $layer1->GetNextFeature()) { my $geom = $feature->GetGeometry(); $geom->Move(2500000, 6600000); $geom->Transform($tr); $layer2->InsertFeature($feature); }