diff --git a/lib/modules/manager/cpanfile/extract.spec.ts b/lib/modules/manager/cpanfile/extract.spec.ts
index 5235cf3a594f9522328fbbadb720c12e44e8e77a..29d0042c3bdcd50d34354be8346ce9b8dc159b30 100644
--- a/lib/modules/manager/cpanfile/extract.spec.ts
+++ b/lib/modules/manager/cpanfile/extract.spec.ts
@@ -44,6 +44,13 @@ describe('modules/manager/cpanfile/extract', () => {
             requires 'URI', '1.59';
             requires 'HTTP::Tiny', 0.034;
             requires "Capture::Tiny" => "0";
+
+            requires 'A', '== 1.1';
+            requires 'AA', '== v1.1';
+            requires 'B', '>= 1.2';
+            requires 'BB', '>= v1.2';
+            requires 'C', '> 1.3';
+            requires 'CC', '> v1.3';
           `,
           'cpanfile'
         )
@@ -69,6 +76,36 @@ describe('modules/manager/cpanfile/extract', () => {
             depName: 'Capture::Tiny',
             currentValue: '0',
           },
+          {
+            datasource: 'cpan',
+            depName: 'A',
+            currentValue: '1.1',
+          },
+          {
+            datasource: 'cpan',
+            depName: 'AA',
+            currentValue: '1.1',
+          },
+          {
+            datasource: 'cpan',
+            depName: 'B',
+            currentValue: '1.2',
+          },
+          {
+            datasource: 'cpan',
+            depName: 'BB',
+            currentValue: '1.2',
+          },
+          {
+            datasource: 'cpan',
+            depName: 'C',
+            currentValue: '1.3',
+          },
+          {
+            datasource: 'cpan',
+            depName: 'CC',
+            currentValue: '1.3',
+          },
         ],
       });
     });
diff --git a/lib/modules/manager/cpanfile/parser.ts b/lib/modules/manager/cpanfile/parser.ts
index da9014421700a7455a8972e7b7fc55dc78d1d00e..cf2286eaa79b82e5945d331b76b972ee0dc59be4 100644
--- a/lib/modules/manager/cpanfile/parser.ts
+++ b/lib/modules/manager/cpanfile/parser.ts
@@ -69,7 +69,7 @@ const moduleMatch = q
     q.alt<Ctx>(q.op(','), q.op('=>')).alt(
       q.num<Ctx>((ctx, { value: currentValue }) => ({ ...ctx, currentValue })),
       q.str<Ctx>((ctx, { value }) => {
-        const currentValue = value.replace(/^(?:\s*(?:==|>=|>))?\s*v/, '');
+        const currentValue = value.replace(/^(?:\s*(?:==|>=|>))?\s*v?/, '');
         return { ...ctx, currentValue };
       })
     )