Zoom/scale perspective camera viewport

I want to be able to zoom in the camera without actually changing the perspective of the scene. The effect would be similar to zooming in on an 2D image, things gets larger but the perspective remains unchanged. With an orthographic camera I simply scale the size of the viewport, is there a similar way to do this with an perspective camera?

Found a solution here: Unity - Scripting API: Camera.projectionMatrix

        private Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far)
        {
            var x = (2.0f * near) / (right - left);
            var y = (2.0f * near) / (top - bottom);
            var a = (right + left) / (right - left);
            var b = (top + bottom) / (top - bottom);
            var c = -(far + near) / (far - near);
            var d = -(2.0f * far * near) / (far - near);
            var e = -1.0f;

            var m = new Matrix4x4();
            m[0, 0] = x; m[0, 1] = 0.0f; m[0, 2] = a; m[0, 3] = 0.0f;
            m[1, 0] = 0.0f; m[1, 1] = y; m[1, 2] = b; m[1, 3] = 0.0f;
            m[2, 0] = 0.0f; m[2, 1] = 0.0f; m[2, 2] = c; m[2, 3] = d;
            m[3, 0] = 0.0f; m[3, 1] = 0.0f; m[3, 2] = e; m[3, 3] = 0.0f;
            return m;
        }

You simply multiply left, right, bottom and top by a scale factor to change the size of the viewport.